@ng-matero/extensions 17.3.3 → 17.3.4

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.
@@ -21,9 +21,10 @@ import { MtxDialogModule } from '@ng-matero/extensions/dialog';
21
21
  import { MtxGridCell } from './cell';
22
22
  import { MtxGridColumnMenu } from './column-menu';
23
23
  import { MtxGridExpansionToggle } from './expansion-toggle';
24
- import { MtxGrid, MtxGridSelectableCell } from './grid';
24
+ import { MtxGrid } from './grid';
25
25
  import { MtxGridCellActionBadgePipe, MtxGridCellActionDisablePipe, MtxGridCellActionTooltipPipe, MtxGridCellActionsPipe, MtxGridCellSummaryPipe, MtxGridColClassPipe, MtxGridRowClassPipe, } from './grid-pipes';
26
26
  import { MtxGridUtils } from './grid-utils';
27
+ import { MtxGridSelectableCell } from './selectable-cell';
27
28
  import * as i0 from "@angular/core";
28
29
  export class MtxGridModule {
29
30
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: MtxGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -147,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
147
148
  providers: [MtxGridUtils],
148
149
  }]
149
150
  }] });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFB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QUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQiw0QkFBNEI7d0JBQzVCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdENvbHVtblJlc2l6ZU1vZHVsZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLW1vZHVsZSc7XG5cbmltcG9ydCB7IE10eFBpcGVzTW9kdWxlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2NvcmUnO1xuaW1wb3J0IHsgTXR4RGlhbG9nTW9kdWxlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2RpYWxvZyc7XG5pbXBvcnQgeyBNdHhHcmlkQ2VsbCB9IGZyb20gJy4vY2VsbCc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uTWVudSB9IGZyb20gJy4vY29sdW1uLW1lbnUnO1xuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNdHhHcmlkLCBNdHhHcmlkU2VsZWN0YWJsZUNlbGwgfSBmcm9tICcuL2dyaWQnO1xuaW1wb3J0IHtcbiAgTXR4R3JpZENlbGxBY3Rpb25CYWRnZVBpcGUsXG4gIE10eEdyaWRDZWxsQWN0aW9uRGlzYWJsZVBpcGUsXG4gIE10eEdyaWRDZWxsQWN0aW9uVG9vbHRpcFBpcGUsXG4gIE10eEdyaWRDZWxsQWN0aW9uc1BpcGUsXG4gIE10eEdyaWRDZWxsU3VtbWFyeVBpcGUsXG4gIE10eEdyaWRDb2xDbGFzc1BpcGUsXG4gIE10eEdyaWRSb3dDbGFzc1BpcGUsXG59IGZyb20gJy4vZ3JpZC1waXBlcyc7XG5pbXBvcnQgeyBNdHhHcmlkVXRpbHMgfSBmcm9tICcuL2dyaWQtdXRpbHMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIE10eERpYWxvZ01vZHVsZSxcbiAgICBNdHhQaXBlc01vZHVsZSxcbiAgICBNYXRDb2x1bW5SZXNpemVNb2R1bGUsXG4gICAgTXR4R3JpZCxcbiAgICBNdHhHcmlkQ2VsbCxcbiAgICBNdHhHcmlkQ29sdW1uTWVudSxcbiAgICBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlLFxuICAgIE10eEdyaWRTZWxlY3RhYmxlQ2VsbCxcbiAgICBNdHhHcmlkUm93Q2xhc3NQaXBlLFxuICAgIE10eEdyaWRDb2xDbGFzc1BpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25zUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvblRvb2x0aXBQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uQmFkZ2VQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uRGlzYWJsZVBpcGUsXG4gICAgTXR4R3JpZENlbGxTdW1tYXJ5UGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE1hdENvbHVtblJlc2l6ZU1vZHVsZSxcbiAgICBNdHhHcmlkLFxuICAgIE10eEdyaWRDZWxsLFxuICAgIE10eEdyaWRDb2x1bW5NZW51LFxuICAgIE10eEdyaWRFeHBhbnNpb25Ub2dnbGUsXG4gICAgTXR4R3JpZFNlbGVjdGFibGVDZWxsLFxuICAgIE10eEdyaWRSb3dDbGFzc1BpcGUsXG4gICAgTXR4R3JpZENvbENsYXNzUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvbnNQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uVG9vbHRpcFBpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25CYWRnZVBpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25EaXNhYmxlUGlwZSxcbiAgICBNdHhHcmlkQ2VsbFN1bW1hcnlQaXBlLFxuICBdLFxuICBwcm92aWRlcnM6IFtNdHhHcmlkVXRpbHNdLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkTW9kdWxlIHt9XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFB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O3dCQUNQLHFCQUFxQjt3QkFDckIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQiw0QkFBNEI7d0JBQzVCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdENvbHVtblJlc2l6ZU1vZHVsZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLW1vZHVsZSc7XG5cbmltcG9ydCB7IE10eFBpcGVzTW9kdWxlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2NvcmUnO1xuaW1wb3J0IHsgTXR4RGlhbG9nTW9kdWxlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2RpYWxvZyc7XG5pbXBvcnQgeyBNdHhHcmlkQ2VsbCB9IGZyb20gJy4vY2VsbCc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uTWVudSB9IGZyb20gJy4vY29sdW1uLW1lbnUnO1xuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNdHhHcmlkIH0gZnJvbSAnLi9ncmlkJztcbmltcG9ydCB7XG4gIE10eEdyaWRDZWxsQWN0aW9uQmFkZ2VQaXBlLFxuICBNdHhHcmlkQ2VsbEFjdGlvbkRpc2FibGVQaXBlLFxuICBNdHhHcmlkQ2VsbEFjdGlvblRvb2x0aXBQaXBlLFxuICBNdHhHcmlkQ2VsbEFjdGlvbnNQaXBlLFxuICBNdHhHcmlkQ2VsbFN1bW1hcnlQaXBlLFxuICBNdHhHcmlkQ29sQ2xhc3NQaXBlLFxuICBNdHhHcmlkUm93Q2xhc3NQaXBlLFxufSBmcm9tICcuL2dyaWQtcGlwZXMnO1xuaW1wb3J0IHsgTXR4R3JpZFV0aWxzIH0gZnJvbSAnLi9ncmlkLXV0aWxzJztcbmltcG9ydCB7IE10eEdyaWRTZWxlY3RhYmxlQ2VsbCB9IGZyb20gJy4vc2VsZWN0YWJsZS1jZWxsJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRCYWRnZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBNdHhEaWFsb2dNb2R1bGUsXG4gICAgTXR4UGlwZXNNb2R1bGUsXG4gICAgTWF0Q29sdW1uUmVzaXplTW9kdWxlLFxuICAgIE10eEdyaWQsXG4gICAgTXR4R3JpZENlbGwsXG4gICAgTXR4R3JpZENvbHVtbk1lbnUsXG4gICAgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZSxcbiAgICBNdHhHcmlkU2VsZWN0YWJsZUNlbGwsXG4gICAgTXR4R3JpZFJvd0NsYXNzUGlwZSxcbiAgICBNdHhHcmlkQ29sQ2xhc3NQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uc1BpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25Ub29sdGlwUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvbkJhZGdlUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvbkRpc2FibGVQaXBlLFxuICAgIE10eEdyaWRDZWxsU3VtbWFyeVBpcGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNYXRDb2x1bW5SZXNpemVNb2R1bGUsXG4gICAgTXR4R3JpZCxcbiAgICBNdHhHcmlkQ2VsbCxcbiAgICBNdHhHcmlkQ29sdW1uTWVudSxcbiAgICBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlLFxuICAgIE10eEdyaWRTZWxlY3RhYmxlQ2VsbCxcbiAgICBNdHhHcmlkUm93Q2xhc3NQaXBlLFxuICAgIE10eEdyaWRDb2xDbGFzc1BpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25zUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvblRvb2x0aXBQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uQmFkZ2VQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uRGlzYWJsZVBpcGUsXG4gICAgTXR4R3JpZENlbGxTdW1tYXJ5UGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTXR4R3JpZFV0aWxzXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZE1vZHVsZSB7fVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { animate, state, style, transition, trigger } from '@angular/animations';
2
2
  import { SelectionModel } from '@angular/cdk/collections';
3
3
  import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
4
- import { ChangeDetectionStrategy, Component, ContentChildren, Directive, EventEmitter, HostBinding, HostListener, Inject, InjectionToken, Input, Optional, Output, ViewChild, ViewEncapsulation, booleanAttribute, } from '@angular/core';
4
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, InjectionToken, Input, Optional, Output, ViewChild, ViewEncapsulation, booleanAttribute, } from '@angular/core';
5
5
  import { MatIconButton } from '@angular/material/button';
6
6
  import { MatCheckbox } from '@angular/material/checkbox';
7
7
  import { MatPaginator } from '@angular/material/paginator';
@@ -14,60 +14,11 @@ import { MtxGridColumnMenu } from './column-menu';
14
14
  import { MatColumnResize, MatResizable } from './column-resize';
15
15
  import { MtxGridExpansionToggle } from './expansion-toggle';
16
16
  import { MtxGridColClassPipe, MtxGridRowClassPipe } from './grid-pipes';
17
+ import { MtxGridSelectableCell } from './selectable-cell';
17
18
  import * as i0 from "@angular/core";
18
19
  import * as i1 from "./grid-utils";
19
20
  /** Injection token that can be used to specify default grid options. */
20
21
  export const MTX_GRID_DEFAULT_OPTIONS = new InjectionToken('mtx-grid-default-options');
21
- export class MtxGridSelectableCell {
22
- constructor() {
23
- this.ctrlKeyPressed = false;
24
- this.shiftKeyPressed = false;
25
- this._selected = false;
26
- this.cellSelectable = true;
27
- this.cellSelectedChange = new EventEmitter();
28
- }
29
- get selected() {
30
- return this._selected;
31
- }
32
- onClick(event) {
33
- this.ctrlKeyPressed = event.ctrlKey;
34
- this.shiftKeyPressed = event.shiftKey;
35
- if (this.cellSelectable) {
36
- this.select();
37
- }
38
- }
39
- select() {
40
- this._selected = true;
41
- this.cellSelectedChange.emit(this);
42
- }
43
- deselect() {
44
- this._selected = false;
45
- this.cellSelectedChange.emit(this);
46
- }
47
- toggle() {
48
- this._selected = !this._selected;
49
- this.cellSelectedChange.emit(this);
50
- }
51
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: MtxGridSelectableCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: MtxGridSelectableCell, isStandalone: true, selector: "[mtx-grid-selectable-cell]", inputs: { cellSelectable: "cellSelectable" }, outputs: { cellSelectedChange: "cellSelectedChange" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.selected": "this.selected" } }, ngImport: i0 }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: MtxGridSelectableCell, decorators: [{
55
- type: Directive,
56
- args: [{
57
- selector: '[mtx-grid-selectable-cell]',
58
- standalone: true,
59
- }]
60
- }], propDecorators: { selected: [{
61
- type: HostBinding,
62
- args: ['class.selected']
63
- }], cellSelectable: [{
64
- type: Input
65
- }], cellSelectedChange: [{
66
- type: Output
67
- }], onClick: [{
68
- type: HostListener,
69
- args: ['click', ['$event']]
70
- }] } });
71
22
  export class MtxGrid {
72
23
  get _hasNoResult() {
73
24
  return (!this.dataSource.data || this.dataSource.data.length === 0) && !this.loading;
@@ -690,4 +641,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
690
641
  }], statusbarTemplate: [{
691
642
  type: Input
692
643
  }] } });
693
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9ncmlkLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2dyaWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGVBQWUs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O3NCQUE1RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVFLDJCQUEyQjtzQkFBbEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFRSwyQkFBMkI7c0JBQWxFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS0UsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFN0IsZUFBZTtzQkFBdkIsS0FBSztnQkFVa0MsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFN0IsZUFBZTtzQkFBdkIsS0FBSztnQkFLa0MsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFN0IsaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBLZXlWYWx1ZUNoYW5nZVJlY29yZCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0SGVhZGVyLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge1xuICBNYXRDZWxsLFxuICBNYXRDZWxsRGVmLFxuICBNYXRDb2x1bW5EZWYsXG4gIE1hdEZvb3RlckNlbGwsXG4gIE1hdEZvb3RlckNlbGxEZWYsXG4gIE1hdEZvb3RlclJvdyxcbiAgTWF0Rm9vdGVyUm93RGVmLFxuICBNYXRIZWFkZXJDZWxsLFxuICBNYXRIZWFkZXJDZWxsRGVmLFxuICBNYXRIZWFkZXJSb3csXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93LFxuICBNYXRSb3dEZWYsXG4gIE1hdFRhYmxlLFxuICBNYXRUYWJsZURhdGFTb3VyY2UsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcblxuaW1wb3J0IHsgTXR4SXNUZW1wbGF0ZVJlZlBpcGUsIE10eFRvT2JzZXJ2YWJsZVBpcGUgfSBmcm9tICdAbmctbWF0ZXJvL2V4dGVuc2lvbnMvY29yZSc7XG5pbXBvcnQgeyBNdHhHcmlkQ2VsbCB9IGZyb20gJy4vY2VsbCc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uTWVudSB9IGZyb20gJy4vY29sdW1uLW1lbnUnO1xuaW1wb3J0IHsgTWF0Q29sdW1uUmVzaXplLCBNYXRSZXNpemFibGUgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUnO1xuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sQ2xhc3NQaXBlLCBNdHhHcmlkUm93Q2xhc3NQaXBlIH0gZnJvbSAnLi9ncmlkLXBpcGVzJztcbmltcG9ydCB7IE10eEdyaWRVdGlscyB9IGZyb20gJy4vZ3JpZC11dGlscyc7XG5pbXBvcnQge1xuICBNdHhHcmlkQnV0dG9uVHlwZSxcbiAgTXR4R3JpZENlbGxUZW1wbGF0ZSxcbiAgTXR4R3JpZENvbHVtbixcbiAgTXR4R3JpZENvbHVtblBpbk9wdGlvbixcbiAgTXR4R3JpZERlZmF1bHRPcHRpb25zLFxuICBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXIsXG4gIE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgZ3JpZCBvcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9HUklEX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNdHhHcmlkRGVmYXVsdE9wdGlvbnM+KFxuICAnbXR4LWdyaWQtZGVmYXVsdC1vcHRpb25zJ1xuKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW210eC1ncmlkLXNlbGVjdGFibGUtY2VsbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkU2VsZWN0YWJsZUNlbGwge1xuICBjdHJsS2V5UHJlc3NlZCA9IGZhbHNlO1xuICBzaGlmdEtleVByZXNzZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJylcbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNlbGxTZWxlY3RhYmxlID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgY2VsbFNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkU2VsZWN0YWJsZUNlbGw+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdHJsS2V5UHJlc3NlZCA9IGV2ZW50LmN0cmxLZXk7XG4gICAgdGhpcy5zaGlmdEtleVByZXNzZWQgPSBldmVudC5zaGlmdEtleTtcblxuICAgIGlmICh0aGlzLmNlbGxTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5jZWxsU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIGRlc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5jZWxsU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9ICF0aGlzLl9zZWxlY3RlZDtcbiAgICB0aGlzLmNlbGxTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1ncmlkJyxcbiAgZXhwb3J0QXM6ICdtdHhHcmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ncmlkLnNjc3MnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtdHgtZ3JpZCcsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZXhwYW5zaW9uJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCwgdm9pZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMCcsIG1pbkhlaWdodDogJzAnLCB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9KSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiB2b2lkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0UHJvZ3Jlc3NCYXIsXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBNYXRDaGVja2JveCxcbiAgICBNYXRUYWJsZSxcbiAgICBNYXRDb2x1bW5EZWYsXG4gICAgTWF0SGVhZGVyUm93RGVmLFxuICAgIE1hdEhlYWRlclJvdyxcbiAgICBNYXRSb3dEZWYsXG4gICAgTWF0Um93LFxuICAgIE1hdEZvb3RlclJvd0RlZixcbiAgICBNYXRGb290ZXJSb3csXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcbiAgICBNYXRIZWFkZXJDZWxsLFxuICAgIE1hdENlbGxEZWYsXG4gICAgTWF0Q2VsbCxcbiAgICBNYXRGb290ZXJDZWxsRGVmLFxuICAgIE1hdEZvb3RlckNlbGwsXG4gICAgTWF0U29ydCxcbiAgICBNYXRTb3J0SGVhZGVyLFxuICAgIE1hdFBhZ2luYXRvcixcbiAgICBNYXRSZXNpemFibGUsXG4gICAgTWF0Q29sdW1uUmVzaXplLFxuICAgIE10eEdyaWRDZWxsLFxuICAgIE10eEdyaWRDb2x1bW5NZW51LFxuICAgIE10eEdyaWRTZWxlY3RhYmxlQ2VsbCxcbiAgICBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlLFxuICAgIE10eElzVGVtcGxhdGVSZWZQaXBlLFxuICAgIE10eEdyaWRDb2xDbGFzc1BpcGUsXG4gICAgTXR4R3JpZFJvd0NsYXNzUGlwZSxcbiAgICBNdHhUb09ic2VydmFibGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdFRhYmxlKSB0YWJsZSE6IE1hdFRhYmxlPGFueT47XG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKSByb3dEZWZzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxhbnk+PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRIZWFkZXJSb3dEZWYpIGhlYWRlclJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0SGVhZGVyUm93RGVmPjtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRGb290ZXJSb3cpIGZvb3RlclJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0Rm9vdGVyUm93RGVmPjtcbiAgQFZpZXdDaGlsZCgnY29sdW1uTWVudScpIGNvbHVtbk1lbnUhOiBNdHhHcmlkQ29sdW1uTWVudTtcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG5cbiAgLyoqIFRoZSBncmlkJ3MgZGlzcGxheWVkIGNvbHVtbnMuICovXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIC8qKiBUaGUgZ3JpZCdzIGNvbHVtbnMuICovXG4gIEBJbnB1dCgpIGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSA9IFtdO1xuICAvKiogVGhlIGdyaWQncyBkYXRhLiAqL1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICAvKiogVGhlIHRvdGFsIG51bWJlciBvZiB0aGUgZGF0YS4gKi9cbiAgQElucHV0KCkgbGVuZ3RoID0gMDtcbiAgLyoqIFdoZXRoZXIgdGhlIGdyaWQgaXMgbG9hZGluZy4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqIFRyYWNraW5nIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIHRoZSBkaWZmZXJlbmNlcyBpbiBkYXRhIGNoYW5nZXMuICovXG4gIEBJbnB1dCgpIHRyYWNrQnkhOiBUcmFja0J5RnVuY3Rpb248YW55PjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyByZXNpemFibGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBjb2x1bW5SZXNpemFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uUmVzaXphYmxlID8/IGZhbHNlO1xuICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBlbXB0eSB2YWx1ZSAoYG51bGxgLCBgJydgLCBgW11gKS4gKi9cbiAgQElucHV0KCkgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmVtcHR5VmFsdWVQbGFjZWhvbGRlciA/PyAnLS0nO1xuXG4gIC8vID09PT09IFBhZ2UgPT09PT1cblxuICAvKiogV2hldGhlciB0byBwYWdpbmF0ZSB0aGUgZGF0YSBvbiBmcm9udCBlbmQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwYWdlT25Gcm9udCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlT25Gcm9udCA/PyB0cnVlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBwYWdpbmF0b3IuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzaG93UGFnaW5hdG9yID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dQYWdpbmF0b3IgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhZ2luYXRvciBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHBhZ2VEaXNhYmxlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlRGlzYWJsZWQgPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGZpcnN0L2xhc3QgYnV0dG9ucyBVSSB0byB0aGUgdXNlci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNob3dGaXJzdExhc3RCdXR0b25zID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dGaXJzdExhc3RCdXR0b25zID8/IHRydWU7XG4gIC8qKiBUaGUgemVyby1iYXNlZCBwYWdlIGluZGV4IG9mIHRoZSBkaXNwbGF5ZWQgbGlzdCBvZiBpdGVtcy4gKi9cbiAgQElucHV0KCkgcGFnZUluZGV4ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VJbmRleCA/PyAwO1xuICAvKiogTnVtYmVyIG9mIGl0ZW1zIHRvIGRpc3BsYXkgb24gYSBwYWdlLiAqL1xuICBASW5wdXQoKSBwYWdlU2l6ZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlU2l6ZSA/PyAxMDtcbiAgLyoqIFRoZSBzZXQgb2YgcHJvdmlkZWQgcGFnZSBzaXplIG9wdGlvbnMgdG8gZGlzcGxheSB0byB0aGUgdXNlci4gKi9cbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VTaXplT3B0aW9ucyA/PyBbMTAsIDUwLCAxMDBdO1xuICAvKiogV2hldGhlciB0byBoaWRlIHRoZSBwYWdlIHNpemUgc2VsZWN0aW9uIFVJIGZyb20gdGhlIHVzZXIuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBoaWRlUGFnZVNpemUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uaGlkZVBhZ2VTaXplID8/IGZhbHNlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwYWdpbmF0b3IgY2hhbmdlcyB0aGUgcGFnZSBzaXplIG9yIHBhZ2UgaW5kZXguICovXG4gIEBPdXRwdXQoKSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBwYWdpbmF0aW9uLiAqL1xuICBASW5wdXQoKSBwYWdpbmF0aW9uVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IFNvcnQgPT09PT1cblxuICAvKiogV2hldGhlciB0byBzb3J0IHRoZSBkYXRhIG9uIGZyb250IGVuZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNvcnRPbkZyb250ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnRPbkZyb250ID8/IHRydWU7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIG1vc3QgcmVjZW50bHkgc29ydGVkIE1hdFNvcnRhYmxlLiAqL1xuICBASW5wdXQoKSBzb3J0QWN0aXZlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnRBY3RpdmUgPz8gJyc7XG4gIC8qKiBUaGUgc29ydCBkaXJlY3Rpb24gb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgTWF0U29ydGFibGUuICovXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydERpcmVjdGlvbiA/PyAnJztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdXNlciBmcm9tIGNsZWFyaW5nIHRoZSBzb3J0IGJ5IGZpbmlzaGluZyB0aGUgc29ydCBkaXJlY3Rpb24gY3ljbGUuXG4gICAqIE1heSBiZSBvdmVycmlkZW4gYnkgdGhlIGNvbHVtbidzIGBkaXNhYmxlQ2xlYXJgIGluIGBzb3J0UHJvcGAuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc29ydERpc2FibGVDbGVhciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0RGlzYWJsZUNsZWFyID8/IGZhbHNlO1xuICAvKiogV2hldGhlciB0aGUgc29ydCBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNvcnREaXNhYmxlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0RGlzYWJsZWQgPz8gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIHRvIHNldCB3aGVuIGFuIE1hdFNvcnRhYmxlIGlzIGluaXRpYWxseSBzb3J0ZWQuXG4gICAqIE1heSBiZSBvdmVycmlkZW4gYnkgdGhlIGNvbHVtbidzIGBzdGFydGAgaW4gYHNvcnRQcm9wYC5cbiAgICovXG4gIEBJbnB1dCgpIHNvcnRTdGFydDogJ2FzYycgfCAnZGVzYycgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydFN0YXJ0ID8/ICdhc2MnO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgZWl0aGVyIHRoZSBhY3RpdmUgc29ydCBvciBzb3J0IGRpcmVjdGlvbi4gKi9cbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG5cbiAgLy8gPT09PT0gUm93ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gdXNlIHRoZSByb3cgaG92ZXIgc3R5bGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICByb3dIb3ZlciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dIb3ZlciA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gdXNlIHRoZSByb3cgc3RyaXBlZCBzdHlsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJvd1N0cmlwZWQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucm93U3RyaXBlZCA/PyBmYWxzZTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIHJvdy4gKi9cbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgYXR0ZW1wdHMgdG8gb3BlbiBhIGNvbnRleHQgbWVudS4gKi9cbiAgQE91dHB1dCgpIHJvd0NvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gPT09PT0gRXhwYW5kYWJsZSBSb3cgPT09PT1cblxuICBleHBhbnNpb25Sb3dTdGF0ZXM6IGFueVtdID0gW107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHJvdyBpcyBleHBhbmRhYmxlLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgZXhwYW5kYWJsZSByb3cuICovXG4gIEBJbnB1dCgpIGV4cGFuc2lvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIHRoZSBleHBhbmRhYmxlIHJvdy4gKi9cbiAgQE91dHB1dCgpIGV4cGFuc2lvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vID09PT09IFJvdyBTZWxlY3Rpb24gPT09PT1cblxuICByb3dTZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSByb3cvY2VsbCBzZWxlY3Rpb24uICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBtdWx0aVNlbGVjdGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ubXVsdGlTZWxlY3RhYmxlID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGNhbiBzZWxlY3QgbXVsdGlwbGUgcm93cyB3aXRoIGNsaWNrLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgbXVsdGlTZWxlY3Rpb25XaXRoQ2xpY2sgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ubXVsdGlTZWxlY3Rpb25XaXRoQ2xpY2sgPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRoZSByb3cgaXMgc2VsZWN0YWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJvd1NlbGVjdGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucm93U2VsZWN0YWJsZSA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gaGlkZSB0aGUgcm93IHNlbGVjdGlvbiBjaGVja2JveC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3ggPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIGRpc2FibGUgcm93cyB0byBiZSBzZWxlY3RlZCB3aGVuIGNsaWNrZWQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBkaXNhYmxlUm93Q2xpY2tTZWxlY3Rpb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uZGlzYWJsZVJvd0NsaWNrU2VsZWN0aW9uID8/IGZhbHNlO1xuICAvKiogVGhlIGZvcm1hdHRlciB0byBkaXNhYmxlIHRoZSByb3cgc2VsZWN0aW9uIG9yIGhpZGUgdGhlIHJvdydzIGNoZWNrYm94LiAqL1xuICBASW5wdXQoKSByb3dTZWxlY3Rpb25Gb3JtYXR0ZXI6IE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIgPSB7fTtcbiAgLyoqIFRoZSBmb3JtYXR0ZXIgdG8gc2V0IHRoZSByb3cncyBjbGFzcy4gKi9cbiAgQElucHV0KCkgcm93Q2xhc3NGb3JtYXR0ZXI/OiBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXI7XG4gIC8qKiBUaGUgc2VsZWN0ZWQgcm93IGl0ZW1zLiAqL1xuICBASW5wdXQoKSByb3dTZWxlY3RlZDogYW55W10gPSBbXTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcm93IGlzIHNlbGVjdGVkLiAqL1xuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8vID09PT09IENlbGwgU2VsZWN0aW9uID09PT09XG5cbiAgY2VsbFNlbGVjdGlvbjogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgY2VsbCBpcyBzZWxlY3RhYmxlLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgY2VsbFNlbGVjdGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY2VsbFNlbGVjdGFibGUgPz8gdHJ1ZTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2VsbCBpcyBzZWxlY3RlZC4gKi9cbiAgQE91dHB1dCgpIGNlbGxTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRDZWxsPzogTXR4R3JpZFNlbGVjdGFibGVDZWxsO1xuXG4gIC8vID09PT09IFRvb2xiYXIgPT09PT1cblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSB0b29sYmFyLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2hvd1Rvb2xiYXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd1Rvb2xiYXIgPz8gZmFsc2U7XG4gIC8qKiBUaGUgdGV4dCBvZiB0aGUgdG9vbGJhcidzIHRpdGxlLiAqL1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8udG9vbGJhclRpdGxlID8/ICcnO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgdG9vbGJhci4gKi9cbiAgQElucHV0KCkgdG9vbGJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBDb2x1bW4gTWVudSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgaGlkZWFibGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBjb2x1bW5IaWRlYWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5IaWRlYWJsZSA/PyB0cnVlO1xuICAvKiogSGlkZSBvciBzaG93IHdoZW4gdGhlIGNvbHVtbidzIGNoZWNrYm94IGlzIGNoZWNrZWQuICovXG4gIEBJbnB1dCgpIGNvbHVtbkhpZGVhYmxlQ2hlY2tlZDogJ3Nob3cnIHwgJ2hpZGUnID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uSGlkZWFibGVDaGVja2VkID8/ICdzaG93JztcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBzb3J0YWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGNvbHVtblNvcnRhYmxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtblNvcnRhYmxlID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgcGlubmFibGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBjb2x1bW5QaW5uYWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5QaW5uYWJsZSA/PyB0cnVlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjb2x1bW4gaXMgaGlkZWQgb3IgaXMgc29ydGVkLiAqL1xuICBAT3V0cHV0KCkgY29sdW1uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ29sdW1uW10+KCk7XG4gIC8qKiBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbHVtbiBwaW4gbGlzdC4gKi9cbiAgQElucHV0KCkgY29sdW1uUGluT3B0aW9uczogTXR4R3JpZENvbHVtblBpbk9wdGlvbltdID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uUGluT3B0aW9ucyA/PyBbXTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzaG93Q29sdW1uTWVudUJ1dHRvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Q29sdW1uTWVudUJ1dHRvbiA/PyB0cnVlO1xuICAvKiogVGhlIHRleHQgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25UZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25UZXh0ID8/ICcnO1xuICAvKiogVGhlIHR5cGUgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25UeXBlOiBNdHhHcmlkQnV0dG9uVHlwZSA9XG4gICAgdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25UeXBlID8/ICdzdHJva2VkJztcbiAgLyoqIFRoZSBjb2xvciBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkNvbG9yOiBUaGVtZVBhbGV0dGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkNvbG9yO1xuICAvKiogVGhlIGNsYXNzIGZvciB0aGUgY29sdW1uIG1lbnUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51QnV0dG9uQ2xhc3MgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkNsYXNzID8/ICcnO1xuICAvKiogVGhlIGljb24gZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25JY29uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25JY29uID8/ICcnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbi1tZW51J3MgaGVhZGVyLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2hvd0NvbHVtbk1lbnVIZWFkZXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd0NvbHVtbk1lbnVIZWFkZXIgPz8gZmFsc2U7XG4gIC8qKiBUaGUgdGV4dCBmb3IgdGhlIGNvbHVtbi1tZW51J3MgaGVhZGVyLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51SGVhZGVyVGV4dCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51SGVhZGVyVGV4dCA/PyAnQ29sdW1ucyBIZWFkZXInO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgY29sdW1uLW1lbnUncyBoZWFkZXIuICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVIZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHRoZSBjb2x1bW4tbWVudSdzIGZvb3Rlci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNob3dDb2x1bW5NZW51Rm9vdGVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dDb2x1bW5NZW51Rm9vdGVyID8/IGZhbHNlO1xuICAvKiogVGhlIHRleHQgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGZvb3Rlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUZvb3RlclRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUZvb3RlclRleHQgPz8gJ0NvbHVtbnMgRm9vdGVyJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbHVtbi1tZW51J3MgZm9vdGVyLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51Rm9vdGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IE5vIFJlc3VsdCA9PT09PVxuXG4gIC8qKiBUaGUgZGlzcGxheWVkIHRleHQgZm9yIHRoZSBlbXB0eSBkYXRhLiAqL1xuICBASW5wdXQoKSBub1Jlc3VsdFRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ubm9SZXN1bHRUZXh0ID8/ICdObyByZWNvcmRzIGZvdW5kJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVtcHR5IGRhdGEuICovXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBfaGFzTm9SZXN1bHQoKSB7XG4gICAgcmV0dXJuICghdGhpcy5kYXRhU291cmNlLmRhdGEgfHwgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSAwKSAmJiAhdGhpcy5sb2FkaW5nO1xuICB9XG5cbiAgLy8gPT09PT0gQ2VsbCBUZW1wbGF0ZXMgPT09PT1cblxuICAvKiogVGhlIGhlYWRlcidzIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkLiAqL1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuICAvKiogVGhlIGhlYWRlcidzIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkIGV4Y2x1ZGUgc29ydC4gKi9cbiAgQElucHV0KCkgaGVhZGVyRXh0cmFUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuICAvKiogVGhlIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkLiAqL1xuICBASW5wdXQoKSBjZWxsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZTtcblxuICAvLyA9PT09PSBSb3cgVGVtcGxhdGVzID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gdXNlIGN1c3RvbSByb3cgdGVtcGxhdGUuIElmIHRydWUsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Um93RGVmLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlQ29udGVudFJvd1RlbXBsYXRlID0gZmFsc2U7XG4gIC8vIFRPRE86IEl0IGNhbid0IHVzZSB0b2dldGhlciB3aXRoIGB1c2VDb250ZW50Um93VGVtcGxhdGVgXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGUgPSBmYWxzZTtcbiAgLy8gVE9ETzogSXQncyBub3Qgd29ya2luZ1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlQ29udGVudEZvb3RlclJvd1RlbXBsYXRlID0gZmFsc2U7XG5cbiAgLy8gPT09PT0gU3VtbWFyeSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHN1bW1hcnkuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U3VtbWFyeSA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgc3VtbWFyeS4gKi9cbiAgQElucHV0KCkgc3VtbWFyeVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGU7XG5cbiAgLy8gVE9ETzogU3VtbWFyeSBkaXNwbGF5IGNvbmRpdGlvbnNcbiAgZ2V0IF93aGV0aGVyU2hvd1N1bW1hcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1N1bW1hcnk7XG4gIH1cblxuICAvLyA9PT09PSBTaWRlIEJhciA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHNpZGViYXIuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U2lkZWJhciA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgc2lkZWJhci4gKi9cbiAgQElucHV0KCkgc2lkZWJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBTdGF0dXMgQmFyID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc3RhdHVzIGJhci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dTdGF0dXNiYXIgPSBmYWxzZTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHN0YXR1cyBiYXIuICovXG4gIEBJbnB1dCgpIHN0YXR1c2JhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGhlIGNoYW5nZWQgcmVjb3JkIG9mIHJvdyBkYXRhLiAqL1xuICByb3dDaGFuZ2VSZWNvcmQ/OiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdXRpbHM6IE10eEdyaWRVdGlscyxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1UWF9HUklEX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9ucz86IE10eEdyaWREZWZhdWx0T3B0aW9uc1xuICApIHt9XG5cbiAgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBfZ2V0Q29sRGF0YShkYXRhOiBhbnlbXSwgY29sRGVmOiBNdHhHcmlkQ29sdW1uKSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmdldENvbERhdGEoZGF0YSwgY29sRGVmKTtcbiAgfVxuXG4gIF9pc0NvbHVtbkhpZGUoaXRlbTogTXR4R3JpZENvbHVtbikge1xuICAgIHJldHVybiBpdGVtLmhpZGUgIT09IHVuZGVmaW5lZCA/IGl0ZW0uaGlkZSA6IGl0ZW0uc2hvdyAhPT0gdW5kZWZpbmVkID8gIWl0ZW0uc2hvdyA6IGZhbHNlO1xuICB9XG5cbiAgLy8gV2FpdGluZyBmb3IgYXN5bmMgZGF0YVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5fY291bnRQaW5uZWRQb3NpdGlvbigpO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuX2lzQ29sdW1uSGlkZShpdGVtKSlcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmZpZWxkKTtcblxuICAgIGlmICh0aGlzLnNob3dDb2x1bW5NZW51QnV0dG9uKSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5oaWRlID0gdGhpcy5faXNDb2x1bW5IaWRlKGl0ZW0pO1xuICAgICAgICBpdGVtLnNob3cgPSAhaXRlbS5oaWRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3gpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy51bnNoaWZ0KCdNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWYnKTtcbiAgICB9XG5cbiAgICAvLyBXZSBzaG91bGQgY29weSBlYWNoIGl0ZW0gb2YgZGF0YSBmb3IgZXhwYW5zaW9uIGRhdGFcbiAgICBpZiAodGhpcy5leHBhbmRhYmxlKSB7XG4gICAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlcyA9IFtdOyAvLyByZXNldFxuXG4gICAgICB0aGlzLmRhdGE/LmZvckVhY2goXyA9PiB7XG4gICAgICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzLnB1c2goeyBleHBhbmRlZDogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlTZWxlY3RhYmxlLCB0aGlzLnJvd1NlbGVjdGVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdlT25Gcm9udCA/IHRoaXMucGFnaW5hdG9yIDogbnVsbDtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydE9uRnJvbnQgPyB0aGlzLnNvcnQgOiBudWxsO1xuXG4gICAgLy8gT25seSBzY3JvbGwgdG9wIHdpdGggZGF0YSBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvcCgwKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zb3J0T25Gcm9udCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93RGVmcz8ubGVuZ3RoID4gMCAmJiB0aGlzLnVzZUNvbnRlbnRSb3dUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5yb3dEZWZzLmZvckVhY2gocm93RGVmID0+IHRoaXMudGFibGUuYWRkUm93RGVmKHJvd0RlZikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWFkZXJSb3dEZWZzPy5sZW5ndGggPiAwICYmIHRoaXMudXNlQ29udGVudEhlYWRlclJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLmhlYWRlclJvd0RlZnMuZm9yRWFjaChoZWFkZXJSb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRIZWFkZXJSb3dEZWYoaGVhZGVyUm93RGVmKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvb3RlclJvd0RlZnM/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VDb250ZW50Rm9vdGVyUm93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcy5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlLmFkZEZvb3RlclJvd0RlZihmb290ZXJSb3dEZWYpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHt9XG5cbiAgX2NvdW50UGlubmVkUG9zaXRpb24oKSB7XG4gICAgY29uc3QgY291bnQgPSAoYWNjOiBudW1iZXIsIGN1cjogTXR4R3JpZENvbHVtbikgPT4gYWNjICsgcGFyc2VGbG9hdChjdXIud2lkdGggfHwgJzgwcHgnKTtcblxuICAgIGNvbnN0IHBpbm5lZExlZnRDb2xzID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAnbGVmdCcpO1xuICAgIHBpbm5lZExlZnRDb2xzLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgaXRlbS5sZWZ0ID0gcGlubmVkTGVmdENvbHMuc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnQsIDApICsgJ3B4JztcbiAgICB9KTtcblxuICAgIGNvbnN0IHBpbm5lZFJpZ2h0Q29scyA9IHRoaXMuY29sdW1uc1xuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAncmlnaHQnKVxuICAgICAgLnJldmVyc2UoKTtcbiAgICBwaW5uZWRSaWdodENvbHMuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICBpdGVtLnJpZ2h0ID0gcGlubmVkUmlnaHRDb2xzLnNsaWNlKDAsIGlkeCkucmVkdWNlKGNvdW50LCAwKSArICdweCc7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0SW5kZXgoaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCwgZGF0YUluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXggPT09IHVuZGVmaW5lZCA/IGRhdGFJbmRleCA6IGluZGV4O1xuICB9XG5cbiAgX29uU29ydENoYW5nZShzb3J0OiBTb3J0KSB7XG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XG4gIH1cblxuICBfb25Sb3dEYXRhQ2hhbmdlKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5yb3dDaGFuZ2VSZWNvcmQgPSByZWNvcmQ7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogRXhwYW5zaW9uIGNoYW5nZSBldmVudCAqL1xuICBfb25FeHBhbnNpb25DaGFuZ2UoXG4gICAgZXhwYW5zaW9uUmVmOiBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY29sdW1uOiBNdHhHcmlkQ29sdW1uLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5leHBhbnNpb25DaGFuZ2UuZW1pdCh7IGV4cGFuZGVkOiBleHBhbnNpb25SZWYuZXhwYW5kZWQsIGRhdGE6IHJvd0RhdGEsIGluZGV4LCBjb2x1bW4gfSk7XG4gIH1cblxuICAvKiogQ2VsbCBzZWxlY3QgZXZlbnQgKi9cbiAgX3NlbGVjdENlbGwoXG4gICAgY2VsbFJlZjogTXR4R3JpZFNlbGVjdGFibGVDZWxsLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY29sRGVmOiBNdHhHcmlkQ29sdW1uXG4gICk6IHZvaWQge1xuICAgIC8vIElmIG5vdCB0aGUgc2FtZSBjZWxsXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkQ2VsbCAhPT0gY2VsbFJlZikge1xuICAgICAgY29uc3QgY29sVmFsdWUgPSB0aGlzLl91dGlscy5nZXRDZWxsVmFsdWUocm93RGF0YSwgY29sRGVmKTtcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbiA9IFtdOyAvLyByZXNldFxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uLnB1c2goeyBjZWxsRGF0YTogY29sVmFsdWUsIHJvd0RhdGEsIGNvbERlZiB9KTtcblxuICAgICAgdGhpcy5jZWxsU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmNlbGxTZWxlY3Rpb24pO1xuXG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ2VsbC5kZXNlbGVjdCgpOyAvLyB0aGUgc2VsZWN0ZWRDZWxsIHdpbGwgYmUgdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWRDZWxsID0gY2VsbFJlZi5zZWxlY3RlZCA/IGNlbGxSZWYgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogUm93IHNlbGVjdCBldmVudCAqL1xuICBfc2VsZWN0Um93KGV2ZW50OiBNb3VzZUV2ZW50LCByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yb3dTZWxlY3RhYmxlICYmXG4gICAgICAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3dEYXRhLCBpbmRleCkgJiZcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3g/Lihyb3dEYXRhLCBpbmRleCkgJiZcbiAgICAgICF0aGlzLmRpc2FibGVSb3dDbGlja1NlbGVjdGlvblxuICAgICkge1xuICAgICAgLy8gbWV0YUtleSAtPiBjb21tYW5kIGtleVxuICAgICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0aW9uV2l0aENsaWNrICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5KSB7XG4gICAgICAgIHRoaXMucm93U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvd0RhdGEpO1xuICAgIH1cblxuICAgIHRoaXMucm93Q2xpY2suZW1pdCh7IGV2ZW50LCByb3dEYXRhLCBpbmRleCB9KTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIF9pc0FsbFNlbGVjdGVkKCkge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoXG4gICAgICAocm93LCBpbmRleCkgPT4gIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkPy4ocm93LCBpbmRleClcbiAgICApLmxlbmd0aDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XG4gIH1cblxuICAvKiogU2VsZWN0IGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIF90b2dnbGVNYXN0ZXJDaGVja2JveCgpIHtcbiAgICB0aGlzLl9pc0FsbFNlbGVjdGVkKClcbiAgICAgID8gdGhpcy5yb3dTZWxlY3Rpb24uY2xlYXIoKVxuICAgICAgOiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvdywgaW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3Qocm93KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHRoaXMucm93U2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvKiogU2VsZWN0IG5vcm1hbCByb3cgKi9cbiAgX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvdzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucm93U2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xuICAgIHRoaXMucm93U2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvKiogQ29sdW1uIGNoYW5nZSBldmVudCAqL1xuICBfb25Db2x1bW5DaGFuZ2UoY29sdW1uczogTXR4R3JpZENvbHVtbltdKSB7XG4gICAgdGhpcy5jb2x1bW5DaGFuZ2UuZW1pdChjb2x1bW5zKTtcblxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnMpKTtcblxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUgJiYgIXRoaXMuaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWVsZHMgPSBjb2x1bW5zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gKHRoaXMuY29sdW1uSGlkZWFibGVDaGVja2VkID09PSAnc2hvdycgPyBpdGVtLnNob3cgOiAhaXRlbS5oaWRlKSlcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmZpZWxkKTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqIEN1c3RvbWl6ZSBleHBhbnNpb24gZXZlbnQgKi9cbiAgdG9nZ2xlRXhwYW5zaW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kYWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGV4cGFuZGFibGVgIHNob3VsZCBiZSBzZXQgdHJ1ZS4nKTtcbiAgICB9XG4gICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZDtcbiAgICByZXR1cm4gdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkO1xuICB9XG5cbiAgLyoqIFNjcm9sbCB0byB0b3Agd2hlbiB0dXJuIHRvIHRoZSBuZXh0IHBhZ2UuICovXG4gIF9vblBhZ2UoZTogUGFnZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wKDApO1xuICAgIH1cbiAgICB0aGlzLnBhZ2UuZW1pdChlKTtcbiAgfVxuXG4gIHNjcm9sbFRvcCh2YWx1ZT86IG51bWJlcik6IG51bWJlciB8IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxMZWZ0KHZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHwgdm9pZCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgX2NvbnRleHRtZW51KGV2ZW50OiBNb3VzZUV2ZW50LCByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5yb3dDb250ZXh0TWVudS5lbWl0KHsgZXZlbnQsIHJvd0RhdGEsIGluZGV4IH0pO1xuICB9XG59XG4iLCI8IS0tIFByb2dyZXNzIGJhci0tPlxuQGlmIChsb2FkaW5nKSB7XG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1wcm9ncmVzc1wiPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L2Rpdj5cbn1cblxuPCEtLSBUb29sYmFyIC0tPlxuQGlmIChzaG93VG9vbGJhcikge1xuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyLWNvbnRlbnRcIj5cbiAgICAgIEBpZiAodG9vbGJhclRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAodG9vbGJhclRpdGxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXRvb2xiYXItdGl0bGVcIj57e3Rvb2xiYXJUaXRsZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhci1hY3Rpb25zXCI+XG4gICAgICBAaWYgKHNob3dDb2x1bW5NZW51QnV0dG9uKSB7XG4gICAgICAgIDxtdHgtZ3JpZC1jb2x1bW4tbWVudSAjY29sdW1uTWVudVxuICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgIFtidXR0b25UZXh0XT1cImNvbHVtbk1lbnVCdXR0b25UZXh0XCJcbiAgICAgICAgICBbYnV0dG9uVHlwZV09XCJjb2x1bW5NZW51QnV0dG9uVHlwZVwiXG4gICAgICAgICAgW2J1dHRvbkNvbG9yXT1cImNvbHVtbk1lbnVCdXR0b25Db2xvclwiXG4gICAgICAgICAgW2J1dHRvbkNsYXNzXT1cImNvbHVtbk1lbnVCdXR0b25DbGFzc1wiXG4gICAgICAgICAgW2J1dHRvbkljb25dPVwiY29sdW1uTWVudUJ1dHRvbkljb25cIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cImNvbHVtbkhpZGVhYmxlXCJcbiAgICAgICAgICBbc2VsZWN0YWJsZUNoZWNrZWRdPVwiY29sdW1uSGlkZWFibGVDaGVja2VkXCJcbiAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uU29ydGFibGVcIlxuICAgICAgICAgIFtwaW5uYWJsZV09XCJjb2x1bW5QaW5uYWJsZVwiXG4gICAgICAgICAgW3Nob3dIZWFkZXJdPVwic2hvd0NvbHVtbk1lbnVIZWFkZXJcIlxuICAgICAgICAgIFtoZWFkZXJUZXh0XT1cImNvbHVtbk1lbnVIZWFkZXJUZXh0XCJcbiAgICAgICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiY29sdW1uTWVudUhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICBbc2hvd0Zvb3Rlcl09XCJzaG93Q29sdW1uTWVudUZvb3RlclwiXG4gICAgICAgICAgW2Zvb3RlclRleHRdPVwiY29sdW1uTWVudUZvb3RlclRleHRcIlxuICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJjb2x1bW5NZW51Rm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgIFtwaW5PcHRpb25zXT1cImNvbHVtblBpbk9wdGlvbnNcIlxuICAgICAgICAgIChjb2x1bW5DaGFuZ2UpPVwiX29uQ29sdW1uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9tdHgtZ3JpZC1jb2x1bW4tbWVudT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1tYWluIG10eC1ncmlkLWxheW91dFwiPlxuICA8IS0tIFRhYmxlIGNvbnRlbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb250ZW50IG10eC1ncmlkLWxheW91dFwiPlxuICAgIDxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwibWF0LXRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5tYXQtdGFibGUtd2l0aC1kYXRhXT1cIiFfaGFzTm9SZXN1bHRcIj5cbiAgICAgIEBpZiAoIWNvbHVtblJlc2l6YWJsZSkge1xuICAgICAgICA8dGFibGUgbWF0LXRhYmxlXG4gICAgICAgICAgW2NsYXNzXT1cInsnbWF0LXRhYmxlLWhvdmVyJzogcm93SG92ZXIsICdtYXQtdGFibGUtc3RyaXBlZCc6IHJvd1N0cmlwZWQsICdtYXQtdGFibGUtZXhwYW5kYWJsZSc6IGV4cGFuZGFibGV9XCJcbiAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHBhbmRhYmxlXCJcbiAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgW21hdFNvcnRBY3RpdmVdPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgICAgICAgW21hdFNvcnREaXNhYmxlQ2xlYXJdPVwic29ydERpc2FibGVDbGVhclwiXG4gICAgICAgICAgW21hdFNvcnREaXNhYmxlZF09XCJzb3J0RGlzYWJsZWRcIlxuICAgICAgICAgIFttYXRTb3J0U3RhcnRdPVwic29ydFN0YXJ0XCJcbiAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJfb25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlcIj5cbiAgICAgICAgICBAaWYgKHJvd1NlbGVjdGFibGUgJiYgIWhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWZcIj5cbiAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKG11bHRpU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBfaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwicm93U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIV9pc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVNYXN0ZXJDaGVja2JveCgpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoIShyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94ICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3gocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpKSkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZChyb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvdykgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgW3N0aWNreV09XCJjb2wucGlubmVkPT09J2xlZnQnXCIgW3N0aWNreUVuZF09XCJjb2wucGlubmVkPT09J3JpZ2h0J1wiPlxuICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1sZWZ0XT1cImNvbC5waW5uZWQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktcmlnaHRdPVwiY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdtaW4td2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGhlYWRlclRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkYW55KGhlYWRlclRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFttYXQtc29ydC1oZWFkZXJdPVwiY29sLnNvcnRQcm9wPy5pZCB8fCBjb2wuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2wuc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVDbGVhcl09XCJjb2wuc29ydFByb3A/LmRpc2FibGVDbGVhciA/PyBzb3J0RGlzYWJsZUNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbC5zb3J0UHJvcD8uYXJyb3dQb3NpdGlvbiFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0XT1cImNvbC5zb3J0UHJvcD8uc3RhcnQhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zaG93RXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLXBsYWNlaG9sZGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjb2wuaGVhZGVyIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG1hdC1zb3J0LWhlYWRlci1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMywxM0gxNVYxMUgzTTMsNlY4SDIxVjZNMywxOEg5VjE2SDNWMThaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVHBsQmFzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhlYWRlckV4dHJhVGVtcGxhdGUsIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzOiByb3c6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LWxlZnRdPVwiY29sLnBpbm5lZCA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1yaWdodF09XCJjb2wucGlubmVkID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ21pbi13aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiXG4gICAgICAgICAgICAgICAgbXR4LWdyaWQtc2VsZWN0YWJsZS1jZWxsIFtjZWxsU2VsZWN0YWJsZV09XCJjZWxsU2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgKGNlbGxTZWxlY3RlZENoYW5nZSk9XCJfc2VsZWN0Q2VsbCgkZXZlbnQsIHJvdywgY29sKVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2VsbFRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY2VsbFRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKCRhbnkoY2VsbFRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNlbGxUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLmNlbGxUZW1wbGF0ZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNob3dFeHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtdHgtZ3JpZC1yb3ctZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBtdHgtZ3JpZC1leHBhbnNpb24tdG9nZ2xlIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG9wZW5lZCldPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cIl9vbkV4cGFuc2lvbkNoYW5nZSgkZXZlbnQsIHJvdywgY29sLCBkYXRhSW5kZXgpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1yb3ctZXhwYW5kLWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbcm93RGF0YV09XCJyb3dcIiBbY29sRGVmXT1cImNvbFwiIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2UpPVwiX29uUm93RGF0YUNoYW5nZSgkZXZlbnQpXCI+PC9tdHgtZ3JpZC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktbGVmdF09XCJjb2wucGlubmVkID09PSAnbGVmdCdcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LXJpZ2h0XT1cImNvbC5waW5uZWQgPT09ICdyaWdodCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbWluLXdpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb2wuc2hvd0V4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc3VtbWFyeVRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCwgZGF0YTogZGF0YSB9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgQGlmICgkYW55KHN1bW1hcnlUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpW2NvbC5maWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGF0YTogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxtdHgtZ3JpZC1jZWxsIFtzdW1tYXJ5XT1cInRydWVcIiBbZGF0YV09XCJkYXRhXCIgW2NvbERlZl09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIj48L210eC1ncmlkLWNlbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXVzZUNvbnRlbnRIZWFkZXJSb3dUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCF1c2VDb250ZW50Um93VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDx0ciBtYXQtcm93XG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwicm93IHwgcm93Q2xhc3M6IGluZGV4OiBkYXRhSW5kZXg6IHJvd0NsYXNzRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdFJvdygkZXZlbnQsIHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXG4gICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJfY29udGV4dG1lbnUoJGV2ZW50LCByb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoX3doZXRoZXJTaG93U3VtbWFyeSkge1xuICAgICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGV4cGFuZGFibGUpIHtcbiAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZXhwYW5kYWJsZSByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRFeHBhbnNpb25Db2x1bW5EZWZcIj5cbiAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tZGV0YWlsXCJcbiAgICAgICAgICAgICAgICAgIFtAZXhwYW5zaW9uXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5zaW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogZGF0YUluZGV4LCBleHBhbmRlZDogZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRyIG1hdC1yb3dcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnTXR4R3JpZEV4cGFuc2lvbkNvbHVtbkRlZiddOyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb25cIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RhYmxlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gVE9ETzogVXNlIGZsZXhib3gtYmFzZWQgbWF0LXRhYmxlIC0tPlxuICAgICAgICA8dGFibGUgbWF0LXRhYmxlXG4gICAgICAgICAgY29sdW1uUmVzaXplXG4gICAgICAgICAgW2NsYXNzXT1cInsnbWF0LXRhYmxlLWhvdmVyJzogcm93SG92ZXIsICdtYXQtdGFibGUtc3RyaXBlZCc6IHJvd1N0cmlwZWQsICdtYXQtdGFibGUtZXhwYW5kYWJsZSc6IGV4cGFuZGFibGV9XCJcbiAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHBhbmRhYmxlXCJcbiAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgW21hdFNvcnRBY3RpdmVdPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgICAgICAgW21hdFNvcnREaXNhYmxlQ2xlYXJdPVwic29ydERpc2FibGVDbGVhclwiXG4gICAgICAgICAgW21hdFNvcnREaXNhYmxlZF09XCJzb3J0RGlzYWJsZWRcIlxuICAgICAgICAgIFttYXRTb3J0U3RhcnRdPVwic29ydFN0YXJ0XCJcbiAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJfb25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlcIj5cbiAgICAgICAgICBAaWYgKHJvd1NlbGVjdGFibGUgJiYgIWhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWZcIj5cbiAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKG11bHRpU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBfaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwicm93U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIV9pc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVNYXN0ZXJDaGVja2JveCgpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoIShyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94ICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3gocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpKSkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZChyb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvdykgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWYgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgW3N0aWNreV09XCJjb2wucGlubmVkPT09J2xlZnQnXCIgW3N0aWNreUVuZF09XCJjb2wucGlubmVkPT09J3JpZ2h0J1wiPlxuICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1sZWZ0XT1cImNvbC5waW5uZWQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktcmlnaHRdPVwiY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIlxuICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiY29sLnJlc2l6YWJsZVwiXG4gICAgICAgICAgICAgICAgW21hdFJlc2l6YWJsZU1pbldpZHRoUHhdPVwiY29sLm1pbldpZHRoXCIgW21hdFJlc2l6YWJsZU1heFdpZHRoUHhdPVwiY29sLm1heFdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChoZWFkZXJUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJGFueShoZWFkZXJUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlclRlbXBsYXRlKVtjb2wuZmllbGRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbC5zb3J0UHJvcD8uaWQgfHwgY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlQ2xlYXJdPVwiY29sLnNvcnRQcm9wPy5kaXNhYmxlQ2xlYXIgPz8gc29ydERpc2FibGVDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2wuc29ydFByb3A/LmFycm93UG9zaXRpb24hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2wuc29ydFByb3A/LnN0YXJ0IVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2wuc2hvd0V4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1wbGFjZWhvbGRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtYXQtc29ydC1oZWFkZXItaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMsMTNIMTVWMTFIM00zLDZWOEgyMVY2TTMsMThIOVYxNkgzVjE4WlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJFeHRyYVRwbEJhc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBoZWFkZXJFeHRyYVRlbXBsYXRlLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wgfCBjb2xDbGFzczogcm93OiByb3dDaGFuZ2VSZWNvcmQgOnJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1sZWZ0XT1cImNvbC5waW5uZWQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktcmlnaHRdPVwiY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIlxuICAgICAgICAgICAgICAgIG10eC1ncmlkLXNlbGVjdGFibGUtY2VsbCBbY2VsbFNlbGVjdGFibGVdPVwiY2VsbFNlbGVjdGFibGVcIlxuICAgICAgICAgICAgICAgIChjZWxsU2VsZWN0ZWRDaGFuZ2UpPVwiX3NlbGVjdENlbGwoJGV2ZW50LCByb3csIGNvbClcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNlbGxUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNlbGxUZW1wbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgQGlmICgkYW55KGNlbGxUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5jZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbC5jZWxsVGVtcGxhdGUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zaG93RXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtcm93LWV4cGFuZC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gbXR4LWdyaWQtZXhwYW5zaW9uLXRvZ2dsZSB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhvcGVuZWQpXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZUNoYW5nZSk9XCJfb25FeHBhbnNpb25DaGFuZ2UoJGV2ZW50LCByb3csIGNvbCwgZGF0YUluZGV4KTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtcm93LWV4cGFuZC1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPG10eC1ncmlkLWNlbGwgW3Jvd0RhdGFdPVwicm93XCIgW2NvbERlZl09XCJjb2xcIiBbcGxhY2Vob2xkZXJdPVwiZW1wdHlWYWx1ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyb3dEYXRhQ2hhbmdlKT1cIl9vblJvd0RhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvbXR4LWdyaWQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LWxlZnRdPVwiY29sLnBpbm5lZCA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1yaWdodF09XCJjb2wucGlubmVkID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY29sLnNob3dFeHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLXBsYWNlaG9sZGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHN1bW1hcnlUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wsIGRhdGE6IGRhdGEgfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoJGFueShzdW1tYXJ5VGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVtjb2wuZmllbGRdXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IF9nZXRDb2xEYXRhKGRhdGEsIGNvbCksIGNvbERhdGE6IF9nZXRDb2xEYXRhKGRhdGEsIGNvbCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbc3VtbWFyeV09XCJ0cnVlXCIgW2RhdGFdPVwiZGF0YVwiIFtjb2xEZWZdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW1wdHlWYWx1ZVBsYWNlaG9sZGVyXCI+PC9tdHgtZ3JpZC1jZWxsPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCF1c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghdXNlQ29udGVudFJvd1RlbXBsYXRlKSB7XG4gICAgICAgICAgICA8dHIgbWF0LXJvd1xuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInJvdyB8IHJvd0NsYXNzOiBpbmRleDogZGF0YUluZGV4OiByb3dDbGFzc0Zvcm1hdHRlclwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RSb3coJGV2ZW50LCByb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIlxuICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiX2NvbnRleHRtZW51KCRldmVudCwgcm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCI+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKF93aGV0aGVyU2hvd1N1bW1hcnkpIHtcbiAgICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChleHBhbmRhYmxlKSB7XG4gICAgICAgICAgICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgQ29sdW1uIC0gVGhlIGV4cGFuZGFibGUgcm93IGlzIG1hZGUgdXAgb2YgdGhpcyBvbmUgY29sdW1uIHRoYXQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkRXhwYW5zaW9uQ29sdW1uRGVmXCI+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLWRldGFpbFwiXG4gICAgICAgICAgICAgICAgICBbQGV4cGFuc2lvbl09XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuc2lvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IGRhdGFJbmRleCwgZXhwYW5kZWQ6IGV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDx0ciBtYXQtcm93XG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ010eEdyaWRFeHBhbnNpb25Db2x1bW5EZWYnXTsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTm8gcmVzdWx0IC0tPlxuICAgIEBpZiAoX2hhc05vUmVzdWx0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtbm8tcmVzdWx0XCI+XG4gICAgICAgIEBpZiAobm9SZXN1bHRUZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1Jlc3VsdFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAge3tub1Jlc3VsdFRleHR9fVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDwhLS0gVG9vbCBzaWRlYmFyIC0tPlxuICBAaWYgKHNob3dTaWRlYmFyKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXNpZGViYXJcIj5cbiAgICAgIEBpZiAoc2lkZWJhclRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlYmFyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm10eC1ncmlkLWZvb3RlclwiPlxuICA8IS0tIFN0YXR1cyBCYXIgLS0+XG4gIEBpZiAoc2hvd1N0YXR1c2Jhcikge1xuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1zdGF0dXNiYXJcIj5cbiAgICAgIEBpZiAoc3RhdHVzYmFyVGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXR1c2JhclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXBhZ2luYXRpb25cIj5cbiAgICBAaWYgKHBhZ2luYXRpb25UZW1wbGF0ZSkge1xuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhZ2luYXRpb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bWF0LXBhZ2luYXRvciBbY2xhc3MubWF0LXBhZ2luYXRvci1oaWRkZW5dPVwiIXNob3dQYWdpbmF0b3JcIlxuICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwic2hvd0ZpcnN0TGFzdEJ1dHRvbnNcIlxuICAgICAgICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICBbaGlkZVBhZ2VTaXplXT1cImhpZGVQYWdlU2l6ZVwiXG4gICAgICAgIChwYWdlKT1cIl9vblBhZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwYWdlRGlzYWJsZWRcIj5cbiAgICAgIDwvbWF0LXBhZ2luYXRvcj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gSGVhZGVyIHRlbXBsYXRlIGZvciBleHRyYSBjb250ZW50IC0tPlxuPG5nLXRlbXBsYXRlICNoZWFkZXJFeHRyYVRwbEJhc2UgbGV0LWhlYWRlckV4dHJhVGVtcGxhdGUgbGV0LWNvbD1cImNvbERlZlwiPlxuICBAaWYgKGhlYWRlckV4dHJhVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICB9IEBlbHNlIHtcbiAgICBAaWYgKCRhbnkoaGVhZGVyRXh0cmFUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVGVtcGxhdGVbY29sLmZpZWxkXVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
644
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9ncmlkLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2dyaWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULFFBQVEs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QkFBbEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixlQUFlO3NCQUF2QixLQUFLO2dCQVVrQyxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixlQUFlO3NCQUF2QixLQUFLO2dCQUtrQyxhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBLZXlWYWx1ZUNoYW5nZVJlY29yZCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0SGVhZGVyLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge1xuICBNYXRDZWxsLFxuICBNYXRDZWxsRGVmLFxuICBNYXRDb2x1bW5EZWYsXG4gIE1hdEZvb3RlckNlbGwsXG4gIE1hdEZvb3RlckNlbGxEZWYsXG4gIE1hdEZvb3RlclJvdyxcbiAgTWF0Rm9vdGVyUm93RGVmLFxuICBNYXRIZWFkZXJDZWxsLFxuICBNYXRIZWFkZXJDZWxsRGVmLFxuICBNYXRIZWFkZXJSb3csXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93LFxuICBNYXRSb3dEZWYsXG4gIE1hdFRhYmxlLFxuICBNYXRUYWJsZURhdGFTb3VyY2UsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcblxuaW1wb3J0IHsgTXR4SXNUZW1wbGF0ZVJlZlBpcGUsIE10eFRvT2JzZXJ2YWJsZVBpcGUgfSBmcm9tICdAbmctbWF0ZXJvL2V4dGVuc2lvbnMvY29yZSc7XG5pbXBvcnQgeyBNdHhHcmlkQ2VsbCB9IGZyb20gJy4vY2VsbCc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uTWVudSB9IGZyb20gJy4vY29sdW1uLW1lbnUnO1xuaW1wb3J0IHsgTWF0Q29sdW1uUmVzaXplLCBNYXRSZXNpemFibGUgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUnO1xuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sQ2xhc3NQaXBlLCBNdHhHcmlkUm93Q2xhc3NQaXBlIH0gZnJvbSAnLi9ncmlkLXBpcGVzJztcbmltcG9ydCB7IE10eEdyaWRVdGlscyB9IGZyb20gJy4vZ3JpZC11dGlscyc7XG5pbXBvcnQge1xuICBNdHhHcmlkQnV0dG9uVHlwZSxcbiAgTXR4R3JpZENlbGxUZW1wbGF0ZSxcbiAgTXR4R3JpZENvbHVtbixcbiAgTXR4R3JpZENvbHVtblBpbk9wdGlvbixcbiAgTXR4R3JpZERlZmF1bHRPcHRpb25zLFxuICBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXIsXG4gIE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNdHhHcmlkU2VsZWN0YWJsZUNlbGwgfSBmcm9tICcuL3NlbGVjdGFibGUtY2VsbCc7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgZ3JpZCBvcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9HUklEX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNdHhHcmlkRGVmYXVsdE9wdGlvbnM+KFxuICAnbXR4LWdyaWQtZGVmYXVsdC1vcHRpb25zJ1xuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQnLFxuICBleHBvcnRBczogJ210eEdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dyaWQuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1ncmlkJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbnNpb24nLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIHZpc2liaWxpdHk6ICd2aXNpYmxlJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IHZvaWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgXSksXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBNYXRQcm9ncmVzc0JhcixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE1hdENoZWNrYm94LFxuICAgIE1hdFRhYmxlLFxuICAgIE1hdENvbHVtbkRlZixcbiAgICBNYXRIZWFkZXJSb3dEZWYsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdFJvd0RlZixcbiAgICBNYXRSb3csXG4gICAgTWF0Rm9vdGVyUm93RGVmLFxuICAgIE1hdEZvb3RlclJvdyxcbiAgICBNYXRIZWFkZXJDZWxsRGVmLFxuICAgIE1hdEhlYWRlckNlbGwsXG4gICAgTWF0Q2VsbERlZixcbiAgICBNYXRDZWxsLFxuICAgIE1hdEZvb3RlckNlbGxEZWYsXG4gICAgTWF0Rm9vdGVyQ2VsbCxcbiAgICBNYXRTb3J0LFxuICAgIE1hdFNvcnRIZWFkZXIsXG4gICAgTWF0UGFnaW5hdG9yLFxuICAgIE1hdFJlc2l6YWJsZSxcbiAgICBNYXRDb2x1bW5SZXNpemUsXG4gICAgTXR4R3JpZENlbGwsXG4gICAgTXR4R3JpZENvbHVtbk1lbnUsXG4gICAgTXR4R3JpZFNlbGVjdGFibGVDZWxsLFxuICAgIE10eEdyaWRFeHBhbnNpb25Ub2dnbGUsXG4gICAgTXR4SXNUZW1wbGF0ZVJlZlBpcGUsXG4gICAgTXR4R3JpZENvbENsYXNzUGlwZSxcbiAgICBNdHhHcmlkUm93Q2xhc3NQaXBlLFxuICAgIE10eFRvT2JzZXJ2YWJsZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUpIHRhYmxlITogTWF0VGFibGU8YW55PjtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYpIHJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPGFueT4+O1xuICBAQ29udGVudENoaWxkcmVuKE1hdEhlYWRlclJvd0RlZikgaGVhZGVyUm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRIZWFkZXJSb3dEZWY+O1xuICBAQ29udGVudENoaWxkcmVuKE1hdEZvb3RlclJvdykgZm9vdGVyUm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRGb290ZXJSb3dEZWY+O1xuICBAVmlld0NoaWxkKCdjb2x1bW5NZW51JykgY29sdW1uTWVudSE6IE10eEdyaWRDb2x1bW5NZW51O1xuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcblxuICAvKiogVGhlIGdyaWQncyBkaXNwbGF5ZWQgY29sdW1ucy4gKi9cbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqIFRoZSBncmlkJ3MgY29sdW1ucy4gKi9cbiAgQElucHV0KCkgY29sdW1uczogTXR4R3JpZENvbHVtbltdID0gW107XG4gIC8qKiBUaGUgZ3JpZCdzIGRhdGEuICovXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIHRoZSBkYXRhLiAqL1xuICBASW5wdXQoKSBsZW5ndGggPSAwO1xuICAvKiogV2hldGhlciB0aGUgZ3JpZCBpcyBsb2FkaW5nLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbG9hZGluZyA9IGZhbHNlO1xuICAvKiogVHJhY2tpbmcgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgdGhlIGRpZmZlcmVuY2VzIGluIGRhdGEgY2hhbmdlcy4gKi9cbiAgQElucHV0KCkgdHJhY2tCeSE6IFRyYWNrQnlGdW5jdGlvbjxhbnk+O1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHJlc2l6YWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGNvbHVtblJlc2l6YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5SZXNpemFibGUgPz8gZmFsc2U7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIGVtcHR5IHZhbHVlIChgbnVsbGAsIGAnJ2AsIGBbXWApLiAqL1xuICBASW5wdXQoKSBlbXB0eVZhbHVlUGxhY2Vob2xkZXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uZW1wdHlWYWx1ZVBsYWNlaG9sZGVyID8/ICctLSc7XG5cbiAgLy8gPT09PT0gUGFnZSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHBhZ2luYXRlIHRoZSBkYXRhIG9uIGZyb250IGVuZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHBhZ2VPbkZyb250ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VPbkZyb250ID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHBhZ2luYXRvci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNob3dQYWdpbmF0b3IgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd1BhZ2luYXRvciA/PyB0cnVlO1xuICAvKiogV2hldGhlciB0aGUgcGFnaW5hdG9yIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcGFnZURpc2FibGVkID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VEaXNhYmxlZCA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgZmlyc3QvbGFzdCBidXR0b25zIFVJIHRvIHRoZSB1c2VyLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gdHJ1ZTtcbiAgLyoqIFRoZSB6ZXJvLWJhc2VkIHBhZ2UgaW5kZXggb2YgdGhlIGRpc3BsYXllZCBsaXN0IG9mIGl0ZW1zLiAqL1xuICBASW5wdXQoKSBwYWdlSW5kZXggPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZUluZGV4ID8/IDA7XG4gIC8qKiBOdW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheSBvbiBhIHBhZ2UuICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VTaXplID8/IDEwO1xuICAvKiogVGhlIHNldCBvZiBwcm92aWRlZCBwYWdlIHNpemUgb3B0aW9ucyB0byBkaXNwbGF5IHRvIHRoZSB1c2VyLiAqL1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZVNpemVPcHRpb25zID8/IFsxMCwgNTAsIDEwMF07XG4gIC8qKiBXaGV0aGVyIHRvIGhpZGUgdGhlIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24gVUkgZnJvbSB0aGUgdXNlci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGhpZGVQYWdlU2l6ZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5oaWRlUGFnZVNpemUgPz8gZmFsc2U7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBhZ2luYXRvciBjaGFuZ2VzIHRoZSBwYWdlIHNpemUgb3IgcGFnZSBpbmRleC4gKi9cbiAgQE91dHB1dCgpIHBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHBhZ2luYXRpb24uICovXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gPT09PT0gU29ydCA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNvcnQgdGhlIGRhdGEgb24gZnJvbnQgZW5kLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc29ydE9uRnJvbnQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydE9uRnJvbnQgPz8gdHJ1ZTtcbiAgLyoqIFRoZSBpZCBvZiB0aGUgbW9zdCByZWNlbnRseSBzb3J0ZWQgTWF0U29ydGFibGUuICovXG4gIEBJbnB1dCgpIHNvcnRBY3RpdmUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydEFjdGl2ZSA/PyAnJztcbiAgLyoqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KCkgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0RGlyZWN0aW9uID8/ICcnO1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB1c2VyIGZyb20gY2xlYXJpbmcgdGhlIHNvcnQgYnkgZmluaXNoaW5nIHRoZSBzb3J0IGRpcmVjdGlvbiBjeWNsZS5cbiAgICogTWF5IGJlIG92ZXJyaWRlbiBieSB0aGUgY29sdW1uJ3MgYGRpc2FibGVDbGVhcmAgaW4gYHNvcnRQcm9wYC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzb3J0RGlzYWJsZUNsZWFyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnREaXNhYmxlQ2xlYXIgPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRoZSBzb3J0IGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc29ydERpc2FibGVkID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnREaXNhYmxlZCA/PyBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdG8gc2V0IHdoZW4gYW4gTWF0U29ydGFibGUgaXMgaW5pdGlhbGx5IHNvcnRlZC5cbiAgICogTWF5IGJlIG92ZXJyaWRlbiBieSB0aGUgY29sdW1uJ3MgYHN0YXJ0YCBpbiBgc29ydFByb3BgLlxuICAgKi9cbiAgQElucHV0KCkgc29ydFN0YXJ0OiAnYXNjJyB8ICdkZXNjJyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0U3RhcnQgPz8gJ2FzYyc7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyBlaXRoZXIgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLiAqL1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICAvLyA9PT09PSBSb3cgPT09PT1cblxuICAvKiogV2hldGhlciB0byB1c2UgdGhlIHJvdyBob3ZlciBzdHlsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJvd0hvdmVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnJvd0hvdmVyID8/IGZhbHNlO1xuICAvKiogV2hldGhlciB0byB1c2UgdGhlIHJvdyBzdHJpcGVkIHN0eWxlLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcm93U3RyaXBlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dTdHJpcGVkID8/IGZhbHNlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgcm93LiAqL1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBhdHRlbXB0cyB0byBvcGVuIGEgY29udGV4dCBtZW51LiAqL1xuICBAT3V0cHV0KCkgcm93Q29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyA9PT09PSBFeHBhbmRhYmxlIFJvdyA9PT09PVxuXG4gIGV4cGFuc2lvblJvd1N0YXRlczogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgcm93IGlzIGV4cGFuZGFibGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBleHBhbmRhYmxlID0gZmFsc2U7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBleHBhbmRhYmxlIHJvdy4gKi9cbiAgQElucHV0KCkgZXhwYW5zaW9uVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHRvZ2dsZXMgdGhlIGV4cGFuZGFibGUgcm93LiAqL1xuICBAT3V0cHV0KCkgZXhwYW5zaW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gPT09PT0gUm93IFNlbGVjdGlvbiA9PT09PVxuXG4gIHJvd1NlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55PiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcblxuICAvKiogV2hldGhlciB0byBzdXBwb3J0IG11bHRpcGxlIHJvdy9jZWxsIHNlbGVjdGlvbi4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIG11bHRpU2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5tdWx0aVNlbGVjdGFibGUgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgY2FuIHNlbGVjdCBtdWx0aXBsZSByb3dzIHdpdGggY2xpY2suICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBtdWx0aVNlbGVjdGlvbldpdGhDbGljayA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5tdWx0aVNlbGVjdGlvbldpdGhDbGljayA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHJvdyBpcyBzZWxlY3RhYmxlLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcm93U2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dTZWxlY3RhYmxlID8/IGZhbHNlO1xuICAvKiogV2hldGhlciB0byBoaWRlIHRoZSByb3cgc2VsZWN0aW9uIGNoZWNrYm94LiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgZGlzYWJsZSByb3dzIHRvIGJlIHNlbGVjdGVkIHdoZW4gY2xpY2tlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGRpc2FibGVSb3dDbGlja1NlbGVjdGlvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5kaXNhYmxlUm93Q2xpY2tTZWxlY3Rpb24gPz8gZmFsc2U7XG4gIC8qKiBUaGUgZm9ybWF0dGVyIHRvIGRpc2FibGUgdGhlIHJvdyBzZWxlY3Rpb24gb3IgaGlkZSB0aGUgcm93J3MgY2hlY2tib3guICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbkZvcm1hdHRlcjogTXR4R3JpZFJvd1NlbGVjdGlvbkZvcm1hdHRlciA9IHt9O1xuICAvKiogVGhlIGZvcm1hdHRlciB0byBzZXQgdGhlIHJvdydzIGNsYXNzLiAqL1xuICBASW5wdXQoKSByb3dDbGFzc0Zvcm1hdHRlcj86IE10eEdyaWRSb3dDbGFzc0Zvcm1hdHRlcjtcbiAgLyoqIFRoZSBzZWxlY3RlZCByb3cgaXRlbXMuICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGVkOiBhbnlbXSA9IFtdO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSByb3cgaXMgc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgLy8gPT09PT0gQ2VsbCBTZWxlY3Rpb24gPT09PT1cblxuICBjZWxsU2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjZWxsIGlzIHNlbGVjdGFibGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBjZWxsU2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jZWxsU2VsZWN0YWJsZSA/PyB0cnVlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjZWxsIGlzIHNlbGVjdGVkLiAqL1xuICBAT3V0cHV0KCkgY2VsbFNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBwcml2YXRlIF9zZWxlY3RlZENlbGw/OiBNdHhHcmlkU2VsZWN0YWJsZUNlbGw7XG5cbiAgLy8gPT09PT0gVG9vbGJhciA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHRvb2xiYXIuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzaG93VG9vbGJhciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93VG9vbGJhciA/PyBmYWxzZTtcbiAgLyoqIFRoZSB0ZXh0IG9mIHRoZSB0b29sYmFyJ3MgdGl0bGUuICovXG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy50b29sYmFyVGl0bGUgPz8gJyc7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSB0b29sYmFyLiAqL1xuICBASW5wdXQoKSB0b29sYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IENvbHVtbiBNZW51ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBoaWRlYWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGNvbHVtbkhpZGVhYmxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbkhpZGVhYmxlID8/IHRydWU7XG4gIC8qKiBIaWRlIG9yIHNob3cgd2hlbiB0aGUgY29sdW1uJ3MgY2hlY2tib3ggaXMgY2hlY2tlZC4gKi9cbiAgQElucHV0KCkgY29sdW1uSGlkZWFibGVDaGVja2VkOiAnc2hvdycgfCAnaGlkZScgPVxuICAgIHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5IaWRlYWJsZUNoZWNrZWQgPz8gJ3Nob3cnO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHNvcnRhYmxlLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgY29sdW1uU29ydGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uU29ydGFibGUgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBwaW5uYWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGNvbHVtblBpbm5hYmxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtblBpbm5hYmxlID8/IHRydWU7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbHVtbiBpcyBoaWRlZCBvciBpcyBzb3J0ZWQuICovXG4gIEBPdXRwdXQoKSBjb2x1bW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE10eEdyaWRDb2x1bW5bXT4oKTtcbiAgLyoqIFRoZSBvcHRpb25zIGZvciB0aGUgY29sdW1uIHBpbiBsaXN0LiAqL1xuICBASW5wdXQoKSBjb2x1bW5QaW5PcHRpb25zOiBNdHhHcmlkQ29sdW1uUGluT3B0aW9uW10gPVxuICAgIHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5QaW5PcHRpb25zID8/IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNob3dDb2x1bW5NZW51QnV0dG9uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dDb2x1bW5NZW51QnV0dG9uID8/IHRydWU7XG4gIC8qKiBUaGUgdGV4dCBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvblRleHQgPz8gJyc7XG4gIC8qKiBUaGUgdHlwZSBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblR5cGU6IE10eEdyaWRCdXR0b25UeXBlID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvblR5cGUgPz8gJ3N0cm9rZWQnO1xuICAvKiogVGhlIGNvbG9yIGZvciB0aGUgY29sdW1uIG1lbnUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51QnV0dG9uQ29sb3I6IFRoZW1lUGFsZXR0ZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51QnV0dG9uQ29sb3I7XG4gIC8qKiBUaGUgY2xhc3MgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25DbGFzcyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51QnV0dG9uQ2xhc3MgPz8gJyc7XG4gIC8qKiBUaGUgaWNvbiBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkljb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkljb24gPz8gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uLW1lbnUncyBoZWFkZXIuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBzaG93Q29sdW1uTWVudUhlYWRlciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Q29sdW1uTWVudUhlYWRlciA/PyBmYWxzZTtcbiAgLyoqIFRoZSB0ZXh0IGZvciB0aGUgY29sdW1uLW1lbnUncyBoZWFkZXIuICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVIZWFkZXJUZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVIZWFkZXJUZXh0ID8/ICdDb2x1bW5zIEhlYWRlcic7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGhlYWRlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGhlIGNvbHVtbi1tZW51J3MgZm9vdGVyLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2hvd0NvbHVtbk1lbnVGb290ZXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd0NvbHVtbk1lbnVGb290ZXIgPz8gZmFsc2U7XG4gIC8qKiBUaGUgdGV4dCBmb3IgdGhlIGNvbHVtbi1tZW51J3MgZm9vdGVyLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51Rm9vdGVyVGV4dCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51Rm9vdGVyVGV4dCA/PyAnQ29sdW1ucyBGb290ZXInO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgY29sdW1uLW1lbnUncyBmb290ZXIuICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVGb290ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gPT09PT0gTm8gUmVzdWx0ID09PT09XG5cbiAgLyoqIFRoZSBkaXNwbGF5ZWQgdGV4dCBmb3IgdGhlIGVtcHR5IGRhdGEuICovXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGV4dCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5ub1Jlc3VsdFRleHQgPz8gJ05vIHJlY29yZHMgZm91bmQnO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgZW1wdHkgZGF0YS4gKi9cbiAgQElucHV0KCkgbm9SZXN1bHRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZ2V0IF9oYXNOb1Jlc3VsdCgpIHtcbiAgICByZXR1cm4gKCF0aGlzLmRhdGFTb3VyY2UuZGF0YSB8fCB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGggPT09IDApICYmICF0aGlzLmxvYWRpbmc7XG4gIH1cblxuICAvLyA9PT09PSBDZWxsIFRlbXBsYXRlcyA9PT09PVxuXG4gIC8qKiBUaGUgaGVhZGVyJ3MgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQuICovXG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGU7XG4gIC8qKiBUaGUgaGVhZGVyJ3MgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQgZXhjbHVkZSBzb3J0LiAqL1xuICBASW5wdXQoKSBoZWFkZXJFeHRyYVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGU7XG4gIC8qKiBUaGUgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQuICovXG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuXG4gIC8vID09PT09IFJvdyBUZW1wbGF0ZXMgPT09PT1cblxuICAvKiogV2hldGhlciB0byB1c2UgY3VzdG9tIHJvdyB0ZW1wbGF0ZS4gSWYgdHJ1ZSwgeW91IHNob3VsZCBkZWZpbmUgYSBtYXRSb3dEZWYuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1c2VDb250ZW50Um93VGVtcGxhdGUgPSBmYWxzZTtcbiAgLy8gVE9ETzogSXQgY2FuJ3QgdXNlIHRvZ2V0aGVyIHdpdGggYHVzZUNvbnRlbnRSb3dUZW1wbGF0ZWBcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHVzZUNvbnRlbnRIZWFkZXJSb3dUZW1wbGF0ZSA9IGZhbHNlO1xuICAvLyBUT0RPOiBJdCdzIG5vdCB3b3JraW5nXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1c2VDb250ZW50Rm9vdGVyUm93VGVtcGxhdGUgPSBmYWxzZTtcblxuICAvLyA9PT09PSBTdW1tYXJ5ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc3VtbWFyeS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dTdW1tYXJ5ID0gZmFsc2U7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBzdW1tYXJ5LiAqL1xuICBASW5wdXQoKSBzdW1tYXJ5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZTtcblxuICAvLyBUT0RPOiBTdW1tYXJ5IGRpc3BsYXkgY29uZGl0aW9uc1xuICBnZXQgX3doZXRoZXJTaG93U3VtbWFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U3VtbWFyeTtcbiAgfVxuXG4gIC8vID09PT09IFNpZGUgQmFyID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2lkZWJhci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dTaWRlYmFyID0gZmFsc2U7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBzaWRlYmFyLiAqL1xuICBASW5wdXQoKSBzaWRlYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IFN0YXR1cyBCYXIgPT09PT1cblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBzdGF0dXMgYmFyLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd1N0YXR1c2JhciA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgc3RhdHVzIGJhci4gKi9cbiAgQElucHV0KCkgc3RhdHVzYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBUaGUgY2hhbmdlZCByZWNvcmQgb2Ygcm93IGRhdGEuICovXG4gIHJvd0NoYW5nZVJlY29yZD86IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF91dGlsczogTXR4R3JpZFV0aWxzLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTVRYX0dSSURfREVGQVVMVF9PUFRJT05TKVxuICAgIHByaXZhdGUgX2RlZmF1bHRPcHRpb25zPzogTXR4R3JpZERlZmF1bHRPcHRpb25zXG4gICkge31cblxuICBkZXRlY3RDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIF9nZXRDb2xEYXRhKGRhdGE6IGFueVtdLCBjb2xEZWY6IE10eEdyaWRDb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuZ2V0Q29sRGF0YShkYXRhLCBjb2xEZWYpO1xuICB9XG5cbiAgX2lzQ29sdW1uSGlkZShpdGVtOiBNdHhHcmlkQ29sdW1uKSB7XG4gICAgcmV0dXJuIGl0ZW0uaGlkZSAhPT0gdW5kZWZpbmVkID8gaXRlbS5oaWRlIDogaXRlbS5zaG93ICE9PSB1bmRlZmluZWQgPyAhaXRlbS5zaG93IDogZmFsc2U7XG4gIH1cblxuICAvLyBXYWl0aW5nIGZvciBhc3luYyBkYXRhXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLl9jb3VudFBpbm5lZFBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiAhdGhpcy5faXNDb2x1bW5IaWRlKGl0ZW0pKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0uZmllbGQpO1xuXG4gICAgaWYgKHRoaXMuc2hvd0NvbHVtbk1lbnVCdXR0b24pIHtcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLmhpZGUgPSB0aGlzLl9pc0NvbHVtbkhpZGUoaXRlbSk7XG4gICAgICAgIGl0ZW0uc2hvdyA9ICFpdGVtLmhpZGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlICYmICF0aGlzLmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQoJ010eEdyaWRDaGVja2JveENvbHVtbkRlZicpO1xuICAgIH1cblxuICAgIC8vIFdlIHNob3VsZCBjb3B5IGVhY2ggaXRlbSBvZiBkYXRhIGZvciBleHBhbnNpb24gZGF0YVxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzID0gW107IC8vIHJlc2V0XG5cbiAgICAgIHRoaXMuZGF0YT8uZm9yRWFjaChfID0+IHtcbiAgICAgICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXMucHVzaCh7IGV4cGFuZGVkOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMucm93U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odGhpcy5tdWx0aVNlbGVjdGFibGUsIHRoaXMucm93U2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5kYXRhKTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2VPbkZyb250ID8gdGhpcy5wYWdpbmF0b3IgOiBudWxsO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0T25Gcm9udCA/IHRoaXMuc29ydCA6IG51bGw7XG5cbiAgICAvLyBPbmx5IHNjcm9sbCB0b3Agd2l0aCBkYXRhIGNoYW5nZVxuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wKDApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWdlT25Gcm9udCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNvcnRPbkZyb250KSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dEZWZzPy5sZW5ndGggPiAwICYmIHRoaXMudXNlQ29udGVudFJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLnJvd0RlZnMuZm9yRWFjaChyb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRSb3dEZWYocm93RGVmKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlYWRlclJvd0RlZnM/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuaGVhZGVyUm93RGVmcy5mb3JFYWNoKGhlYWRlclJvd0RlZiA9PiB0aGlzLnRhYmxlLmFkZEhlYWRlclJvd0RlZihoZWFkZXJSb3dEZWYpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9vdGVyUm93RGVmcz8ubGVuZ3RoID4gMCAmJiB0aGlzLnVzZUNvbnRlbnRGb290ZXJSb3dUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5mb290ZXJSb3dEZWZzLmZvckVhY2goZm9vdGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkRm9vdGVyUm93RGVmKGZvb3RlclJvd0RlZikpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge31cblxuICBfY291bnRQaW5uZWRQb3NpdGlvbigpIHtcbiAgICBjb25zdCBjb3VudCA9IChhY2M6IG51bWJlciwgY3VyOiBNdHhHcmlkQ29sdW1uKSA9PiBhY2MgKyBwYXJzZUZsb2F0KGN1ci53aWR0aCB8fCAnODBweCcpO1xuXG4gICAgY29uc3QgcGlubmVkTGVmdENvbHMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wucGlubmVkICYmIGNvbC5waW5uZWQgPT09ICdsZWZ0Jyk7XG4gICAgcGlubmVkTGVmdENvbHMuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICBpdGVtLmxlZnQgPSBwaW5uZWRMZWZ0Q29scy5zbGljZSgwLCBpZHgpLnJlZHVjZShjb3VudCwgMCkgKyAncHgnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGlubmVkUmlnaHRDb2xzID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKGNvbCA9PiBjb2wucGlubmVkICYmIGNvbC5waW5uZWQgPT09ICdyaWdodCcpXG4gICAgICAucmV2ZXJzZSgpO1xuICAgIHBpbm5lZFJpZ2h0Q29scy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgIGl0ZW0ucmlnaHQgPSBwaW5uZWRSaWdodENvbHMuc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnQsIDApICsgJ3B4JztcbiAgICB9KTtcbiAgfVxuXG4gIF9nZXRJbmRleChpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLCBkYXRhSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleCA9PT0gdW5kZWZpbmVkID8gZGF0YUluZGV4IDogaW5kZXg7XG4gIH1cblxuICBfb25Tb3J0Q2hhbmdlKHNvcnQ6IFNvcnQpIHtcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcbiAgfVxuXG4gIF9vblJvd0RhdGFDaGFuZ2UocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0aGlzLnJvd0NoYW5nZVJlY29yZCA9IHJlY29yZDtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKiBFeHBhbnNpb24gY2hhbmdlIGV2ZW50ICovXG4gIF9vbkV4cGFuc2lvbkNoYW5nZShcbiAgICBleHBhbnNpb25SZWY6IE10eEdyaWRFeHBhbnNpb25Ub2dnbGUsXG4gICAgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjb2x1bW46IE10eEdyaWRDb2x1bW4sXG4gICAgaW5kZXg6IG51bWJlclxuICApIHtcbiAgICB0aGlzLmV4cGFuc2lvbkNoYW5nZS5lbWl0KHsgZXhwYW5kZWQ6IGV4cGFuc2lvblJlZi5leHBhbmRlZCwgZGF0YTogcm93RGF0YSwgaW5kZXgsIGNvbHVtbiB9KTtcbiAgfVxuXG4gIC8qKiBDZWxsIHNlbGVjdCBldmVudCAqL1xuICBfc2VsZWN0Q2VsbChcbiAgICBjZWxsUmVmOiBNdHhHcmlkU2VsZWN0YWJsZUNlbGwsXG4gICAgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjb2xEZWY6IE10eEdyaWRDb2x1bW5cbiAgKTogdm9pZCB7XG4gICAgLy8gSWYgbm90IHRoZSBzYW1lIGNlbGxcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsICE9PSBjZWxsUmVmKSB7XG4gICAgICBjb25zdCBjb2xWYWx1ZSA9IHRoaXMuX3V0aWxzLmdldENlbGxWYWx1ZShyb3dEYXRhLCBjb2xEZWYpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uID0gW107IC8vIHJlc2V0XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb24ucHVzaCh7IGNlbGxEYXRhOiBjb2xWYWx1ZSwgcm93RGF0YSwgY29sRGVmIH0pO1xuXG4gICAgICB0aGlzLmNlbGxTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuY2VsbFNlbGVjdGlvbik7XG5cbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENlbGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDZWxsLmRlc2VsZWN0KCk7IC8vIHRoZSBzZWxlY3RlZENlbGwgd2lsbCBiZSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3RlZENlbGwgPSBjZWxsUmVmLnNlbGVjdGVkID8gY2VsbFJlZiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBSb3cgc2VsZWN0IGV2ZW50ICovXG4gIF9zZWxlY3RSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJvd1NlbGVjdGFibGUgJiZcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvd0RhdGEsIGluZGV4KSAmJlxuICAgICAgIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveD8uKHJvd0RhdGEsIGluZGV4KSAmJlxuICAgICAgIXRoaXMuZGlzYWJsZVJvd0NsaWNrU2VsZWN0aW9uXG4gICAgKSB7XG4gICAgICAvLyBtZXRhS2V5IC0+IGNvbW1hbmQga2V5XG4gICAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3Rpb25XaXRoQ2xpY2sgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93RGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHsgZXZlbnQsIHJvd0RhdGEsIGluZGV4IH0pO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cbiAgX2lzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcihcbiAgICAgIChyb3csIGluZGV4KSA9PiAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3csIGluZGV4KVxuICAgICkubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTZWxlY3QgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgX3RvZ2dsZU1hc3RlckNoZWNrYm94KCkge1xuICAgIHRoaXMuX2lzQWxsU2VsZWN0ZWQoKVxuICAgICAgPyB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpXG4gICAgICA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkPy4ocm93LCBpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdChyb3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3Qgbm9ybWFsIHJvdyAqL1xuICBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb24udG9nZ2xlKHJvdyk7XG4gICAgdGhpcy5yb3dTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKiBDb2x1bW4gY2hhbmdlIGV2ZW50ICovXG4gIF9vbkNvbHVtbkNoYW5nZShjb2x1bW5zOiBNdHhHcmlkQ29sdW1uW10pIHtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KGNvbHVtbnMpO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5nZXREaXNwbGF5ZWRDb2x1bW5GaWVsZHMoY29sdW1ucykpO1xuXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3gpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy51bnNoaWZ0KCdNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWYnKTtcbiAgICB9XG4gIH1cblxuICBnZXREaXNwbGF5ZWRDb2x1bW5GaWVsZHMoY29sdW1uczogTXR4R3JpZENvbHVtbltdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpZWxkcyA9IGNvbHVtbnNcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiAodGhpcy5jb2x1bW5IaWRlYWJsZUNoZWNrZWQgPT09ICdzaG93JyA/IGl0ZW0uc2hvdyA6ICFpdGVtLmhpZGUpKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0uZmllbGQpO1xuICAgIHJldHVybiBmaWVsZHM7XG4gIH1cblxuICAvKiogQ3VzdG9taXplIGV4cGFuc2lvbiBldmVudCAqL1xuICB0b2dnbGVFeHBhbnNpb24oaW5kZXg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5leHBhbmRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgZXhwYW5kYWJsZWAgc2hvdWxkIGJlIHNldCB0cnVlLicpO1xuICAgIH1cbiAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlc1tpbmRleF0uZXhwYW5kZWQgPSAhdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkO1xuICAgIHJldHVybiB0aGlzLmV4cGFuc2lvblJvd1N0YXRlc1tpbmRleF0uZXhwYW5kZWQ7XG4gIH1cblxuICAvKiogU2Nyb2xsIHRvIHRvcCB3aGVuIHR1cm4gdG8gdGhlIG5leHQgcGFnZS4gKi9cbiAgX29uUGFnZShlOiBQYWdlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5wYWdlT25Gcm9udCkge1xuICAgICAgdGhpcy5zY3JvbGxUb3AoMCk7XG4gICAgfVxuICAgIHRoaXMucGFnZS5lbWl0KGUpO1xuICB9XG5cbiAgc2Nyb2xsVG9wKHZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHwgdm9pZCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFibGVDb250YWluZXIgJiYgIXRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbExlZnQodmFsdWU/OiBudW1iZXIpOiBudW1iZXIgfCB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFibGVDb250YWluZXIgJiYgIXRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBfY29udGV4dG1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnJvd0NvbnRleHRNZW51LmVtaXQoeyBldmVudCwgcm93RGF0YSwgaW5kZXggfSk7XG4gIH1cbn1cbiIsIjwhLS0gUHJvZ3Jlc3MgYmFyLS0+XG5AaWYgKGxvYWRpbmcpIHtcbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXByb2dyZXNzXCI+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvZGl2PlxufVxuXG48IS0tIFRvb2xiYXIgLS0+XG5AaWYgKHNob3dUb29sYmFyKSB7XG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXRvb2xiYXItY29udGVudFwiPlxuICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmICh0b29sYmFyVGl0bGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhci10aXRsZVwiPnt7dG9vbGJhclRpdGxlfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyLWFjdGlvbnNcIj5cbiAgICAgIEBpZiAoc2hvd0NvbHVtbk1lbnVCdXR0b24pIHtcbiAgICAgICAgPG10eC1ncmlkLWNvbHVtbi1tZW51ICNjb2x1bW5NZW51XG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgW2J1dHRvblRleHRdPVwiY29sdW1uTWVudUJ1dHRvblRleHRcIlxuICAgICAgICAgIFtidXR0b25UeXBlXT1cImNvbHVtbk1lbnVCdXR0b25UeXBlXCJcbiAgICAgICAgICBbYnV0dG9uQ29sb3JdPVwiY29sdW1uTWVudUJ1dHRvbkNvbG9yXCJcbiAgICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY29sdW1uTWVudUJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICBbYnV0dG9uSWNvbl09XCJjb2x1bW5NZW51QnV0dG9uSWNvblwiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwiY29sdW1uSGlkZWFibGVcIlxuICAgICAgICAgIFtzZWxlY3RhYmxlQ2hlY2tlZF09XCJjb2x1bW5IaWRlYWJsZUNoZWNrZWRcIlxuICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW5Tb3J0YWJsZVwiXG4gICAgICAgICAgW3Bpbm5hYmxlXT1cImNvbHVtblBpbm5hYmxlXCJcbiAgICAgICAgICBbc2hvd0hlYWRlcl09XCJzaG93Q29sdW1uTWVudUhlYWRlclwiXG4gICAgICAgICAgW2hlYWRlclRleHRdPVwiY29sdW1uTWVudUhlYWRlclRleHRcIlxuICAgICAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJjb2x1bW5NZW51SGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInNob3dDb2x1bW5NZW51Rm9vdGVyXCJcbiAgICAgICAgICBbZm9vdGVyVGV4dF09XCJjb2x1bW5NZW51Rm9vdGVyVGV4dFwiXG4gICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImNvbHVtbk1lbnVGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgW3Bpbk9wdGlvbnNdPVwiY29sdW1uUGluT3B0aW9uc1wiXG4gICAgICAgICAgKGNvbHVtbkNoYW5nZSk9XCJfb25Db2x1bW5DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L210eC1ncmlkLWNvbHVtbi1tZW51PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cblxuPGRpdiBjbGFzcz1cIm10eC1ncmlkLW1haW4gbXR4LWdyaWQtbGF5b3V0XCI+XG4gIDwhLS0gVGFibGUgY29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbnRlbnQgbXR4LWdyaWQtbGF5b3V0XCI+XG4gICAgPGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJtYXQtdGFibGUtY29udGFpbmVyXCIgW2NsYXNzLm1hdC10YWJsZS13aXRoLWRhdGFdPVwiIV9oYXNOb1Jlc3VsdFwiPlxuICAgICAgQGlmICghY29sdW1uUmVzaXphYmxlKSB7XG4gICAgICAgIDx0YWJsZSBtYXQtdGFibGVcbiAgICAgICAgICBbY2xhc3NdPVwieydtYXQtdGFibGUtaG92ZXInOiByb3dIb3ZlciwgJ21hdC10YWJsZS1zdHJpcGVkJzogcm93U3RyaXBlZCwgJ21hdC10YWJsZS1leHBhbmRhYmxlJzogZXhwYW5kYWJsZX1cIlxuICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4cGFuZGFibGVcIlxuICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICBbbWF0U29ydERpc2FibGVDbGVhcl09XCJzb3J0RGlzYWJsZUNsZWFyXCJcbiAgICAgICAgICBbbWF0U29ydERpc2FibGVkXT1cInNvcnREaXNhYmxlZFwiXG4gICAgICAgICAgW21hdFNvcnRTdGFydF09XCJzb3J0U3RhcnRcIlxuICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIl9vblNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeVwiPlxuICAgICAgICAgIEBpZiAocm93U2VsZWN0YWJsZSAmJiAhaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRDaGVja2JveENvbHVtbkRlZlwiPlxuICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAobXVsdGlTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIF9pc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhX2lzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gX3RvZ2dsZU1hc3RlckNoZWNrYm94KCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgQGlmICghKHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3ggJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveChyb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSkpKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQgJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkKHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93KSA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj48L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbC5waW5uZWQ9PT0nbGVmdCdcIiBbc3RpY2t5RW5kXT1cImNvbC5waW5uZWQ9PT0ncmlnaHQnXCI+XG4gICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sIHwgY29sQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LWxlZnRdPVwiY29sLnBpbm5lZCA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1yaWdodF09XCJjb2wucGlubmVkID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ21pbi13aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaGVhZGVyVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlclRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCRhbnkoaGVhZGVyVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2wuc29ydFByb3A/LmlkIHx8IGNvbC5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbC5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZUNsZWFyXT1cImNvbC5zb3J0UHJvcD8uZGlzYWJsZUNsZWFyID8/IHNvcnREaXNhYmxlQ2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sLnNvcnRQcm9wPy5hcnJvd1Bvc2l0aW9uIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sLnNvcnRQcm9wPy5zdGFydCFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNob3dFeHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbC5oZWFkZXIgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2wuc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbWF0LXNvcnQtaGVhZGVyLWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLDEzSDE1VjExSDNNMyw2VjhIMjFWNk0zLDE4SDlWMTZIM1YxOFpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyRXh0cmFUcGxCYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaGVhZGVyRXh0cmFUZW1wbGF0ZSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7XCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sIHwgY29sQ2xhc3M6IHJvdzogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktbGVmdF09XCJjb2wucGlubmVkID09PSAnbGVmdCdcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LXJpZ2h0XT1cImNvbC5waW5uZWQgPT09ICdyaWdodCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbWluLXdpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCJcbiAgICAgICAgICAgICAgICBtdHgtZ3JpZC1zZWxlY3RhYmxlLWNlbGwgW2NlbGxTZWxlY3RhYmxlXT1cImNlbGxTZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2VsbFNlbGVjdGVkQ2hhbmdlKT1cIl9zZWxlY3RDZWxsKCRldmVudCwgcm93LCBjb2wpXCI+XG4gICAgICAgICAgICAgICAgQGlmIChjZWxsVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoJGFueShjZWxsVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY2VsbFRlbXBsYXRlKVtjb2wuZmllbGRdXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb2wuY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wuY2VsbFRlbXBsYXRlIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2wuc2hvd0V4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm10eC1ncmlkLXJvdy1leHBhbmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIG10eC1ncmlkLWV4cGFuc2lvbi10b2dnbGUgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsob3BlbmVkKV09XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVDaGFuZ2UpPVwiX29uRXhwYW5zaW9uQ2hhbmdlKCRldmVudCwgcm93LCBjb2wsIGRhdGFJbmRleCk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLXJvdy1leHBhbmQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxtdHgtZ3JpZC1jZWxsIFtyb3dEYXRhXT1cInJvd1wiIFtjb2xEZWZdPVwiY29sXCIgW3BsYWNlaG9sZGVyXT1cImVtcHR5VmFsdWVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocm93RGF0YUNoYW5nZSk9XCJfb25Sb3dEYXRhQ2hhbmdlKCRldmVudClcIj48L210eC1ncmlkLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1sZWZ0XT1cImNvbC5waW5uZWQgPT09ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktcmlnaHRdPVwiY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdtaW4td2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbC5zaG93RXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1wbGFjZWhvbGRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChzdW1tYXJ5VGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sLCBkYXRhOiBkYXRhIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKCRhbnkoc3VtbWFyeVRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBfZ2V0Q29sRGF0YShkYXRhLCBjb2wpLCBjb2xEYXRhOiBfZ2V0Q29sRGF0YShkYXRhLCBjb2wpLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPG10eC1ncmlkLWNlbGwgW3N1bW1hcnldPVwidHJ1ZVwiIFtkYXRhXT1cImRhdGFcIiBbY29sRGVmXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVtcHR5VmFsdWVQbGFjZWhvbGRlclwiPjwvbXR4LWdyaWQtY2VsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghdXNlQ29udGVudEhlYWRlclJvd1RlbXBsYXRlKSB7XG4gICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXVzZUNvbnRlbnRSb3dUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPHRyIG1hdC1yb3dcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyb3cgfCByb3dDbGFzczogaW5kZXg6IGRhdGFJbmRleDogcm93Q2xhc3NGb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwicm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJfc2VsZWN0Um93KCRldmVudCwgcm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCJcbiAgICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIl9jb250ZXh0bWVudSgkZXZlbnQsIHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChfd2hldGhlclNob3dTdW1tYXJ5KSB7XG4gICAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoZXhwYW5kYWJsZSkge1xuICAgICAgICAgICAgPCEtLSBFeHBhbmRlZCBDb250ZW50IENvbHVtbiAtIFRoZSBleHBhbmRhYmxlIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiTXR4R3JpZEV4cGFuc2lvbkNvbHVtbkRlZlwiPlxuICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1kZXRhaWxcIlxuICAgICAgICAgICAgICAgICAgW0BleHBhbnNpb25dPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbnNpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBkYXRhSW5kZXgsIGV4cGFuZGVkOiBleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCB9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvd1xuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydNdHhHcmlkRXhwYW5zaW9uQ29sdW1uRGVmJ107IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvblwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGFibGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPCEtLSBUT0RPOiBVc2UgZmxleGJveC1iYXNlZCBtYXQtdGFibGUgLS0+XG4gICAgICAgIDx0YWJsZSBtYXQtdGFibGVcbiAgICAgICAgICBjb2x1bW5SZXNpemVcbiAgICAgICAgICBbY2xhc3NdPVwieydtYXQtdGFibGUtaG92ZXInOiByb3dIb3ZlciwgJ21hdC10YWJsZS1zdHJpcGVkJzogcm93U3RyaXBlZCwgJ21hdC10YWJsZS1leHBhbmRhYmxlJzogZXhwYW5kYWJsZX1cIlxuICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4cGFuZGFibGVcIlxuICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICBbbWF0U29ydERpc2FibGVDbGVhcl09XCJzb3J0RGlzYWJsZUNsZWFyXCJcbiAgICAgICAgICBbbWF0U29ydERpc2FibGVkXT1cInNvcnREaXNhYmxlZFwiXG4gICAgICAgICAgW21hdFNvcnRTdGFydF09XCJzb3J0U3RhcnRcIlxuICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIl9vblNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeVwiPlxuICAgICAgICAgIEBpZiAocm93U2VsZWN0YWJsZSAmJiAhaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRDaGVja2JveENvbHVtbkRlZlwiPlxuICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAobXVsdGlTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIF9pc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhX2lzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gX3RvZ2dsZU1hc3RlckNoZWNrYm94KCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+XG4gICAgICAgICAgICAgICAgQGlmICghKHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3ggJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveChyb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSkpKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQgJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkKHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93KSA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj48L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2wuZmllbGRcIlxuICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbC5waW5uZWQ9PT0nbGVmdCdcIiBbc3RpY2t5RW5kXT1cImNvbC5waW5uZWQ9PT0ncmlnaHQnXCI+XG4gICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sIHwgY29sQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LWxlZnRdPVwiY29sLnBpbm5lZCA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1yaWdodF09XCJjb2wucGlubmVkID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiXG4gICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2wucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICBbbWF0UmVzaXphYmxlTWluV2lkdGhQeF09XCJjb2wubWluV2lkdGhcIiBbbWF0UmVzaXphYmxlTWF4V2lkdGhQeF09XCJjb2wubWF4V2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGhlYWRlclRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkYW55KGhlYWRlclRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFttYXQtc29ydC1oZWFkZXJdPVwiY29sLnNvcnRQcm9wPy5pZCB8fCBjb2wuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2wuc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVDbGVhcl09XCJjb2wuc29ydFByb3A/LmRpc2FibGVDbGVhciA/PyBzb3J0RGlzYWJsZUNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbC5zb3J0UHJvcD8uYXJyb3dQb3NpdGlvbiFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0XT1cImNvbC5zb3J0UHJvcD8uc3RhcnQhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zaG93RXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLXBsYWNlaG9sZGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjb2wuaGVhZGVyIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG1hdC1zb3J0LWhlYWRlci1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMywxM0gxNVYxMUgzTTMsNlY4SDIxVjZNMywxOEg5VjE2SDNWMThaXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVHBsQmFzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhlYWRlckV4dHJhVGVtcGxhdGUsIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzOiByb3c6IHJvd0NoYW5nZVJlY29yZCA6cm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LWxlZnRdPVwiY29sLnBpbm5lZCA9PT0gJ2xlZnQnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXRhYmxlLXN0aWNreS1yaWdodF09XCJjb2wucGlubmVkID09PSAncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiXG4gICAgICAgICAgICAgICAgbXR4LWdyaWQtc2VsZWN0YWJsZS1jZWxsIFtjZWxsU2VsZWN0YWJsZV09XCJjZWxsU2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgKGNlbGxTZWxlY3RlZENoYW5nZSk9XCJfc2VsZWN0Q2VsbCgkZXZlbnQsIHJvdywgY29sKVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2VsbFRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY2VsbFRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKCRhbnkoY2VsbFRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNlbGxUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLmNlbGxUZW1wbGF0ZSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnNob3dFeHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtdHgtZ3JpZC1yb3ctZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBtdHgtZ3JpZC1leHBhbnNpb24tdG9nZ2xlIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG9wZW5lZCldPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cIl9vbkV4cGFuc2lvbkNoYW5nZSgkZXZlbnQsIHJvdywgY29sLCBkYXRhSW5kZXgpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1yb3ctZXhwYW5kLWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbcm93RGF0YV09XCJyb3dcIiBbY29sRGVmXT1cImNvbFwiIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2UpPVwiX29uUm93RGF0YUNoYW5nZSgkZXZlbnQpXCI+PC9tdHgtZ3JpZC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1hdC10YWJsZS1zdGlja3ktbGVmdF09XCJjb2wucGlubmVkID09PSAnbGVmdCdcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFibGUtc3RpY2t5LXJpZ2h0XT1cImNvbC5waW5uZWQgPT09ICdyaWdodCdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb2wuc2hvd0V4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc3VtbWFyeVRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCwgZGF0YTogZGF0YSB9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgQGlmICgkYW55KHN1bW1hcnlUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpW2NvbC5maWVsZF1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGF0YTogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGVmOiBjb2wgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxtdHgtZ3JpZC1jZWxsIFtzdW1tYXJ5XT1cInRydWVcIiBbZGF0YV09XCJkYXRhXCIgW2NvbERlZl09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIj48L210eC1ncmlkLWNlbGw+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIXVzZUNvbnRlbnRIZWFkZXJSb3dUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCF1c2VDb250ZW50Um93VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDx0ciBtYXQtcm93XG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwicm93IHwgcm93Q2xhc3M6IGluZGV4OiBkYXRhSW5kZXg6IHJvd0NsYXNzRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdFJvdygkZXZlbnQsIHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXG4gICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJfY29udGV4dG1lbnUoJGV2ZW50LCByb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoX3doZXRoZXJTaG93U3VtbWFyeSkge1xuICAgICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGV4cGFuZGFibGUpIHtcbiAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZXhwYW5kYWJsZSByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRFeHBhbnNpb25Db2x1bW5EZWZcIj5cbiAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tZGV0YWlsXCJcbiAgICAgICAgICAgICAgICAgIFtAZXhwYW5zaW9uXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5zaW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogZGF0YUluZGV4LCBleHBhbmRlZDogZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRyIG1hdC1yb3dcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnTXR4R3JpZEV4cGFuc2lvbkNvbHVtbkRlZiddOyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb25cIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RhYmxlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBObyByZXN1bHQgLS0+XG4gICAgQGlmIChfaGFzTm9SZXN1bHQpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1uby1yZXN1bHRcIj5cbiAgICAgICAgQGlmIChub1Jlc3VsdFRlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUmVzdWx0VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICB7e25vUmVzdWx0VGV4dH19XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBUb29sIHNpZGViYXIgLS0+XG4gIEBpZiAoc2hvd1NpZGViYXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtc2lkZWJhclwiPlxuICAgICAgQGlmIChzaWRlYmFyVGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGViYXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibXR4LWdyaWQtZm9vdGVyXCI+XG4gIDwhLS0gU3RhdHVzIEJhciAtLT5cbiAgQGlmIChzaG93U3RhdHVzYmFyKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXN0YXR1c2JhclwiPlxuICAgICAgQGlmIChzdGF0dXNiYXJUZW1wbGF0ZSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RhdHVzYmFyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtcGFnaW5hdGlvblwiPlxuICAgIEBpZiAocGFnaW5hdGlvblRlbXBsYXRlKSB7XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFnaW5hdGlvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxtYXQtcGFnaW5hdG9yIFtjbGFzcy5tYXQtcGFnaW5hdG9yLWhpZGRlbl09XCIhc2hvd1BhZ2luYXRvclwiXG4gICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJzaG93Rmlyc3RMYXN0QnV0dG9uc1wiXG4gICAgICAgIFtsZW5ndGhdPVwibGVuZ3RoXCJcbiAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgIFtoaWRlUGFnZVNpemVdPVwiaGlkZVBhZ2VTaXplXCJcbiAgICAgICAgKHBhZ2UpPVwiX29uUGFnZSgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2VEaXNhYmxlZFwiPlxuICAgICAgPC9tYXQtcGFnaW5hdG9yPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBIZWFkZXIgdGVtcGxhdGUgZm9yIGV4dHJhIGNvbnRlbnQgLS0+XG48bmctdGVtcGxhdGUgI2hlYWRlckV4dHJhVHBsQmFzZSBsZXQtaGVhZGVyRXh0cmFUZW1wbGF0ZSBsZXQtY29sPVwiY29sRGVmXCI+XG4gIEBpZiAoaGVhZGVyRXh0cmFUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWYpIHtcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyRXh0cmFUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAoJGFueShoZWFkZXJFeHRyYVRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmKSB7XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyRXh0cmFUZW1wbGF0ZVtjb2wuZmllbGRdXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -5,6 +5,7 @@ export * from './grid';
5
5
  export * from './cell';
6
6
  export * from './column-menu';
7
7
  export * from './expansion-toggle';
8
+ export * from './selectable-cell';
8
9
  export * from './interfaces';
9
10
  export { TABLE_PROVIDERS as MAT_TABLE_PROVIDERS, FLEX_PROVIDERS as MAT_FLEX_PROVIDERS, TABLE_HOST_BINDINGS as MAT_TABLE_HOST_BINDINGS, FLEX_HOST_BINDINGS as MAT_FLEX_HOST_BINDINGS, AbstractMatColumnResize, } from './column-resize/column-resize-directives/common';
10
11
  export { MatColumnResize } from './column-resize/column-resize-directives/column-resize';
@@ -14,4 +15,4 @@ export { MatResizable } from './column-resize/resizable-directives/resizable';
14
15
  export { MatColumnResizeOverlayHandle } from './column-resize/overlay-handle';
15
16
  export { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER as MAT_TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER, MatFlexTableResizeStrategy, FLEX_RESIZE_STRATEGY_PROVIDER as MAT_FLEX_RESIZE_STRATEGY_PROVIDER, } from './column-resize/resize-strategy';
16
17
  export { MatColumnResizeCommonModule, MatColumnResizeModule, } from './column-resize/column-resize-module';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsT0FBTyxFQUNMLGVBQWUsSUFBSSxtQkFBbUIsRUFDdEMsY0FBYyxJQUFJLGtCQUFrQixFQUNwQyxtQkFBbUIsSUFBSSx1QkFBdUIsRUFDOUMsa0JBQWtCLElBQUksc0JBQXNCLEVBQzVDLHVCQUF1QixHQUN4QixNQUFNLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixJQUFJLDJCQUEyQixFQUN0RCxnQkFBZ0IsSUFBSSxvQkFBb0IsR0FDekMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLDJDQUEyQyxJQUFJLCtDQUErQyxFQUM5RiwwQkFBMEIsRUFDMUIsNkJBQTZCLElBQUksaUNBQWlDLEdBQ25FLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixxQkFBcUIsR0FDdEIsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ3JpZC1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZC1waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWQnO1xuZXhwb3J0ICogZnJvbSAnLi9jZWxsJztcbmV4cG9ydCAqIGZyb20gJy4vY29sdW1uLW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBhbnNpb24tdG9nZ2xlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQge1xuICBUQUJMRV9QUk9WSURFUlMgYXMgTUFUX1RBQkxFX1BST1ZJREVSUyxcbiAgRkxFWF9QUk9WSURFUlMgYXMgTUFUX0ZMRVhfUFJPVklERVJTLFxuICBUQUJMRV9IT1NUX0JJTkRJTkdTIGFzIE1BVF9UQUJMRV9IT1NUX0JJTkRJTkdTLFxuICBGTEVYX0hPU1RfQklORElOR1MgYXMgTUFUX0ZMRVhfSE9TVF9CSU5ESU5HUyxcbiAgQWJzdHJhY3RNYXRDb2x1bW5SZXNpemUsXG59IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLWRpcmVjdGl2ZXMvY29tbW9uJztcbmV4cG9ydCB7IE1hdENvbHVtblJlc2l6ZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLWRpcmVjdGl2ZXMvY29sdW1uLXJlc2l6ZSc7XG5leHBvcnQgeyBNYXRDb2x1bW5SZXNpemVGbGV4IH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb2x1bW4tcmVzaXplLWZsZXgnO1xuZXhwb3J0IHtcbiAgQWJzdHJhY3RNYXRSZXNpemFibGUsXG4gIFJFU0laQUJMRV9IT1NUX0JJTkRJTkdTIGFzIE1BVF9SRVNJWkFCTEVfSE9TVF9CSU5ESU5HUyxcbiAgUkVTSVpBQkxFX0lOUFVUUyBhcyBNQVRfUkVTSVpBQkxFX0lOUFVUUyxcbn0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL3Jlc2l6YWJsZS1kaXJlY3RpdmVzL2NvbW1vbic7XG5leHBvcnQgeyBNYXRSZXNpemFibGUgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUvcmVzaXphYmxlLWRpcmVjdGl2ZXMvcmVzaXphYmxlJztcbmV4cG9ydCB7IE1hdENvbHVtblJlc2l6ZU92ZXJsYXlIYW5kbGUgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUvb3ZlcmxheS1oYW5kbGUnO1xuZXhwb3J0IHtcbiAgVEFCTEVfTEFZT1VUX0ZJWEVEX1JFU0laRV9TVFJBVEVHWV9QUk9WSURFUiBhcyBNQVRfVEFCTEVfTEFZT1VUX0ZJWEVEX1JFU0laRV9TVFJBVEVHWV9QUk9WSURFUixcbiAgTWF0RmxleFRhYmxlUmVzaXplU3RyYXRlZ3ksXG4gIEZMRVhfUkVTSVpFX1NUUkFURUdZX1BST1ZJREVSIGFzIE1BVF9GTEVYX1JFU0laRV9TVFJBVEVHWV9QUk9WSURFUixcbn0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL3Jlc2l6ZS1zdHJhdGVneSc7XG5leHBvcnQge1xuICBNYXRDb2x1bW5SZXNpemVDb21tb25Nb2R1bGUsXG4gIE1hdENvbHVtblJlc2l6ZU1vZHVsZSxcbn0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtbW9kdWxlJztcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQ0wsZUFBZSxJQUFJLG1CQUFtQixFQUN0QyxjQUFjLElBQUksa0JBQWtCLEVBQ3BDLG1CQUFtQixJQUFJLHVCQUF1QixFQUM5QyxrQkFBa0IsSUFBSSxzQkFBc0IsRUFDNUMsdUJBQXVCLEdBQ3hCLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ2xHLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsdUJBQXVCLElBQUksMkJBQTJCLEVBQ3RELGdCQUFnQixJQUFJLG9CQUFvQixHQUN6QyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsMkNBQTJDLElBQUksK0NBQStDLEVBQzlGLDBCQUEwQixFQUMxQiw2QkFBNkIsSUFBSSxpQ0FBaUMsR0FDbkUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLHFCQUFxQixHQUN0QixNQUFNLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmlkLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLXBpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZCc7XG5leHBvcnQgKiBmcm9tICcuL2NlbGwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tbWVudSc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGFuc2lvbi10b2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RhYmxlLWNlbGwnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCB7XG4gIFRBQkxFX1BST1ZJREVSUyBhcyBNQVRfVEFCTEVfUFJPVklERVJTLFxuICBGTEVYX1BST1ZJREVSUyBhcyBNQVRfRkxFWF9QUk9WSURFUlMsXG4gIFRBQkxFX0hPU1RfQklORElOR1MgYXMgTUFUX1RBQkxFX0hPU1RfQklORElOR1MsXG4gIEZMRVhfSE9TVF9CSU5ESU5HUyBhcyBNQVRfRkxFWF9IT1NUX0JJTkRJTkdTLFxuICBBYnN0cmFjdE1hdENvbHVtblJlc2l6ZSxcbn0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb21tb24nO1xuZXhwb3J0IHsgTWF0Q29sdW1uUmVzaXplIH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb2x1bW4tcmVzaXplJztcbmV4cG9ydCB7IE1hdENvbHVtblJlc2l6ZUZsZXggfSBmcm9tICcuL2NvbHVtbi1yZXNpemUvY29sdW1uLXJlc2l6ZS1kaXJlY3RpdmVzL2NvbHVtbi1yZXNpemUtZmxleCc7XG5leHBvcnQge1xuICBBYnN0cmFjdE1hdFJlc2l6YWJsZSxcbiAgUkVTSVpBQkxFX0hPU1RfQklORElOR1MgYXMgTUFUX1JFU0laQUJMRV9IT1NUX0JJTkRJTkdTLFxuICBSRVNJWkFCTEVfSU5QVVRTIGFzIE1BVF9SRVNJWkFCTEVfSU5QVVRTLFxufSBmcm9tICcuL2NvbHVtbi1yZXNpemUvcmVzaXphYmxlLWRpcmVjdGl2ZXMvY29tbW9uJztcbmV4cG9ydCB7IE1hdFJlc2l6YWJsZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9yZXNpemFibGUtZGlyZWN0aXZlcy9yZXNpemFibGUnO1xuZXhwb3J0IHsgTWF0Q29sdW1uUmVzaXplT3ZlcmxheUhhbmRsZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS9vdmVybGF5LWhhbmRsZSc7XG5leHBvcnQge1xuICBUQUJMRV9MQVlPVVRfRklYRURfUkVTSVpFX1NUUkFURUdZX1BST1ZJREVSIGFzIE1BVF9UQUJMRV9MQVlPVVRfRklYRURfUkVTSVpFX1NUUkFURUdZX1BST1ZJREVSLFxuICBNYXRGbGV4VGFibGVSZXNpemVTdHJhdGVneSxcbiAgRkxFWF9SRVNJWkVfU1RSQVRFR1lfUFJPVklERVIgYXMgTUFUX0ZMRVhfUkVTSVpFX1NUUkFURUdZX1BST1ZJREVSLFxufSBmcm9tICcuL2NvbHVtbi1yZXNpemUvcmVzaXplLXN0cmF0ZWd5JztcbmV4cG9ydCB7XG4gIE1hdENvbHVtblJlc2l6ZUNvbW1vbk1vZHVsZSxcbiAgTWF0Q29sdW1uUmVzaXplTW9kdWxlLFxufSBmcm9tICcuL2NvbHVtbi1yZXNpemUvY29sdW1uLXJlc2l6ZS1tb2R1bGUnO1xuIl19