@datorama/core 22.13.0-beta.5 → 22.13.0-beta.6

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.
@@ -60,7 +60,7 @@ export const defaultGridOptions = Object.assign({
60
60
  [DatoGridColumnTypes.ItemsCount]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridItemsCountCellComponent' }),
61
61
  [DatoGridColumnTypes.Initials]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridInitialsCellComponent' }),
62
62
  [DatoGridColumnTypes.Avatar]: Object.assign(Object.assign({}, stringColDef), { cellRenderer: 'DatoGridAvatarCellComponent' })
63
- }, multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
63
+ }, multiSortKey: 'ctrl', suppressPaginationPanel: true, pagination: true, paginateChildRows: true, deltaColumnMode: true, loadingOverlayComponentFramework: DatoGridV2LoaderComponent, noRowsOverlayComponentFramework: DatoGridV2NoDataOverlayComponent, defaultColDef: {
64
64
  minWidth: GridMinWidths.Default,
65
65
  sortable: true,
66
66
  resizable: true,
@@ -380,4 +380,4 @@ function rowGroupOpened({ node }) {
380
380
  this.api.refreshCells({ force: true, rowNodes: [node] });
381
381
  }
382
382
  export { ɵ0, ɵ1 };
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUVqRCxTQUFTLE9BQU8sQ0FBQyxHQUFjO0lBQzdCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7V0FHNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFEaEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQTZCO0lBQzFELFdBQVcsSUFBbUM7SUFDOUMsVUFBVSxFQUFFO1FBQ1YsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUU7S0FDNUM7SUFDRCxhQUFhLEVBQUUsYUFBYTtJQUM1QixZQUFZLEVBQUUsWUFBWTtJQUMxQixhQUFhLEVBQUUsYUFBYTtJQUM1QixnQkFBZ0IsRUFBRSxjQUFjO0lBQ2hDLHlCQUF5QixFQUFFLElBQUk7SUFDL0Isb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsbUZBQW1GO0tBQzdGO0NBQ0YsQ0FBQztXQUlZLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBRnRHLE1BQU0sWUFBWSxHQUFHO0lBQ25CLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO0lBQ2xDLFVBQVUsSUFBMEY7Q0FDckcsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQjtJQUM3QixPQUFPO0lBQ1AsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFDcEQsVUFBVSxFQUFFLEtBQUssRUFDakIsWUFBWSxFQUFFLEtBQUssRUFDbkIscUJBQXFCLEVBQUUsSUFBSSxFQUMzQixnQ0FBZ0MsRUFBRSxJQUFJLEVBQ3RDLDRCQUE0QixFQUFFLEtBQUssRUFDbkMsdUJBQXVCLEVBQUUsSUFBSSxFQUM3QixXQUFXLEVBQUUsSUFBSSxFQUNqQixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLFVBQVU7SUFDVixXQUFXLEVBQUU7UUFDWCxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1lBQ2hDLFVBQVUsRUFBRSxDQUFDLENBQVksRUFBRSxDQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtTQUNuQztRQUNELENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWTtRQUMxQyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxrQ0FDdkIsWUFBWSxLQUNmLFlBQVksRUFBRSw2QkFBNkIsR0FDNUM7UUFDRCxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxrQ0FDdEIsWUFBWSxLQUNmLFlBQVksRUFBRSw0QkFBNEIsR0FDM0M7UUFDRCxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQ0FDM0IsWUFBWSxLQUNmLFlBQVksRUFBRSxpQ0FBaUMsR0FDaEQ7UUFDRCxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxrQ0FDekIsWUFBWSxLQUNmLFlBQVksRUFBRSwrQkFBK0IsR0FDOUM7UUFDRCxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxrQ0FDdkIsWUFBWSxLQUNmLFlBQVksRUFBRSw2QkFBNkIsR0FDNUM7S0FDRixFQUNELFlBQVksRUFBRSxNQUFNLEVBQ3BCLHVCQUF1QixFQUFFLElBQUksRUFDN0IsVUFBVSxFQUFFLElBQUksRUFDaEIsZUFBZSxFQUFFLElBQUksRUFDckIsZ0NBQWdDLEVBQUUseUJBQXlCLEVBQzNELCtCQUErQixFQUFFLGdDQUFnQyxFQUNqRSxhQUFhLEVBQUU7UUFDYixRQUFRLEVBQUUsYUFBYSxDQUFDLE9BQU87UUFDL0IsUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsSUFBSTtRQUNmLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO1FBQ2hDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUMzQix3QkFBd0IsRUFBRSw2QkFBNkI7S0FDeEQsRUFDRCxxQkFBcUIsRUFBRSxJQUFJLEVBQzNCLDBCQUEwQixFQUFFLElBQUksRUFDaEMsU0FBUyxFQUFFLEVBQUUsRUFDYixZQUFZLEVBQUUsRUFBRSxFQUNoQixZQUFZLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxFQUMzQyxjQUFjLEVBQUUsSUFBSSxFQUNwQixVQUFVLEVBQUUsSUFBSSxFQUNoQixXQUFXLEVBQUUsSUFBSSxFQUNqQiw2QkFBNkIsRUFBRSxJQUFJLEVBQ25DLG9CQUFvQixFQUFFLElBQUksRUFDMUIsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQ3hCLGlCQUFpQixFQUFFLEtBQUssRUFDeEIsMkJBQTJCLEVBQUUsRUFBRSxJQUM1QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLDRCQUE0QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNqRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUc7SUFDL0MsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsR0FBRztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBdUI7SUFDdEQsS0FBSyxFQUFFLElBQUk7SUFDWCxXQUFXLEVBQUUsVUFBVTtDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxTQUFTLHVCQUF1QjtJQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQztRQUM5QyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUUzQyxJQUFJLElBQUksRUFBRTtZQUNSLE9BQU8sNEVBQTRFLFdBQVcsQ0FBQyxNQUFNLENBQ25HLElBQUksQ0FDTCx1QkFBdUIsZUFBZSxhQUFhLFdBQVcsU0FBUyxDQUFDO1NBQzFFO2FBQU07WUFDTCxJQUFJLFFBQVEsRUFBRTtnQkFDWixPQUFPLGdCQUFnQixlQUFlLHNCQUFzQixXQUFXLFNBQVMsQ0FBQzthQUNsRjtpQkFBTTtnQkFDTCxJQUFJLFFBQVEsRUFBRTtvQkFDWixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzlDLElBQUksWUFBWSxFQUFFO3dCQUNoQixPQUFPLGdCQUFnQixlQUFlLDZDQUE2QyxZQUFZLFVBQVUsV0FBVyxTQUFTLENBQUM7cUJBQy9IO3lCQUFNO3dCQUNMLE9BQU8sZ0JBQWdCLGVBQWUsc0JBQXNCLFdBQVcsU0FBUyxDQUFDO3FCQUNsRjtpQkFDRjtxQkFBTTtvQkFDTCxPQUFPLGdCQUFnQixlQUFlLHNCQUFzQixXQUFXLFNBQVMsQ0FBQztpQkFDbEY7YUFDRjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUFtQixFQUFFLFNBQWMsRUFBRSxRQUFpQjtJQUN4RSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUNwRSxNQUFNLHNCQUFzQixHQUFHLHVCQUF1QixDQUFDO1FBQ3ZELE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25HLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixJQUFJLFFBQVEsRUFBRTtZQUNaLE1BQU0sa0JBQWtCLEdBQWtCO2dCQUN4QyxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsU0FBUyxFQUFFLGVBQWU7YUFDM0IsQ0FBQztZQUNGLE9BQU8sc0JBQXNCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFFM0MsSUFBSSxrQ0FBa0MsR0FBRyxLQUFLLENBQUM7QUFFL0MsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNuQyxPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxLQUFLLGVBQWUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0lBQ3ZDLElBQUksZ0JBQWdCLENBQUM7SUFFckIsSUFBSSxRQUFRLEVBQUU7UUFDWix1RUFBdUU7UUFDdkUsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ3ZDLENBQUMsQ0FBQyw4Q0FBOEM7Z0JBQzlDLFFBQVE7WUFDVixDQUFDLENBQUMsa0VBQWtFO2dCQUNsRSxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQ3JCO1NBQU07UUFDTCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztLQUMzQztJQUVELElBQUksZUFBZSxFQUFFO1FBQ25CLElBQUksZUFBZSxDQUFDLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsT0FBTztTQUNSO2FBQU07WUFDTCxNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkUsdUJBQXVCLElBQUksdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pGLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDeEI7S0FDRjtTQUFNO1FBQ0wsZUFBZSxHQUFHLGdCQUFnQixDQUFDO0tBQ3BDO0lBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtRQUNwQixNQUFNLFFBQVEsR0FBVyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDN0MsTUFBTSx1QkFBdUIsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsdUJBQXVCLElBQUksdUJBQXVCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3ZGO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtJQUN0QyxJQUFJLFVBQVUsQ0FBQztJQUNmLElBQUksZ0JBQWdCLENBQUM7SUFDckIsSUFBSSxRQUFRLEVBQUU7UUFDWixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6Qix1RUFBdUU7UUFDdkUsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ3ZDLENBQUMsQ0FBQyw4Q0FBOEM7Z0JBQzlDLFFBQVE7WUFDVixDQUFDLENBQUMsa0VBQWtFO2dCQUNsRSxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQ3JCO1NBQU07UUFDTCxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDcEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7S0FDM0M7SUFFRCwyQkFBMkI7SUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUU3QixNQUFNLFlBQVksR0FBVyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRix5REFBeUQ7SUFDekQsSUFDRSxVQUFVLENBQUMsUUFBUTtRQUNuQixZQUFZLEtBQUssQ0FBQyxDQUFDO1FBQ25CLFVBQVUsQ0FBQyxFQUFFLEtBQUssWUFBWTtRQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUNsRDtRQUNBLE9BQU87S0FDUjtJQUVELGtGQUFrRjtJQUNsRixxQkFBcUI7SUFDckIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFFcEYsdURBQXVEO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLHlCQUF5QixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RFLElBQUksV0FBVyxFQUFFO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUM3QjtJQUVELElBQUksa0JBQWtCLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDdEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBdUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDckYsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpGLGFBQWEsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU5RDs7V0FFRztRQUNILE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRSxvQkFBb0IsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbkYsZUFBZSxHQUFHLElBQUksQ0FBQztRQUV2Qjs4REFDc0Q7UUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0tBQzdCO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQUk7SUFDekIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQzNGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEUsSUFBSSxJQUFJLEVBQUU7WUFDUixLQUFLLE1BQU0sU0FBUyxJQUFJLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pDLE1BQU07aUJBQ1A7YUFDRjtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxNQUFNO0lBQzNCLElBQUksa0NBQWtDLEVBQUU7UUFDdEMsT0FBTztLQUNSO0lBQ0Qsa0NBQWtDLEdBQUcsSUFBSSxDQUFDO0lBRTFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCx3Q0FBd0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLGtDQUFrQyxHQUFHLEtBQUssQ0FBQztJQUM3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsUUFBUTtJQUNoRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLElBQUksV0FBVyxFQUFFO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQztBQUVELFNBQVMsd0NBQXdDLENBQUMsSUFBSTtJQUNwRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzdCLE9BQU8sVUFBVSxFQUFFO1FBQ2pCLElBQUksVUFBVSxDQUFDLEVBQUUsS0FBSyxZQUFZLEVBQUU7WUFDbEMsTUFBTTtTQUNQO1FBRUQsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDaEM7QUFDSCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUFJO0lBQ2xDLElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUUsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLGFBQWEsS0FBSyxTQUFTLENBQUMsRUFBRTtRQUN6RyxPQUFPO0tBQ1I7SUFDRCx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQyxJQUFJLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHlCQUF5QixDQUFDLFlBQVksRUFBRSxVQUFVO0lBQ3pELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN4QyxJQUFJLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEUseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxlQUFlLEVBQUUsS0FBYTtJQUM3Riw4Q0FBOEM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUV6QyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxVQUFTLFNBQVM7WUFDM0MsVUFBVSxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFJLElBQVMsRUFBRSxjQUFrQztJQUNoRixNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBQztJQUM5QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxLQUFLLEVBQVEsRUFBRTtRQUN6RCxNQUFNLElBQUksR0FBUyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFbEMsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDckIsdUNBQ0ssSUFBSSxLQUNQLENBQUMsbUJBQW1CLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQ25EO1NBQ0g7YUFBTTtZQUNMLHVDQUNLLElBQUksS0FDUCxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFDcEM7U0FDSDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUksSUFBUyxFQUFFLGNBQWtDO0lBQ2xGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQVUsRUFBRSxFQUFFO1lBQVosb0JBQU07UUFDdkIsTUFBTSxJQUFJLEdBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hDLHVDQUNLLEdBQUcsS0FDTixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLElBQ3RDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFO0lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5pbXBvcnQgeyBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1sb2FkZXIvZ3JpZC12Mi1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFnR3JpZFJvd0ljb24sXG4gIERhdG9HcmlkQ29sdW1uVHlwZXMsXG4gIERhdG9HcmlkT3B0aW9ucyxcbiAgRGF0b0dyaWRUcmVlQ29uZmlnLFxuICBHcmlkTWluV2lkdGhzLFxuICBHcmlkUm93U2VsZWN0aW9uVHlwZVxufSBmcm9tICcuL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRWMk5vRGF0YU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLW5vLWRhdGEtb3ZlcmxheS9ncmlkLXYyLW5vLWRhdGEtb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb2x1bW4taGVhZGVyL2dyaWQtY29sdW1uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSAnLi4vLi4vaXN0ZXN0LWVudic7XG5pbXBvcnQgeyBJRCB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBnZXRJbml0aWFscyB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5cbnR5cGUgRGF0ZVR5cGVzID0gbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcblxuY29uc3QgYWdSb3dMZXZlbFByZWZpeDogc3RyaW5nID0gJ2FnLXJvdy1sZXZlbC0nO1xuXG5mdW5jdGlvbiBnZXRUaW1lKHZhbDogRGF0ZVR5cGVzKSB7XG4gIGxldCB0aW1lID0gbmV3IERhdGUodmFsIHx8IG51bGwpLmdldFRpbWUoKTtcbiAgcmV0dXJuIGlzTmFOKHRpbWUpID8gMCA6IHRpbWU7XG59XG5cbmV4cG9ydCBjb25zdCBST09UX05PREVfSUQgPSAnUk9PVF9OT0RFX0lEJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmVlT3B0aW9uczogUGFydGlhbDxEYXRvR3JpZE9wdGlvbnM+ID0ge1xuICBnZXREYXRhUGF0aDogaXRlbSA9PiBpdGVtW2dyaWRUcmVlRmlsZVBhdGhLZXldLFxuICBjb21wb25lbnRzOiB7XG4gICAgZmlsZUNlbGxSZW5kZXJlcjogZ2V0R3JpZFRyZWVDZWxsUmVuZGVyZXIoKVxuICB9LFxuICBvblJvd0RyYWdNb3ZlOiBvblJvd0RyYWdNb3ZlLFxuICBvblJvd0RyYWdFbmQ6IG9uUm93RHJhZ0VuZCxcbiAgb25Sb3dTZWxlY3RlZDogb25Sb3dTZWxlY3RlZCxcbiAgb25Sb3dHcm91cE9wZW5lZDogcm93R3JvdXBPcGVuZWQsXG4gIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gIGdyb3VwU2VsZWN0c0NoaWxkcmVuOiB0cnVlLFxuICBpY29uczoge1xuICAgIHJvd0RyYWc6ICc8ZGF0by1pY29uIGljb249XCJkcmFnXCIgY2xhc3M9XCJkYXRvLWljb24tZm9udC1kcmFnIHByaW1hcnktNDAwLWNvbG9yXCI+PC9kYXRvLWljb24+J1xuICB9XG59O1xuXG5jb25zdCBzdHJpbmdDb2xEZWYgPSB7XG4gIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5TdHJpbmcsXG4gIGNvbXBhcmF0b3I6IChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gKGEgfHwgJycpLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZSgoYiB8fCAnJykudG9Mb3dlckNhc2UoKSlcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnM6IFBhcnRpYWw8RGF0b0dyaWRPcHRpb25zPiA9IHtcbiAgLy8gQ29yZVxuICBob3ZlckNvbmZpZzogeyBlbmFibGVkOiB0cnVlLCBtYXhEaXNwbGF5ZWRJdGVtczogMyB9LFxuICBlbmFibGVWMl8xOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoOiBmYWxzZSxcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0OiB0cnVlLFxuICBjb2x1bW5zSW5jbHVkZWRJblNlYXJjaEJ5RGVmYXVsdDogdHJ1ZSxcbiAgaW5jbHVkZUhpZGRlbkNvbHVtbnNJblNlYXJjaDogZmFsc2UsXG4gIGVuYWJsZUFsbFBhZ2VzU2VsZWN0aW9uOiB0cnVlLFxuICBpZENvbHVtbktleTogJ2lkJyxcbiAgZW5hYmxlQmFja2dyb3VuZDogdHJ1ZSxcbiAgLy8gQWcgZ3JpZFxuICBjb2x1bW5UeXBlczoge1xuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkRhdGVdOiB7XG4gICAgICBmaWx0ZXI6IERhdG9HcmlkRmlsdGVyVHlwZXMuRGF0ZSxcbiAgICAgIGNvbXBhcmF0b3I6IChhOiBEYXRlVHlwZXMsIGI6IERhdGVUeXBlcykgPT4gZ2V0VGltZShhKSAtIGdldFRpbWUoYilcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLk51bWJlcl06IHtcbiAgICAgIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5OdW1iZXJcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLlN0cmluZ106IHN0cmluZ0NvbERlZixcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5TdGF0dXNdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZFN0YXR1c0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5JdGVtc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuSXRlbXNDb3VudF06IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSXRlbXNDb3VudENlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5Jbml0aWFsc106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkSW5pdGlhbHNDZWxsQ29tcG9uZW50J1xuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuQXZhdGFyXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRBdmF0YXJDZWxsQ29tcG9uZW50J1xuICAgIH1cbiAgfSxcbiAgbXVsdGlTb3J0S2V5OiAnY3RybCcsXG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsOiB0cnVlLFxuICBwYWdpbmF0aW9uOiB0cnVlLFxuICBkZWx0YUNvbHVtbk1vZGU6IHRydWUsXG4gIGxvYWRpbmdPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCxcbiAgZGVmYXVsdENvbERlZjoge1xuICAgIG1pbldpZHRoOiBHcmlkTWluV2lkdGhzLkRlZmF1bHQsXG4gICAgc29ydGFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIHR5cGU6IERhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nLFxuICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXSxcbiAgICBoZWFkZXJDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50XG4gIH0sXG4gIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgc3VwcHJlc3NQcm9wZXJ0eU5hbWVzQ2hlY2s6IHRydWUsXG4gIHJvd0hlaWdodDogMzUsXG4gIGhlYWRlckhlaWdodDogMzAsXG4gIHJvd1NlbGVjdGlvbjogR3JpZFJvd1NlbGVjdGlvblR5cGUuTVVMVElQTEUsXG4gIHJvd0Rlc2VsZWN0aW9uOiB0cnVlLFxuICB1blNvcnRJY29uOiB0cnVlLFxuICBhbmltYXRlUm93czogdHJ1ZSxcbiAgcmVtZW1iZXJHcm91cFN0YXRlV2hlbk5ld0RhdGE6IHRydWUsXG4gIGdyb3VwTXVsdGlBdXRvQ29sdW1uOiB0cnVlLFxuICBncm91cERlZmF1bHRFeHBhbmRlZDogLTEsXG4gIHVzZVBpdm90R3JpZFN0eWxlOiBmYWxzZSxcbiAgZGlzYWJsZWRIVE1MUmVuZGVyaW5nRmllbGRzOiBbXSxcbiAgLi4uKGlzVGVzdEVudigpID8geyBzdXBwcmVzc0NvbHVtblZpcnR1YWxpc2F0aW9uOiB0cnVlLCByb3dCdWZmZXI6IDk5OTk5IH0gOiB7fSlcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dSSURfU0VBUkNIX0RFQk9VTkNFX1RJTUUgPSB7XG4gIENMSUVOVDogMjAwLFxuICBTRVJWRVI6IDI1MFxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkVHJlZUxhYmVsOiBEYXRvR3JpZFRyZWVDb25maWcgPSB7XG4gIGlkS2V5OiAnaWQnLFxuICBwYXJlbnRJREtleTogJ3BhcmVudElEJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdyaWRUcmVlRmlsZVBhdGhLZXkgPSAnYWdHcmlkRmlsZVBhdGgnO1xuXG4vKipcbiAqIENlbGwgcmVuZGVyZXIgZm9yIHRyZWUgc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpIHtcbiAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgZUdyaWRDZWxsLCBjb2xEZWYgfSA9IGl0ZW07XG4gICAgY29uc3QgeyBpY29uOiBpdGVtSWNvbiwgaXNGb2xkZXIsIGluaXRpYWxzID0gdHJ1ZSB9ID0gZGF0YTtcbiAgICBjb25zdCBpY29uID0gZ2V0Um93SWNvbihpdGVtSWNvbiwgZUdyaWRDZWxsLCBpc0ZvbGRlcik7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBkYXRhW2NvbERlZlsnZmllbGQnXV07XG4gICAgY29uc3QgZW50aXR5Q2xhc3NOYW1lID0gJ2VudGl0eS1kaXNwbGF5LW5hbWUnO1xuICAgIGNvbnN0IHsgc3ZnUmVnaXN0cnkgfSA9IGNvbERlZi5ncmlkU2VydmljZTtcblxuICAgIGlmIChpY29uKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiZGF0by1zaW1wbGUtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBmb2xkZXIgZC1mbGV4XCI+JHtzdmdSZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgIGljb25cbiAgICAgICl9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9XCI+PC9zcGFuPiAke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbml0aWFscykge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEluaXRpYWxzKGRpc3BsYXlOYW1lKTtcbiAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj48c3BhbiBjbGFzcz1cImluaXRpYWxzXCI+JHtpbml0aWFsVmFsdWV9PC9zcGFuPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcm93J3MgaWNvbi5cbiAqIElmIGljb24gaXMgb2YgdHlwZSBzdHJpbmcsIFJldHVybiBpdC5cbiAqIElmIGl0IGFuIG9iamVjdCwgUmV0dXJuIGJhc2VkIG9uIHRoZSBleHBhbmQgLyBjb2xsYXBzZSBzdGF0ZS5cbiAqIEBwYXJhbSBpY29uXG4gKiBAcGFyYW0gZUdyaWRDZWxsXG4gKiBAcGFyYW0gaXNGb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0Um93SWNvbihpY29uOiBBZ0dyaWRSb3dJY29uLCBlR3JpZENlbGw6IGFueSwgaXNGb2xkZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaWNvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZSA9IChlR3JpZENlbGwsIHsgZXhwYW5kZWQsIGNvbGxhcHNlZCB9KSA9PiB7XG4gICAgY29uc3QgYWdHcmlkUm93RXhwYW5kZWRDbGFzcyA9ICdhZy1yb3ctZ3JvdXAtZXhwYW5kZWQnO1xuICAgIHJldHVybiBlR3JpZENlbGwucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoYWdHcmlkUm93RXhwYW5kZWRDbGFzcykgPyBleHBhbmRlZCA6IGNvbGxhcHNlZDtcbiAgfTtcblxuICAvKipcbiAgICogSWYgaWNvbiB3YXNuJ3Qgb3ZlcnJpZGUgYnkgdGhlIHVzZXIgYW5kIHRoZSByb3cgaXMgb2YgdHlwZSBmb2xkZXIsXG4gICAqIFNldCBkZWZhdWx0IGZvbGRlciBpY29ucy5cbiAgICovXG4gIGlmIChpY29uID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRGb2xkZXJJY29uczogQWdHcmlkUm93SWNvbiA9IHtcbiAgICAgICAgZXhwYW5kZWQ6ICdmb2xkZXItb3BlbicsXG4gICAgICAgIGNvbGxhcHNlZDogJ2ZvbGRlci1jbG9zZWQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGdldEljb25CYXNlZE9uUm93U3RhdGUoZUdyaWRDZWxsLCBkZWZhdWx0Rm9sZGVySWNvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycgPyBpY29uIDogZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZShlR3JpZENlbGwsIGljb24pO1xufVxuXG5sZXQgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcbmNvbnN0IGFnUm93SG92ZXJDbGFzc05hbWUgPSAnYWctcm93LWhvdmVyJztcblxubGV0IHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gZ2V0Q2VsbEJ5Um93SUQocm93SUQ6IHN0cmluZykge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW3Jvdy1pZD1cIiR7cm93SUR9XCJdID4gLmFnLWNlbGxgKTtcbn1cblxuLyoqXG4gKiBNYXJrIHBhcmVudCBmb2xkZXIgb2YgdGhlIG92ZXJOb2RlIGFzIGhvdmVyZWQgaW4gb3JkZXIgdG8gYXBwbHlcbiAqIHJlbGV2YW50IGNzcyBzdHlsZSB0byBpdC5cbiAqIEBwYXJhbSBvdmVyTm9kZVxuICovXG5mdW5jdGlvbiBvblJvd0RyYWdNb3ZlKHsgb3Zlck5vZGUsIG5vZGUgfSkge1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcblxuICBpZiAob3Zlck5vZGUpIHtcbiAgICAvLyBmb2xkZXIgdG8gZHJvcCBpbnRvIGlzIHdoZXJlIHdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBmaWxlL2ZvbGRlciB0b1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBvdmVyTm9kZS5kYXRhLmlzRm9sZGVyXG4gICAgICA/IC8vIGlmIG92ZXIgYSBmb2xkZXIsIHdlIHRha2UgdGhlIGltbWVkaWF0ZSByb3dcbiAgICAgICAgb3Zlck5vZGVcbiAgICAgIDogLy8gaWYgb3ZlciBhIGZpbGUsIHdlIHRha2UgdGhlIHBhcmVudCByb3cgKHdoaWNoIHdpbGwgYmUgYSBmb2xkZXIpXG4gICAgICAgIG92ZXJOb2RlLnBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgfVxuXG4gIGlmIChwb3RlbnRpYWxQYXJlbnQpIHtcbiAgICBpZiAocG90ZW50aWFsUGFyZW50LmlkID09PSBmb2xkZXJUb0Ryb3BJbnRvLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUG90ZW50aWFsUGFyZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICAgIHByZXZpb3VzUG90ZW50aWFsUGFyZW50ICYmIHByZXZpb3VzUG90ZW50aWFsUGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gICAgICBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwb3RlbnRpYWxQYXJlbnQgPSBmb2xkZXJUb0Ryb3BJbnRvO1xuICB9XG4gIGlmIChmb2xkZXJUb0Ryb3BJbnRvKSB7XG4gICAgY29uc3QgZm9sZGVySUQ6IHN0cmluZyA9IGZvbGRlclRvRHJvcEludG8uaWQ7XG4gICAgY29uc3QgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgPSBnZXRDZWxsQnlSb3dJRChmb2xkZXJJRCk7XG4gICAgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgJiYgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQuY2xhc3NMaXN0LmFkZChhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblJvd0RyYWdFbmQoeyBvdmVyTm9kZSwgbm9kZSB9KSB7XG4gIGxldCBub2RlUGFyZW50O1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcbiAgaWYgKG92ZXJOb2RlKSB7XG4gICAgbm9kZVBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIC8vIGZvbGRlciB0byBkcm9wIGludG8gaXMgd2hlcmUgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhlIGZpbGUvZm9sZGVyIHRvXG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG92ZXJOb2RlLmRhdGEuaXNGb2xkZXJcbiAgICAgID8gLy8gaWYgb3ZlciBhIGZvbGRlciwgd2UgdGFrZSB0aGUgaW1tZWRpYXRlIHJvd1xuICAgICAgICBvdmVyTm9kZVxuICAgICAgOiAvLyBpZiBvdmVyIGEgZmlsZSwgd2UgdGFrZSB0aGUgcGFyZW50IHJvdyAod2hpY2ggd2lsbCBiZSBhIGZvbGRlcilcbiAgICAgICAgb3Zlck5vZGUucGFyZW50O1xuICB9IGVsc2Uge1xuICAgIG5vZGVQYXJlbnQgPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICB9XG5cbiAgLy8gdGhlIGRhdGEgd2Ugd2FudCB0byBtb3ZlXG4gIGNvbnN0IG1vdmluZ0RhdGEgPSBub2RlLmRhdGE7XG5cbiAgY29uc3QgdHJlZU1heERlcHRoOiBudW1iZXIgPSBub2RlLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5tYXhEZXB0aCB8fCAtMTtcbiAgLy8gRGlzYWJsZSBuZXN0ZWQgZHJhZyB3aGVuIHRyZWUgZGVwdGggaXMgYWJvdmUgdGhlIGxpbWl0XG4gIGlmIChcbiAgICBtb3ZpbmdEYXRhLmlzRm9sZGVyICYmXG4gICAgdHJlZU1heERlcHRoICE9PSAtMSAmJlxuICAgIG5vZGVQYXJlbnQuaWQgIT09IFJPT1RfTk9ERV9JRCAmJlxuICAgIG92ZXJOb2RlLmRhdGEuYWdHcmlkRmlsZVBhdGgubGVuZ3RoID4gdHJlZU1heERlcHRoXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHRha2UgbmV3IHBhcmVudCBwYXRoIGZyb20gcGFyZW50LCBpZiBkYXRhIGlzIG1pc3NpbmcsIG1lYW5zIGl0J3MgdGhlIHJvb3Qgbm9kZSxcbiAgLy8gd2hpY2ggaGFzIG5vIGRhdGEuXG4gIGNvbnN0IG5ld1BhcmVudFBhdGggPSBmb2xkZXJUb0Ryb3BJbnRvLmRhdGEgPyBmb2xkZXJUb0Ryb3BJbnRvLmRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gOiBbXTtcbiAgY29uc3QgbmVlZFRvQ2hhbmdlUGFyZW50ID0gIWlzRXF1YWwobmV3UGFyZW50UGF0aCwgbW92aW5nRGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSk7XG5cbiAgLy8gY2hlY2sgd2UgYXJlIG5vdCBtb3ZpbmcgYSBmb2xkZXIgaW50byBhIGNoaWxkIGZvbGRlclxuICBjb25zdCBpbnZhbGlkTW9kZSA9IGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQobm9kZSwgZm9sZGVyVG9Ecm9wSW50byk7XG4gIGlmIChpbnZhbGlkTW9kZSkge1xuICAgIGNvbnNvbGUubG9nKCdpbnZhbGlkIG1vdmUnKTtcbiAgfVxuXG4gIGlmIChuZWVkVG9DaGFuZ2VQYXJlbnQgJiYgIWludmFsaWRNb2RlKSB7XG4gICAgY29uc3QgdXBkYXRlZFJvd3MgPSBbXTtcbiAgICBjb25zdCB7IGlkS2V5IH06IERhdG9HcmlkVHJlZUNvbmZpZyA9IHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmdyaWRTZXJ2aWNlLnRyZWVDb25maWc7XG4gICAgbW92ZVRvUGF0aChuZXdQYXJlbnRQYXRoLCBub2RlLCB1cGRhdGVkUm93cywgaWRLZXkpO1xuXG4gICAgY29uc3QgYWZmZWN0ZWRSb3dzID0gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZ3JpZFNlcnZpY2UudXBkYXRlUm93cyh1cGRhdGVkUm93cyk7XG5cbiAgICBzZXRSb3dDbGFzc2VzKFsuLi5hZmZlY3RlZFJvd3MudXBkYXRlLCBvdmVyTm9kZSwgbm9kZVBhcmVudF0pO1xuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcHJldmlvdXMgbWFya2VkIHBhcmVudCBmcm9tIGhvdmVyIHN0eWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGhvdmVyZWRQYXJlbnRFbGVtZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICBob3ZlcmVkUGFyZW50RWxlbWVudCAmJiBob3ZlcmVkUGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICAgIHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG5cbiAgICAvKiogUmVkcmF3IHRoZSBmb2xkZXJzIHRoYXQgaGFzIGJlZW4gZHJhZ2dlZCBmcm9tIGFuZCB0byxcbiAgICAgKiB0byBhcHBseSB0aGVpciBjbGFzc2VkIHRocm91Z2ggY2xhc3NSdWxlcyBjb25maWcgKi9cbiAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKHsgcm93Tm9kZXM6IFtub2RlUGFyZW50LCBmb2xkZXJUb0Ryb3BJbnRvXSB9KTtcbiAgICB0aGlzLmFwaS5jbGVhckZvY3VzZWRDZWxsKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Um93Q2xhc3Nlcyhyb3dzKSB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IFtgJHthZ1Jvd0xldmVsUHJlZml4fTFgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTJgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTNgXTtcbiAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtyb3ctaWQ9XCIke3Jvdy5pZH1cIl1gKVsxXTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc0xpc3QpIHtcbiAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub2RlLmNsYXNzTGlzdC5hZGQoYCR7YWdSb3dMZXZlbFByZWZpeH0ke3Jvdy5sZXZlbH1gKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblJvd1NlbGVjdGVkKHBhcmFtcykge1xuICBpZiAodXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSkge1xuICAgIHJldHVybjtcbiAgfVxuICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcblxuICBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhwYXJhbXMubm9kZSwgcGFyYW1zLm5vZGUuc2VsZWN0ZWQpO1xuICByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KHBhcmFtcy5ub2RlKTtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhub2RlLCBzZWxlY3RlZCkge1xuICBsZXQgaGFzQ2hpbGRyZW4gPSBub2RlLmFsbENoaWxkcmVuQ291bnQgPiAwO1xuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICBub2RlLmFsbExlYWZDaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGNoaWxkLnNldFNlbGVjdGVkKHNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KG5vZGUpIHtcbiAgbGV0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5pZCA9PT0gUk9PVF9OT0RFX0lEKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKHBhcmVudE5vZGUpO1xuICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKG5vZGUpIHtcbiAgbGV0IGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzID0gbm9kZS5hbGxMZWFmQ2hpbGRyZW4ubWFwKG5vZGUgPT4gbm9kZS5zZWxlY3RlZCk7XG5cbiAgaWYgKGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLmV2ZXJ5KHNlbGVjdGVkVmFsdWUgPT4gc2VsZWN0ZWRWYWx1ZSA9PT0gdHJ1ZSB8fCBzZWxlY3RlZFZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLnNoaWZ0KCk7XG5cbiAgbGV0IG5vZGVTZWxlY3Rpb25TdGF0dXMgPSBjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIG5vZGUuc2VsZWN0VGhpc05vZGUobm9kZVNlbGVjdGlvblN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzIGEgY2hpbGQgb2YgdGhlIHRhcmdldCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBzZWxlY3RlZE5vZGVcbiAqIEBwYXJhbSB0YXJnZXROb2RlXG4gKi9cbmZ1bmN0aW9uIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoc2VsZWN0ZWROb2RlLCB0YXJnZXROb2RlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkcmVuID0gc2VsZWN0ZWROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0YXJnZXROb2RlICYmIGNoaWxkcmVuW2ldLmtleSA9PT0gdGFyZ2V0Tm9kZS5rZXkpIHJldHVybiB0cnVlO1xuICAgIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoY2hpbGRyZW5baV0sIHRhcmdldE5vZGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIHRoaXMgdXBkYXRlcyB0aGUgZmlsZVBhdGggbG9jYXRpb25zIGluIG91ciBkYXRhLCB3ZSB1cGRhdGUgdGhlIGRhdGFcbiBiZWZvcmUgd2Ugc2VuZCBpdCB0byBhZy1HcmlkXG4gKi9cbmZ1bmN0aW9uIG1vdmVUb1BhdGgobmV3UGFyZW50UGF0aCwgeyBkYXRhLCBjaGlsZHJlbkFmdGVyR3JvdXAgfSwgYWxsVXBkYXRlZE5vZGVzLCBpZEtleTogc3RyaW5nKSB7XG4gIC8vIGxhc3QgcGFydCBvZiB0aGUgZmlsZSBwYXRoIGlzIHRoZSBmaWxlIG5hbWVcbiAgY29uc3QgbmV3Q2hpbGRQYXRoID0gbmV3UGFyZW50UGF0aC5zbGljZSgpO1xuXG4gIGRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gPSBuZXdDaGlsZFBhdGg7XG5cbiAgYWxsVXBkYXRlZE5vZGVzLnB1c2goZGF0YSk7XG5cbiAgaWYgKHNpemUoY2hpbGRyZW5BZnRlckdyb3VwKSA+IDApIHtcbiAgICBjaGlsZHJlbkFmdGVyR3JvdXAuZm9yRWFjaChmdW5jdGlvbihjaGlsZE5vZGUpIHtcbiAgICAgIG1vdmVUb1BhdGgoWy4uLm5ld0NoaWxkUGF0aCwgZGF0YVtpZEtleV1dLCBjaGlsZE5vZGUsIGFsbFVwZGF0ZWROb2RlcywgaWRLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XS5wdXNoKGRhdGFbaWRLZXldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRhdGEgaW50byB0cmVlIHNoYXBlZCBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGdyaWRUcmVlQ29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICBjb25zdCB7IHBhcmVudElES2V5LCBpZEtleSB9ID0gZ3JpZFRyZWVDb25maWc7XG4gIGNvbnN0IGdlbmVyYXRlRmlsZVBhdGggPSAoaXRlbSwgaW5pdENoaWxkID0gZmFsc2UpOiBJRFtdID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gaW5pdENoaWxkID8gW2l0ZW1baWRLZXldXSA6IFtdO1xuICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGRhdGEuZmluZChlbnRpdHkgPT4gZW50aXR5W2lkS2V5XSA9PT0gaXRlbVtwYXJlbnRJREtleV0pO1xuICAgIHBhdGgudW5zaGlmdChwYXJlbnRFbnRpdHlbaWRLZXldKTtcblxuICAgIGlmIChwYXJlbnRFbnRpdHlbcGFyZW50SURLZXldKSB7XG4gICAgICBjb25zdCBlbnRpdHlQYXRoID0gZ2VuZXJhdGVGaWxlUGF0aChwYXJlbnRFbnRpdHkpO1xuICAgICAgcGF0aC51bnNoaWZ0KC4uLmVudGl0eVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZXJlJ3Mgbm8gcGFyZW50SUQsIFNldCB0aGUgaXRlbSBpbiB0byByb290IG9mIHRoZSB0cmVlLlxuICAgKiBFbHNlLCBSZWN1cnNpdmVseSBjcmVhdGUgdGhlIHBhdGguXG4gICAqL1xuICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgaWYgKGl0ZW1bcGFyZW50SURLZXldKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBbZ3JpZFRyZWVGaWxlUGF0aEtleV06IGdlbmVyYXRlRmlsZVBhdGgoaXRlbSwgdHJ1ZSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIFtncmlkVHJlZUZpbGVQYXRoS2V5XTogW2l0ZW1baWRLZXldXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdyaWRzIGRhdGEgZnJvbSB0cmVlIHNoYXBlIHRvIG9yaWdpbmFsIHNoYXBlLlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBncmlkVHJlZUNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZyb21UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICByZXR1cm4gZGF0YS5tYXAoKHsgLi4ucm93IH0pID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIGNvbnN0IHBhcmVudElEOiBJRCA9IHNpemUocGF0aCkgPiAxID8gcGF0aFtwYXRoLmxlbmd0aCAtIDJdIDogMDtcbiAgICBkZWxldGUgcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb3csXG4gICAgICBbZ3JpZFRyZWVDb25maWcucGFyZW50SURLZXldOiBwYXJlbnRJRFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggZXhwYW5kZWQgLyBjb2xsYXBzZWQgcm93IGZvciB0aGUgZ3JpZCB0byBkZXRlY3RcbiAqIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gbm9kZVxuICovXG5mdW5jdGlvbiByb3dHcm91cE9wZW5lZCh7IG5vZGUgfSkge1xuICB0aGlzLmFwaS5yZWZyZXNoQ2VsbHMoeyBmb3JjZTogdHJ1ZSwgcm93Tm9kZXM6IFtub2RlXSB9KTtcbn1cbiJdfQ==
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQvZ3JpZC12Mi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFFTCxtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRCxNQUFNLGdCQUFnQixHQUFXLGVBQWUsQ0FBQztBQUVqRCxTQUFTLE9BQU8sQ0FBQyxHQUFjO0lBQzdCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7V0FHNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7QUFEaEQs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QUlHO0FBQ0gsU0FBUyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUU7SUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cbmltcG9ydCB7IERhdG9HcmlkVjJMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWxvYWRlci9ncmlkLXYyLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWdHcmlkUm93SWNvbixcbiAgRGF0b0dyaWRDb2x1bW5UeXBlcyxcbiAgRGF0b0dyaWRPcHRpb25zLFxuICBEYXRvR3JpZFRyZWVDb25maWcsXG4gIEdyaWRNaW5XaWR0aHMsXG4gIEdyaWRSb3dTZWxlY3Rpb25UeXBlXG59IGZyb20gJy4vZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtbm8tZGF0YS1vdmVybGF5L2dyaWQtdjItbm8tZGF0YS1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRvR3JpZEZpbHRlclR5cGVzIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRDb2x1bW5IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWNvbHVtbi1oZWFkZXIvZ3JpZC1jb2x1bW4taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1Rlc3RFbnYgfSBmcm9tICcuLi8uLi9pc3Rlc3QtZW52JztcbmltcG9ydCB7IElEIH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGdldEluaXRpYWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi91dGlscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcblxudHlwZSBEYXRlVHlwZXMgPSBudW1iZXIgfCBzdHJpbmcgfCBEYXRlO1xuXG5jb25zdCBhZ1Jvd0xldmVsUHJlZml4OiBzdHJpbmcgPSAnYWctcm93LWxldmVsLSc7XG5cbmZ1bmN0aW9uIGdldFRpbWUodmFsOiBEYXRlVHlwZXMpIHtcbiAgbGV0IHRpbWUgPSBuZXcgRGF0ZSh2YWwgfHwgbnVsbCkuZ2V0VGltZSgpO1xuICByZXR1cm4gaXNOYU4odGltZSkgPyAwIDogdGltZTtcbn1cblxuZXhwb3J0IGNvbnN0IFJPT1RfTk9ERV9JRCA9ICdST09UX05PREVfSUQnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyZWVPcHRpb25zOiBQYXJ0aWFsPERhdG9HcmlkT3B0aW9ucz4gPSB7XG4gIGdldERhdGFQYXRoOiBpdGVtID0+IGl0ZW1bZ3JpZFRyZWVGaWxlUGF0aEtleV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBmaWxlQ2VsbFJlbmRlcmVyOiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpXG4gIH0sXG4gIG9uUm93RHJhZ01vdmU6IG9uUm93RHJhZ01vdmUsXG4gIG9uUm93RHJhZ0VuZDogb25Sb3dEcmFnRW5kLFxuICBvblJvd1NlbGVjdGVkOiBvblJvd1NlbGVjdGVkLFxuICBvblJvd0dyb3VwT3BlbmVkOiByb3dHcm91cE9wZW5lZCxcbiAgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogdHJ1ZSxcbiAgZ3JvdXBTZWxlY3RzQ2hpbGRyZW46IHRydWUsXG4gIGljb25zOiB7XG4gICAgcm93RHJhZzogJzxkYXRvLWljb24gaWNvbj1cImRyYWdcIiBjbGFzcz1cImRhdG8taWNvbi1mb250LWRyYWcgcHJpbWFyeS00MDAtY29sb3JcIj48L2RhdG8taWNvbj4nXG4gIH1cbn07XG5cbmNvbnN0IHN0cmluZ0NvbERlZiA9IHtcbiAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlclR5cGVzLlN0cmluZyxcbiAgY29tcGFyYXRvcjogKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PiAoYSB8fCAnJykudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKChiIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9uczogUGFydGlhbDxEYXRvR3JpZE9wdGlvbnM+ID0ge1xuICAvLyBDb3JlXG4gIGhvdmVyQ29uZmlnOiB7IGVuYWJsZWQ6IHRydWUsIG1heERpc3BsYXllZEl0ZW1zOiAzIH0sXG4gIGVuYWJsZVYyXzE6IGZhbHNlLFxuICBlbmFibGVTZWFyY2g6IGZhbHNlLFxuICBlbmFibGVTZWFyY2hIaWdobGlnaHQ6IHRydWUsXG4gIGNvbHVtbnNJbmNsdWRlZEluU2VhcmNoQnlEZWZhdWx0OiB0cnVlLFxuICBpbmNsdWRlSGlkZGVuQ29sdW1uc0luU2VhcmNoOiBmYWxzZSxcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb246IHRydWUsXG4gIGlkQ29sdW1uS2V5OiAnaWQnLFxuICBlbmFibGVCYWNrZ3JvdW5kOiB0cnVlLFxuICAvLyBBZyBncmlkXG4gIGNvbHVtblR5cGVzOiB7XG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuRGF0ZV06IHtcbiAgICAgIGZpbHRlcjogRGF0b0dyaWRGaWx0ZXJUeXBlcy5EYXRlLFxuICAgICAgY29tcGFyYXRvcjogKGE6IERhdGVUeXBlcywgYjogRGF0ZVR5cGVzKSA9PiBnZXRUaW1lKGEpIC0gZ2V0VGltZShiKVxuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuTnVtYmVyXToge1xuICAgICAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlclR5cGVzLk51bWJlclxuICAgIH0sXG4gICAgW0RhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nXTogc3RyaW5nQ29sRGVmLFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLlN0YXR1c106IHtcbiAgICAgIC4uLnN0cmluZ0NvbERlZixcbiAgICAgIGNlbGxSZW5kZXJlcjogJ0RhdG9HcmlkU3RhdHVzQ2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkl0ZW1zXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJdGVtc0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5JdGVtc0NvdW50XToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJdGVtc0NvdW50Q2VsbENvbXBvbmVudCdcbiAgICB9LFxuICAgIFtEYXRvR3JpZENvbHVtblR5cGVzLkluaXRpYWxzXToge1xuICAgICAgLi4uc3RyaW5nQ29sRGVmLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnRGF0b0dyaWRJbml0aWFsc0NlbGxDb21wb25lbnQnXG4gICAgfSxcbiAgICBbRGF0b0dyaWRDb2x1bW5UeXBlcy5BdmF0YXJdOiB7XG4gICAgICAuLi5zdHJpbmdDb2xEZWYsXG4gICAgICBjZWxsUmVuZGVyZXI6ICdEYXRvR3JpZEF2YXRhckNlbGxDb21wb25lbnQnXG4gICAgfVxuICB9LFxuICBtdWx0aVNvcnRLZXk6ICdjdHJsJyxcbiAgc3VwcHJlc3NQYWdpbmF0aW9uUGFuZWw6IHRydWUsXG4gIHBhZ2luYXRpb246IHRydWUsXG4gIHBhZ2luYXRlQ2hpbGRSb3dzOiB0cnVlLFxuICBkZWx0YUNvbHVtbk1vZGU6IHRydWUsXG4gIGxvYWRpbmdPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTG9hZGVyQ29tcG9uZW50LFxuICBub1Jvd3NPdmVybGF5Q29tcG9uZW50RnJhbWV3b3JrOiBEYXRvR3JpZFYyTm9EYXRhT3ZlcmxheUNvbXBvbmVudCxcbiAgZGVmYXVsdENvbERlZjoge1xuICAgIG1pbldpZHRoOiBHcmlkTWluV2lkdGhzLkRlZmF1bHQsXG4gICAgc29ydGFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIHR5cGU6IERhdG9HcmlkQ29sdW1uVHlwZXMuU3RyaW5nLFxuICAgIG1lbnVUYWJzOiBbJ2ZpbHRlck1lbnVUYWInXSxcbiAgICBoZWFkZXJDb21wb25lbnRGcmFtZXdvcms6IERhdG9HcmlkQ29sdW1uSGVhZGVyQ29tcG9uZW50XG4gIH0sXG4gIHN1cHByZXNzQ2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgc3VwcHJlc3NQcm9wZXJ0eU5hbWVzQ2hlY2s6IHRydWUsXG4gIHJvd0hlaWdodDogMzUsXG4gIGhlYWRlckhlaWdodDogMzAsXG4gIHJvd1NlbGVjdGlvbjogR3JpZFJvd1NlbGVjdGlvblR5cGUuTVVMVElQTEUsXG4gIHJvd0Rlc2VsZWN0aW9uOiB0cnVlLFxuICB1blNvcnRJY29uOiB0cnVlLFxuICBhbmltYXRlUm93czogdHJ1ZSxcbiAgcmVtZW1iZXJHcm91cFN0YXRlV2hlbk5ld0RhdGE6IHRydWUsXG4gIGdyb3VwTXVsdGlBdXRvQ29sdW1uOiB0cnVlLFxuICBncm91cERlZmF1bHRFeHBhbmRlZDogLTEsXG4gIHVzZVBpdm90R3JpZFN0eWxlOiBmYWxzZSxcbiAgZGlzYWJsZWRIVE1MUmVuZGVyaW5nRmllbGRzOiBbXSxcbiAgLi4uKGlzVGVzdEVudigpID8geyBzdXBwcmVzc0NvbHVtblZpcnR1YWxpc2F0aW9uOiB0cnVlLCByb3dCdWZmZXI6IDk5OTk5IH0gOiB7fSlcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dSSURfU0VBUkNIX0RFQk9VTkNFX1RJTUUgPSB7XG4gIENMSUVOVDogMjAwLFxuICBTRVJWRVI6IDI1MFxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHcmlkVHJlZUxhYmVsOiBEYXRvR3JpZFRyZWVDb25maWcgPSB7XG4gIGlkS2V5OiAnaWQnLFxuICBwYXJlbnRJREtleTogJ3BhcmVudElEJ1xufTtcblxuZXhwb3J0IGNvbnN0IGdyaWRUcmVlRmlsZVBhdGhLZXkgPSAnYWdHcmlkRmlsZVBhdGgnO1xuXG4vKipcbiAqIENlbGwgcmVuZGVyZXIgZm9yIHRyZWUgc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBnZXRHcmlkVHJlZUNlbGxSZW5kZXJlcigpIHtcbiAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgZUdyaWRDZWxsLCBjb2xEZWYgfSA9IGl0ZW07XG4gICAgY29uc3QgeyBpY29uOiBpdGVtSWNvbiwgaXNGb2xkZXIsIGluaXRpYWxzID0gdHJ1ZSB9ID0gZGF0YTtcbiAgICBjb25zdCBpY29uID0gZ2V0Um93SWNvbihpdGVtSWNvbiwgZUdyaWRDZWxsLCBpc0ZvbGRlcik7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBkYXRhW2NvbERlZlsnZmllbGQnXV07XG4gICAgY29uc3QgZW50aXR5Q2xhc3NOYW1lID0gJ2VudGl0eS1kaXNwbGF5LW5hbWUnO1xuICAgIGNvbnN0IHsgc3ZnUmVnaXN0cnkgfSA9IGNvbERlZi5ncmlkU2VydmljZTtcblxuICAgIGlmIChpY29uKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiZGF0by1zaW1wbGUtYm9sZFwiPiA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBmb2xkZXIgZC1mbGV4XCI+JHtzdmdSZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgIGljb25cbiAgICAgICl9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9XCI+PC9zcGFuPiAke2Rpc3BsYXlOYW1lfTwvc3Bhbj5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIiR7ZW50aXR5Q2xhc3NOYW1lfSBkYXRvLXNpbXBsZS1ib2xkXCI+JHtkaXNwbGF5TmFtZX08L3NwYW4+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbml0aWFscykge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEluaXRpYWxzKGRpc3BsYXlOYW1lKTtcbiAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwiJHtlbnRpdHlDbGFzc05hbWV9IGRhdG8tc2ltcGxlLWJvbGRcIj48c3BhbiBjbGFzcz1cImluaXRpYWxzXCI+JHtpbml0aWFsVmFsdWV9PC9zcGFuPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke2VudGl0eUNsYXNzTmFtZX0gZGF0by1zaW1wbGUtYm9sZFwiPiR7ZGlzcGxheU5hbWV9PC9zcGFuPmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcm93J3MgaWNvbi5cbiAqIElmIGljb24gaXMgb2YgdHlwZSBzdHJpbmcsIFJldHVybiBpdC5cbiAqIElmIGl0IGFuIG9iamVjdCwgUmV0dXJuIGJhc2VkIG9uIHRoZSBleHBhbmQgLyBjb2xsYXBzZSBzdGF0ZS5cbiAqIEBwYXJhbSBpY29uXG4gKiBAcGFyYW0gZUdyaWRDZWxsXG4gKiBAcGFyYW0gaXNGb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0Um93SWNvbihpY29uOiBBZ0dyaWRSb3dJY29uLCBlR3JpZENlbGw6IGFueSwgaXNGb2xkZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaWNvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZSA9IChlR3JpZENlbGwsIHsgZXhwYW5kZWQsIGNvbGxhcHNlZCB9KSA9PiB7XG4gICAgY29uc3QgYWdHcmlkUm93RXhwYW5kZWRDbGFzcyA9ICdhZy1yb3ctZ3JvdXAtZXhwYW5kZWQnO1xuICAgIHJldHVybiBlR3JpZENlbGwucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoYWdHcmlkUm93RXhwYW5kZWRDbGFzcykgPyBleHBhbmRlZCA6IGNvbGxhcHNlZDtcbiAgfTtcblxuICAvKipcbiAgICogSWYgaWNvbiB3YXNuJ3Qgb3ZlcnJpZGUgYnkgdGhlIHVzZXIgYW5kIHRoZSByb3cgaXMgb2YgdHlwZSBmb2xkZXIsXG4gICAqIFNldCBkZWZhdWx0IGZvbGRlciBpY29ucy5cbiAgICovXG4gIGlmIChpY29uID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNGb2xkZXIpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRGb2xkZXJJY29uczogQWdHcmlkUm93SWNvbiA9IHtcbiAgICAgICAgZXhwYW5kZWQ6ICdmb2xkZXItb3BlbicsXG4gICAgICAgIGNvbGxhcHNlZDogJ2ZvbGRlci1jbG9zZWQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGdldEljb25CYXNlZE9uUm93U3RhdGUoZUdyaWRDZWxsLCBkZWZhdWx0Rm9sZGVySWNvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycgPyBpY29uIDogZ2V0SWNvbkJhc2VkT25Sb3dTdGF0ZShlR3JpZENlbGwsIGljb24pO1xufVxuXG5sZXQgcG90ZW50aWFsUGFyZW50ID0gbnVsbDtcbmNvbnN0IGFnUm93SG92ZXJDbGFzc05hbWUgPSAnYWctcm93LWhvdmVyJztcblxubGV0IHVwZGF0aW5nQ2hlY2tib3hlc1Byb2dyYW1tYXRpY2FsbHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gZ2V0Q2VsbEJ5Um93SUQocm93SUQ6IHN0cmluZykge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW3Jvdy1pZD1cIiR7cm93SUR9XCJdID4gLmFnLWNlbGxgKTtcbn1cblxuLyoqXG4gKiBNYXJrIHBhcmVudCBmb2xkZXIgb2YgdGhlIG92ZXJOb2RlIGFzIGhvdmVyZWQgaW4gb3JkZXIgdG8gYXBwbHlcbiAqIHJlbGV2YW50IGNzcyBzdHlsZSB0byBpdC5cbiAqIEBwYXJhbSBvdmVyTm9kZVxuICovXG5mdW5jdGlvbiBvblJvd0RyYWdNb3ZlKHsgb3Zlck5vZGUsIG5vZGUgfSkge1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcblxuICBpZiAob3Zlck5vZGUpIHtcbiAgICAvLyBmb2xkZXIgdG8gZHJvcCBpbnRvIGlzIHdoZXJlIHdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBmaWxlL2ZvbGRlciB0b1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBvdmVyTm9kZS5kYXRhLmlzRm9sZGVyXG4gICAgICA/IC8vIGlmIG92ZXIgYSBmb2xkZXIsIHdlIHRha2UgdGhlIGltbWVkaWF0ZSByb3dcbiAgICAgICAgb3Zlck5vZGVcbiAgICAgIDogLy8gaWYgb3ZlciBhIGZpbGUsIHdlIHRha2UgdGhlIHBhcmVudCByb3cgKHdoaWNoIHdpbGwgYmUgYSBmb2xkZXIpXG4gICAgICAgIG92ZXJOb2RlLnBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICBmb2xkZXJUb0Ryb3BJbnRvID0gbm9kZS5yb3dNb2RlbC5yb290Tm9kZTtcbiAgfVxuXG4gIGlmIChwb3RlbnRpYWxQYXJlbnQpIHtcbiAgICBpZiAocG90ZW50aWFsUGFyZW50LmlkID09PSBmb2xkZXJUb0Ryb3BJbnRvLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUG90ZW50aWFsUGFyZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICAgIHByZXZpb3VzUG90ZW50aWFsUGFyZW50ICYmIHByZXZpb3VzUG90ZW50aWFsUGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoYWdSb3dIb3ZlckNsYXNzTmFtZSk7XG4gICAgICBwb3RlbnRpYWxQYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwb3RlbnRpYWxQYXJlbnQgPSBmb2xkZXJUb0Ryb3BJbnRvO1xuICB9XG4gIGlmIChmb2xkZXJUb0Ryb3BJbnRvKSB7XG4gICAgY29uc3QgZm9sZGVySUQ6IHN0cmluZyA9IGZvbGRlclRvRHJvcEludG8uaWQ7XG4gICAgY29uc3QgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgPSBnZXRDZWxsQnlSb3dJRChmb2xkZXJJRCk7XG4gICAgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQgJiYgZm9sZGVyVG9Ecm9wSW50b0VsZW1lbnQuY2xhc3NMaXN0LmFkZChhZ1Jvd0hvdmVyQ2xhc3NOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblJvd0RyYWdFbmQoeyBvdmVyTm9kZSwgbm9kZSB9KSB7XG4gIGxldCBub2RlUGFyZW50O1xuICBsZXQgZm9sZGVyVG9Ecm9wSW50bztcbiAgaWYgKG92ZXJOb2RlKSB7XG4gICAgbm9kZVBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIC8vIGZvbGRlciB0byBkcm9wIGludG8gaXMgd2hlcmUgd2UgYXJlIGdvaW5nIHRvIG1vdmUgdGhlIGZpbGUvZm9sZGVyIHRvXG4gICAgZm9sZGVyVG9Ecm9wSW50byA9IG92ZXJOb2RlLmRhdGEuaXNGb2xkZXJcbiAgICAgID8gLy8gaWYgb3ZlciBhIGZvbGRlciwgd2UgdGFrZSB0aGUgaW1tZWRpYXRlIHJvd1xuICAgICAgICBvdmVyTm9kZVxuICAgICAgOiAvLyBpZiBvdmVyIGEgZmlsZSwgd2UgdGFrZSB0aGUgcGFyZW50IHJvdyAod2hpY2ggd2lsbCBiZSBhIGZvbGRlcilcbiAgICAgICAgb3Zlck5vZGUucGFyZW50O1xuICB9IGVsc2Uge1xuICAgIG5vZGVQYXJlbnQgPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICAgIGZvbGRlclRvRHJvcEludG8gPSBub2RlLnJvd01vZGVsLnJvb3ROb2RlO1xuICB9XG5cbiAgLy8gdGhlIGRhdGEgd2Ugd2FudCB0byBtb3ZlXG4gIGNvbnN0IG1vdmluZ0RhdGEgPSBub2RlLmRhdGE7XG5cbiAgY29uc3QgdHJlZU1heERlcHRoOiBudW1iZXIgPSBub2RlLmdyaWRPcHRpb25zV3JhcHBlci5ncmlkT3B0aW9ucy5tYXhEZXB0aCB8fCAtMTtcbiAgLy8gRGlzYWJsZSBuZXN0ZWQgZHJhZyB3aGVuIHRyZWUgZGVwdGggaXMgYWJvdmUgdGhlIGxpbWl0XG4gIGlmIChcbiAgICBtb3ZpbmdEYXRhLmlzRm9sZGVyICYmXG4gICAgdHJlZU1heERlcHRoICE9PSAtMSAmJlxuICAgIG5vZGVQYXJlbnQuaWQgIT09IFJPT1RfTk9ERV9JRCAmJlxuICAgIG92ZXJOb2RlLmRhdGEuYWdHcmlkRmlsZVBhdGgubGVuZ3RoID4gdHJlZU1heERlcHRoXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHRha2UgbmV3IHBhcmVudCBwYXRoIGZyb20gcGFyZW50LCBpZiBkYXRhIGlzIG1pc3NpbmcsIG1lYW5zIGl0J3MgdGhlIHJvb3Qgbm9kZSxcbiAgLy8gd2hpY2ggaGFzIG5vIGRhdGEuXG4gIGNvbnN0IG5ld1BhcmVudFBhdGggPSBmb2xkZXJUb0Ryb3BJbnRvLmRhdGEgPyBmb2xkZXJUb0Ryb3BJbnRvLmRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gOiBbXTtcbiAgY29uc3QgbmVlZFRvQ2hhbmdlUGFyZW50ID0gIWlzRXF1YWwobmV3UGFyZW50UGF0aCwgbW92aW5nRGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XSk7XG5cbiAgLy8gY2hlY2sgd2UgYXJlIG5vdCBtb3ZpbmcgYSBmb2xkZXIgaW50byBhIGNoaWxkIGZvbGRlclxuICBjb25zdCBpbnZhbGlkTW9kZSA9IGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQobm9kZSwgZm9sZGVyVG9Ecm9wSW50byk7XG4gIGlmIChpbnZhbGlkTW9kZSkge1xuICAgIGNvbnNvbGUubG9nKCdpbnZhbGlkIG1vdmUnKTtcbiAgfVxuXG4gIGlmIChuZWVkVG9DaGFuZ2VQYXJlbnQgJiYgIWludmFsaWRNb2RlKSB7XG4gICAgY29uc3QgdXBkYXRlZFJvd3MgPSBbXTtcbiAgICBjb25zdCB7IGlkS2V5IH06IERhdG9HcmlkVHJlZUNvbmZpZyA9IHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmdyaWRTZXJ2aWNlLnRyZWVDb25maWc7XG4gICAgbW92ZVRvUGF0aChuZXdQYXJlbnRQYXRoLCBub2RlLCB1cGRhdGVkUm93cywgaWRLZXkpO1xuXG4gICAgY29uc3QgYWZmZWN0ZWRSb3dzID0gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZ3JpZFNlcnZpY2UudXBkYXRlUm93cyh1cGRhdGVkUm93cyk7XG5cbiAgICBzZXRSb3dDbGFzc2VzKFsuLi5hZmZlY3RlZFJvd3MudXBkYXRlLCBvdmVyTm9kZSwgbm9kZVBhcmVudF0pO1xuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcHJldmlvdXMgbWFya2VkIHBhcmVudCBmcm9tIGhvdmVyIHN0eWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGhvdmVyZWRQYXJlbnRFbGVtZW50ID0gZ2V0Q2VsbEJ5Um93SUQocG90ZW50aWFsUGFyZW50LmlkKTtcbiAgICBob3ZlcmVkUGFyZW50RWxlbWVudCAmJiBob3ZlcmVkUGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGFnUm93SG92ZXJDbGFzc05hbWUpO1xuICAgIHBvdGVudGlhbFBhcmVudCA9IG51bGw7XG5cbiAgICAvKiogUmVkcmF3IHRoZSBmb2xkZXJzIHRoYXQgaGFzIGJlZW4gZHJhZ2dlZCBmcm9tIGFuZCB0byxcbiAgICAgKiB0byBhcHBseSB0aGVpciBjbGFzc2VkIHRocm91Z2ggY2xhc3NSdWxlcyBjb25maWcgKi9cbiAgICB0aGlzLmFwaS5yZWRyYXdSb3dzKHsgcm93Tm9kZXM6IFtub2RlUGFyZW50LCBmb2xkZXJUb0Ryb3BJbnRvXSB9KTtcbiAgICB0aGlzLmFwaS5jbGVhckZvY3VzZWRDZWxsKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0Um93Q2xhc3Nlcyhyb3dzKSB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IFtgJHthZ1Jvd0xldmVsUHJlZml4fTFgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTJgLCBgJHthZ1Jvd0xldmVsUHJlZml4fTNgXTtcbiAgcm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtyb3ctaWQ9XCIke3Jvdy5pZH1cIl1gKVsxXTtcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc0xpc3QpIHtcbiAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub2RlLmNsYXNzTGlzdC5hZGQoYCR7YWdSb3dMZXZlbFByZWZpeH0ke3Jvdy5sZXZlbH1gKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblJvd1NlbGVjdGVkKHBhcmFtcykge1xuICBpZiAodXBkYXRpbmdDaGVja2JveGVzUHJvZ3JhbW1hdGljYWxseSkge1xuICAgIHJldHVybjtcbiAgfVxuICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcblxuICBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhwYXJhbXMubm9kZSwgcGFyYW1zLm5vZGUuc2VsZWN0ZWQpO1xuICByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KHBhcmFtcy5ub2RlKTtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB1cGRhdGluZ0NoZWNrYm94ZXNQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBzZXRDaGlsZHJlblNlbGVjdGlvblN0YXR1cyhub2RlLCBzZWxlY3RlZCkge1xuICBsZXQgaGFzQ2hpbGRyZW4gPSBub2RlLmFsbENoaWxkcmVuQ291bnQgPiAwO1xuICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICBub2RlLmFsbExlYWZDaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGNoaWxkLnNldFNlbGVjdGVkKHNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoUGFyZW50c1NlbGVjdGlvblN0YXR1c1JlY3Vyc2l2ZWx5KG5vZGUpIHtcbiAgbGV0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudDtcbiAgd2hpbGUgKHBhcmVudE5vZGUpIHtcbiAgICBpZiAocGFyZW50Tm9kZS5pZCA9PT0gUk9PVF9OT0RFX0lEKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKHBhcmVudE5vZGUpO1xuICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWZyZXNoU2VsZWN0aW9uU3RhdHVzKG5vZGUpIHtcbiAgbGV0IGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzID0gbm9kZS5hbGxMZWFmQ2hpbGRyZW4ubWFwKG5vZGUgPT4gbm9kZS5zZWxlY3RlZCk7XG5cbiAgaWYgKGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLmV2ZXJ5KHNlbGVjdGVkVmFsdWUgPT4gc2VsZWN0ZWRWYWx1ZSA9PT0gdHJ1ZSB8fCBzZWxlY3RlZFZhbHVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNoaWxkcmVuU2VsZWN0aW9uU3RhdHVzLnNoaWZ0KCk7XG5cbiAgbGV0IG5vZGVTZWxlY3Rpb25TdGF0dXMgPSBjaGlsZHJlblNlbGVjdGlvblN0YXR1cy5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIG5vZGUuc2VsZWN0VGhpc05vZGUobm9kZVNlbGVjdGlvblN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzZWxlY3RlZCBub2RlIGlzIGEgY2hpbGQgb2YgdGhlIHRhcmdldCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBzZWxlY3RlZE5vZGVcbiAqIEBwYXJhbSB0YXJnZXROb2RlXG4gKi9cbmZ1bmN0aW9uIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoc2VsZWN0ZWROb2RlLCB0YXJnZXROb2RlKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkcmVuID0gc2VsZWN0ZWROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0YXJnZXROb2RlICYmIGNoaWxkcmVuW2ldLmtleSA9PT0gdGFyZ2V0Tm9kZS5rZXkpIHJldHVybiB0cnVlO1xuICAgIGlzU2VsZWN0aW9uUGFyZW50T2ZUYXJnZXQoY2hpbGRyZW5baV0sIHRhcmdldE5vZGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIHRoaXMgdXBkYXRlcyB0aGUgZmlsZVBhdGggbG9jYXRpb25zIGluIG91ciBkYXRhLCB3ZSB1cGRhdGUgdGhlIGRhdGFcbiBiZWZvcmUgd2Ugc2VuZCBpdCB0byBhZy1HcmlkXG4gKi9cbmZ1bmN0aW9uIG1vdmVUb1BhdGgobmV3UGFyZW50UGF0aCwgeyBkYXRhLCBjaGlsZHJlbkFmdGVyR3JvdXAgfSwgYWxsVXBkYXRlZE5vZGVzLCBpZEtleTogc3RyaW5nKSB7XG4gIC8vIGxhc3QgcGFydCBvZiB0aGUgZmlsZSBwYXRoIGlzIHRoZSBmaWxlIG5hbWVcbiAgY29uc3QgbmV3Q2hpbGRQYXRoID0gbmV3UGFyZW50UGF0aC5zbGljZSgpO1xuXG4gIGRhdGFbZ3JpZFRyZWVGaWxlUGF0aEtleV0gPSBuZXdDaGlsZFBhdGg7XG5cbiAgYWxsVXBkYXRlZE5vZGVzLnB1c2goZGF0YSk7XG5cbiAgaWYgKHNpemUoY2hpbGRyZW5BZnRlckdyb3VwKSA+IDApIHtcbiAgICBjaGlsZHJlbkFmdGVyR3JvdXAuZm9yRWFjaChmdW5jdGlvbihjaGlsZE5vZGUpIHtcbiAgICAgIG1vdmVUb1BhdGgoWy4uLm5ld0NoaWxkUGF0aCwgZGF0YVtpZEtleV1dLCBjaGlsZE5vZGUsIGFsbFVwZGF0ZWROb2RlcywgaWRLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGF0YVtncmlkVHJlZUZpbGVQYXRoS2V5XS5wdXNoKGRhdGFbaWRLZXldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRhdGEgaW50byB0cmVlIHNoYXBlZCBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGdyaWRUcmVlQ29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICBjb25zdCB7IHBhcmVudElES2V5LCBpZEtleSB9ID0gZ3JpZFRyZWVDb25maWc7XG4gIGNvbnN0IGdlbmVyYXRlRmlsZVBhdGggPSAoaXRlbSwgaW5pdENoaWxkID0gZmFsc2UpOiBJRFtdID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gaW5pdENoaWxkID8gW2l0ZW1baWRLZXldXSA6IFtdO1xuICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGRhdGEuZmluZChlbnRpdHkgPT4gZW50aXR5W2lkS2V5XSA9PT0gaXRlbVtwYXJlbnRJREtleV0pO1xuICAgIHBhdGgudW5zaGlmdChwYXJlbnRFbnRpdHlbaWRLZXldKTtcblxuICAgIGlmIChwYXJlbnRFbnRpdHlbcGFyZW50SURLZXldKSB7XG4gICAgICBjb25zdCBlbnRpdHlQYXRoID0gZ2VuZXJhdGVGaWxlUGF0aChwYXJlbnRFbnRpdHkpO1xuICAgICAgcGF0aC51bnNoaWZ0KC4uLmVudGl0eVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZXJlJ3Mgbm8gcGFyZW50SUQsIFNldCB0aGUgaXRlbSBpbiB0byByb290IG9mIHRoZSB0cmVlLlxuICAgKiBFbHNlLCBSZWN1cnNpdmVseSBjcmVhdGUgdGhlIHBhdGguXG4gICAqL1xuICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgaWYgKGl0ZW1bcGFyZW50SURLZXldKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBbZ3JpZFRyZWVGaWxlUGF0aEtleV06IGdlbmVyYXRlRmlsZVBhdGgoaXRlbSwgdHJ1ZSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIFtncmlkVHJlZUZpbGVQYXRoS2V5XTogW2l0ZW1baWRLZXldXVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdyaWRzIGRhdGEgZnJvbSB0cmVlIHNoYXBlIHRvIG9yaWdpbmFsIHNoYXBlLlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSBncmlkVHJlZUNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEZyb21UcmVlRGF0YTxUPihkYXRhOiBUW10sIGdyaWRUcmVlQ29uZmlnOiBEYXRvR3JpZFRyZWVDb25maWcpOiBUW10ge1xuICByZXR1cm4gZGF0YS5tYXAoKHsgLi4ucm93IH0pID0+IHtcbiAgICBjb25zdCBwYXRoOiBJRFtdID0gcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIGNvbnN0IHBhcmVudElEOiBJRCA9IHNpemUocGF0aCkgPiAxID8gcGF0aFtwYXRoLmxlbmd0aCAtIDJdIDogMDtcbiAgICBkZWxldGUgcm93W2dyaWRUcmVlRmlsZVBhdGhLZXldO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yb3csXG4gICAgICBbZ3JpZFRyZWVDb25maWcucGFyZW50SURLZXldOiBwYXJlbnRJRFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggZXhwYW5kZWQgLyBjb2xsYXBzZWQgcm93IGZvciB0aGUgZ3JpZCB0byBkZXRlY3RcbiAqIHRoZSBjaGFuZ2UuXG4gKiBAcGFyYW0gbm9kZVxuICovXG5mdW5jdGlvbiByb3dHcm91cE9wZW5lZCh7IG5vZGUgfSkge1xuICB0aGlzLmFwaS5yZWZyZXNoQ2VsbHMoeyBmb3JjZTogdHJ1ZSwgcm93Tm9kZXM6IFtub2RlXSB9KTtcbn1cbiJdfQ==
@@ -119,12 +119,6 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
119
119
  });
120
120
  }
121
121
  normalizeOptions() {
122
- /**
123
- * When treeData is enabled, Pagination must be turned off
124
- */
125
- if (this.gridOptions.treeData) {
126
- this.gridOptions = Object.assign(Object.assign({}, this.gridOptions), { pagination: false });
127
- }
128
122
  const params = {
129
123
  gridOptions: this.gridOptions,
130
124
  customHeadersTemplates: this.customHeadersTemplates,
@@ -488,4 +482,4 @@ DatoGridControllerComponent = __decorate([
488
482
  DatoHotkeys, Object])
489
483
  ], DatoGridControllerComponent);
490
484
  export { DatoGridControllerComponent };
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBYXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxx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QUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFFBQVEsRUFBRTs7R0FFVDtRQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztLQUMvQyxDQUFDO0lBcURHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7cUNBVFYsV0FBVztRQUNiLFNBQVM7UUFDZCxpQkFBaUI7UUFDUixZQUFZO1FBQ2Ysb0JBQW9CO1FBQ3pCLFVBQVU7UUFDTixRQUFRO1FBQ1Isd0JBQXdCO1FBQ3pCLFdBQVc7R0FuRG5CLDJCQUEyQixDQStmdkM7U0EvZlksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7XG4gIEJvZHlTY3JvbGxFdmVudCxcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBDZWxsTW91c2VPdXRFdmVudCxcbiAgQ2VsbE1vdXNlT3ZlckV2ZW50LFxuICBDb2x1bW5SZXNpemVkRXZlbnQsXG4gIENvbHVtblJvd0dyb3VwQ2hhbmdlZEV2ZW50LFxuICBEZXRhaWxHcmlkSW5mbyxcbiAgR3JpZEFwaSxcbiAgUm93R3JvdXBPcGVuZWRFdmVudFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zU2l6ZXMsIGlzSHRtbEFsbG93ZWRGb3JDb2wgfSBmcm9tICcuLi9ncmlkLXN0b3JlL3V0aWwnO1xuaW1wb3J0IHsgR3JpZFN0b3JlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuL2dyaWQtY29udHJvbGxlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFsaWdubWVudCwgRGF0b0dyaWRPcHRpb25zLCBEYXRvR3JpZFNvcnQsIEdyaWRDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pY29uLXJlZ2lzdHJ5JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2RlZXAtbWVyZ2UnO1xuaW1wb3J0IHsgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jdXN0b20taGVhZGVyL2N1c3RvbS1oZWFkZXItdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBHcmlkQWN0aW9uLCBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUT19HUklEX1NUT1JBR0VfQVBJLCBHcmlkU3RvcmFnZUFQSSB9IGZyb20gJy4uL2dyaWQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhZGRDbGFzcywgYXBwZW5kQ2hpbGQsIHF1ZXJ5IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICd0b29sdGlwLmpzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBjcmVhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hbmd1bGFyL2R5bmFtaWMtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLW9uLWhvdmVyL2dyaWQtb24taG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbnZlcnRGcm9tVHJlZURhdGEsIGRlZmF1bHRHcmlkT3B0aW9ucywgZGVmYXVsdFRyZWVPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLmNvbmZpZyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcbmltcG9ydCB7IERhdG9Ib3RrZXlzIH0gZnJvbSAnLi4vLi4vaG90a2V5cy9ob3RrZXlzLnNlcnZpY2UnO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0IHsgRGF0b0dyaWRFeHRlcm5hbEZpbHRlciB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLWNvbnRyb2xsZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtHcmlkUXVlcnksIEdyaWRTZXJ2aWNlLCBHcmlkU3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERhdG9HcmlkQ29udHJvbGxlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50KSBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiBRdWVyeUxpc3Q8XG4gICAgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50XG4gID47XG5cbiAgQE91dHB1dCgpIG9uR3JpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZENoYW5nZUV2ZW50PigpO1xuICBASW5wdXQoKSByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBncmlkQWN0aW9uczogR3JpZEFjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHNldCBncmlkT3B0aW9ucyhncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zKSB7XG4gICAgdGhpcy5fZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVEYXRhID0gZ3JpZE9wdGlvbnMudHJlZURhdGE7XG4gICAgdGhpcy5ncmlkU2VydmljZS5pc1Bpdm90TW9kZSA9IGdyaWRPcHRpb25zLnBpdm90TW9kZTtcblxuICAgIGlmICh0aGlzLmFnR3JpZEVsKSB7XG4gICAgICBpZiAoZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgIXRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMudHJlZUdyaWRDbGFzcykgJiYgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9IGVsc2UgaWYgKCFncmlkT3B0aW9ucy5lbmFibGVWMl8xKSB7XG4gICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCh0aGlzLnRyZWVHcmlkQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBncmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNvbnRlbnRJbml0ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSB0b29sdGlwO1xuICBwcml2YXRlIF9ncmlkT3B0aW9uczogRGF0b0dyaWRPcHRpb25zO1xuICBncmlkUmVhZHkkID0gdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JDtcbiAgYWdHcmlkRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcm93SG92ZXJDb21wb25lbnQ6IENvbXBvbmVudFJlZjxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+O1xuICBwcml2YXRlIGxhc3RIb3ZlcmVkUm93OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBncmlkRWxlbWVudHMgPSB7XG4gICAgY2VudGVyVmlld3BvcnQ6IG51bGwsXG4gICAgY2VudGVyQ29udGFpbmVyOiBudWxsLFxuICAgIGJvZHlWaWV3cG9ydDogbnVsbFxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRyZWVHcmlkQ2xhc3MgPSAndHJlZSc7XG4gIHByaXZhdGUgY2VsbE1vdXNlT3V0VGltZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvdGtleXM6IERhdG9Ib3RrZXlzLFxuICAgIEBJbmplY3QoREFUT19HUklEX1NUT1JBR0VfQVBJKSBwcml2YXRlIHN0b3JhZ2VBUEk6IEdyaWRTdG9yYWdlQVBJXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ICYmIHRoaXMucm93SG92ZXJDb21wb25lbnQuZGVzdHJveSgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBudWxsO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUdyaWQoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAoIXRoaXMuY29udGVudEluaXQuaXNTdG9wcGVkKSB7XG4gICAgICB0aGlzLl9pbml0aWFsaXplR3JpZChhZ0dyaWQsIGFnR3JpZEVsKTtcbiAgICAgIHRoaXMuY29udGVudEluaXQubmV4dCgpO1xuICAgICAgdGhpcy5jb250ZW50SW5pdC5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplR3JpZChhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIsIGFnR3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuYWdHcmlkRWwgPSBhZ0dyaWRFbDtcbiAgICB0aGlzLmNvbnRlbnRJbml0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB0aGlzLm5vcm1hbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgICBhZ0dyaWQuZ3JpZE9wdGlvbnMgPSB0aGlzLmdyaWRPcHRpb25zO1xuICAgICAgICAgIGNvbnN0IHNldHRpbmdzTG9hZGVyID1cbiAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2F2ZVNldHRpbmdzID09PSBmYWxzZSA/IG9mKG51bGwpIDogdGhpcy5zdG9yYWdlQVBJLmdldCh0aGlzLmdyaWRPcHRpb25zLmdyaWROYW1lKTtcbiAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbYWdHcmlkLmdyaWRSZWFkeSwgc2V0dGluZ3NMb2FkZXJdKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbeyBhcGksIGNvbHVtbkFwaSB9LCBzYXZlZFNldHRpbmdzID0ge31dOiBbRGV0YWlsR3JpZEluZm8sIFBhcnRpYWw8RGF0b0dyaWRTZXR0aW5ncz5dKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5yb3dEYXRhKSB7XG4gICAgICAgICAgYXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ncmlkT3B0aW9ucy5zdGF0dXNCYXIpIHtcbiAgICAgICAgICAvKiogRml4IGFnLWdyaWQgYnVnIHRoYXQgZG9lc24ndCBhZGQgYWctaGlkZGVuIGNsYXNzIHRvIHRoZSBzdGF0dXMgYmFyLCB3aGljaCBvbmx5IGdldCBmaXhlZCBpbiBsYXRlciB2ZXJzaW9ucyAqL1xuICAgICAgICAgIGNvbnN0IGVsID0gYWdHcmlkRWwucXVlcnlTZWxlY3RvcignLmFnLXN0YXR1cy1iYXInKTtcblxuICAgICAgICAgIGFkZENsYXNzKGVsLCAnYWctaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ3JpZEFwaTogRGF0b0dyaWRBcGkgPSB7IGdyaWQ6IGFwaSwgY29sdW1uczogY29sdW1uQXBpIH07XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG5cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5pbml0U2V0dGluZ3Moc2F2ZWRTZXR0aW5ncyB8fCB7fSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyR3JpZExpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fZ3JpZFJlYWR5Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoJ3RyZWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoYHJvdy1oZWlnaHQtJHt0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodH1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9wdGlvbnMoKSB7XG4gICAgLyoqXG4gICAgICogV2hlbiB0cmVlRGF0YSBpcyBlbmFibGVkLCBQYWdpbmF0aW9uIG11c3QgYmUgdHVybmVkIG9mZlxuICAgICAqL1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAuLi50aGlzLmdyaWRPcHRpb25zLFxuICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZ3JpZE9wdGlvbnM6IHRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiB0aGlzLmN1c3RvbUhlYWRlcnNUZW1wbGF0ZXMsXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLmdyaWRTZXJ2aWNlLm5vcm1hbGl6ZU9wdGlvbnMocGFyYW1zKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLih0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhID8gZGVmYXVsdFRyZWVPcHRpb25zIDoge30pLFxuICAgICAgaWNvbnM6IHRoaXMuZ2V0R3JpZEljb25zKCksXG4gICAgICBkaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHM6XG4gICAgICAgIG5vcm1hbGl6ZWQuZGlzYWJsZWRIVE1MUmVuZGVyaW5nRmllbGRzIHx8IGRlZmF1bHRHcmlkT3B0aW9ucy5kaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHNcbiAgICB9O1xuICAgIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdHMsIG5vcm1hbGl6ZWQpO1xuICB9XG5cbiAgc2V0R3JpZFJvd3M8VD4oZGF0YTogVFtdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRSb3dzPFQ+KGRhdGEpO1xuICB9XG5cbiAgc2V0R3JpZEZpbHRlcnMoZmlsdGVyczogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHNldEdyaWRTb3J0KHNvcnQ6IERhdG9HcmlkU29ydCkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZFNvcnQoc29ydCk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWRJY29ucygpOiBIYXNoTWFwPHN0cmluZz4ge1xuICAgIGNvbnN0IG1vdmVDb2x1bW5JY29uID0gYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAnbW92ZS1jb2x1bW4nXG4gICAgKX08L3NwYW4+YDtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBFeHBhbmRlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtZXhwYW5kZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgZ3JvdXBDb250cmFjdGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1jb250cmFjdGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVQaW46IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBwcmltYXJ5LTMwMC1maWxsIGNvbHVtbi1tb3ZlLXBpblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAncGluJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVIaWRlOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmUtaGlkZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnZXllLWhpZGUnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZU1vdmU6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgY29sdW1uTW92ZUxlZnQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgY29sdW1uTW92ZVJpZ2h0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIHJvd0RyYWc6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBkcmFnIGQtZmxleFwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKCdkcmFnLTAxJyl9PC9zcGFuPmBcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIHRoaXMubGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpLCBhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvQ29sdW1uUmVzaXplKGFwaTogRGF0b0dyaWRBcGksIHsgY29sdW1uUmVzaXplZCB9OiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgbGV0IG9ic2VydmFibGUgPSBjb2x1bW5SZXNpemVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlT25Ib3ZlclBvcygpKVxuICAgICAgKTtcbiAgICB9XG4gICAgb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGF1ZGl0VGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKHsgZmluaXNoZWQsIHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IGZpbmlzaGVkICYmIHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgY29uc3QgW2NvbHVtbl0gPSBlLmNvbHVtbnM7XG4gICAgICAgIGxldCBjb2x1bW5zU2l6ZXMgPSB7IC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldENvbHVtblNpemVzKCkgfTtcbiAgICAgICAgaWYgKGNvbHVtbnNTaXplcykge1xuICAgICAgICAgIGNvbHVtbnNTaXplc1tjb2x1bW4uZ2V0Q29sSWQoKV0gPSBjb2x1bW4uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyh7IGdyaWRBbGlnbm1lbnQ6IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSwgY29sdW1uc1NpemVzIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBjb25zdCB7IGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQsIGZpbHRlckNoYW5nZWQgfSA9IGFnR3JpZDtcbiAgICBtZXJnZShjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8qIFNraXAgdGhlIGluaXRpYWwgc29ydGluZyBldmVudCBmaXJlZCBieSB0aGUgZ3JpZCB3aGVuIGFkZGluZyByb3dzICovXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IHR5cGUgfSkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHNldHRpbmdzRGlmZik7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEdyaWREYXRhKCk7XG4gICAgICAgIHRoaXMub25HcmlkQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIGZpbHRlcjogdGhpcy5ncmlkUXVlcnkuZ2V0RXh0ZXJuYWxGaWx0ZXIoKSxcbiAgICAgICAgICBzb3J0OiB0aGlzLmdyaWRRdWVyeS5nZXRTb3J0KCksXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvU3RvcmVTZXR0aW5nc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZVNldHRpbmdzVG9TZXJ2ZXIoc2V0dGluZ3NEaWZmKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgdGhpcy5ncmlkRWxlbWVudHMgPSB7XG4gICAgICBjZW50ZXJDb250YWluZXI6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBjZW50ZXJWaWV3cG9ydDogcXVlcnkoJy5hZy1jZW50ZXItY29scy12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgYm9keVZpZXdwb3J0OiBxdWVyeSgnLmFnLWJvZHktdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKVxuICAgIH07XG4gICAgdGhpcy5yZWdpc3RlckdyaWRDbGlja0xpc3RlbmVyKGFwaS5ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcihhcGkpO1xuICAgIHRoaXMucmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICAvKiBNYWtlIGdyb3VwIGV4cGFuZC9jb2xsYXBzZSBvbiBhIHNpbmdsZSBjbGljayBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRvdWJsZSBjbGljayAqL1xuICAgIGFnR3JpZC5jb2x1bW5Sb3dHcm91cENoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY29sdW1ucyB9OiBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBFTVBUWVxuICAgICAgICAgICAgOiBhZ0dyaWQuY2VsbENsaWNrZWQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgdmFsdWUsIG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBub2RlLmdyb3VwID09PSB0cnVlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB7XG4gICAgICAgIG5vZGUuc2V0RXhwYW5kZWQoIW5vZGUuZXhwYW5kZWQpO1xuICAgICAgfSk7XG4gICAgLyogV2hlbiBjbG9zaW5nIGEgZ3JvdXBlZCByb3cgd2Ugd2FudCB0byBoaWRlIHRoZSBvbiBob3ZlciBhY3Rpb25zICovXG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgYWdHcmlkLnJvd0dyb3VwT3BlbmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeyBub2RlIH06IFJvd0dyb3VwT3BlbmVkRXZlbnQpID0+IG5vZGUuZXhwYW5kZWQgPT09IGZhbHNlKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY2xpY2sgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ3JpZHMgYm9keSBhbmQgbm90IGEgcm93LCBjbGVhciB0aGUgcm93cyBzZWxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGk6IEdyaWRBcGkpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyVmlld3BvcnQgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0ID09PSBib2R5Vmlld3BvcnQgfHwgZXZlbnQudGFyZ2V0ID09PSBjZW50ZXJWaWV3cG9ydCkgJiYgYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBhcGkuZGVzZWxlY3RBbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uSG92ZXJFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLmVuYWJsZWQgJiYgdGhpcy5yb3dBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGxldCBsYXN0SG92ZXJlZENlbGw7XG4gICAgY29uc3Qgb25Ib3ZlckVuYWJsZWQgPSB0aGlzLm9uSG92ZXJFbmFibGVkKCk7XG4gICAgaWYgKG9uSG92ZXJFbmFibGVkKSB7XG4gICAgICBmcm9tRXZlbnQoY2VudGVyQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3ModGhpcy5sYXN0SG92ZXJlZFJvdyk7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGFnR3JpZC5ib2R5U2Nyb2xsLnBpcGUoZmlsdGVyKCh7IGRpcmVjdGlvbiB9OiBCb2R5U2Nyb2xsRXZlbnQpID0+IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSksXG4gICAgICAgIGFnR3JpZC5yb3dEYXRhQ2hhbmdlZFxuICAgICAgKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRPbkhvdmVyRWxlbWVudCgpO1xuICAgIH1cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3Zlci5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKGV2ZW50OiBDZWxsTW91c2VPdmVyRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgbm9kZSwgY29sdW1uIH0gPSBldmVudDtcbiAgICAgIGlmIChsYXN0SG92ZXJlZENlbGwgPT09IGAke25vZGUuaWR9LSR7Y29sdW1uLmdldENvbElkKCl9YCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jZWxsTW91c2VPdXRUaW1lcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IGAke25vZGUuaWR9LSR7Y29sdW1uLmdldENvbElkKCl9YDtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZXZlbnQpO1xuICAgICAgY29uc3Qgcm93ID0gKGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgIGlmIChvbkhvdmVyRW5hYmxlZCAmJiAobm9kZS5ncm91cCA9PT0gZmFsc2UgfHwgaXNOaWwobm9kZS5ncm91cCkpICYmIHRoaXMubGFzdEhvdmVyZWRSb3cgIT09IHJvdykge1xuICAgICAgICBjb25zdCBwcmV2aW91c05vZGUgPSB0aGlzLmxhc3RIb3ZlcmVkUm93O1xuICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gcm93O1xuICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3MoW3ByZXZpb3VzTm9kZSwgdGhpcy5sYXN0SG92ZXJlZFJvd10pO1xuICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZSh0cnVlLCBldmVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgb25Ub29sdGlwT3V0ID0gbWVyZ2UoZnJvbUV2ZW50KGJvZHlWaWV3cG9ydCwgJ3Njcm9sbCcpLCBmcm9tRXZlbnQodGhpcy5hZ0dyaWRFbCwgJ21vdXNlbGVhdmUnKSk7XG4gICAgb25Ub29sdGlwT3V0LnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBsYXN0SG92ZXJlZENlbGwgPSBudWxsO1xuICAgICAgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICB9KTtcblxuICAgIGFnR3JpZC5jZWxsTW91c2VPdXRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIWlzTmlsKHRoaXMudG9vbHRpcCkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2VsbE1vdXNlT3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmNsZWFyVG9vbHRpcCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2UgdGhlIHRvb2x0aXBcbiAgICovXG4gIGNsZWFyVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwLmRpc3Bvc2UoKTtcbiAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcChldmVudDogQ2VsbEV2ZW50KSB7XG4gICAgbGV0IGNlbGw6IEhUTUxFbGVtZW50ID0gZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChjZWxsLnRhZ05hbWUgPT09ICdTUEFOJyAmJiBjZWxsLnNjcm9sbFdpZHRoID09PSAwKSB7XG4gICAgICBjZWxsID0gY2VsbC5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY29sRGVmLmVkaXRhYmxlKSB7XG4gICAgICBjZWxsID0gY2VsbC5xdWVyeVNlbGVjdG9yKCcudmFsdWUtd3JhcHBlcicpIHx8IGNlbGw7XG4gICAgfVxuICAgIGNvbnN0IHRleHRPdmVyZmxvdyA9IGNlbGwub2Zmc2V0V2lkdGggPCBjZWxsLnNjcm9sbFdpZHRoO1xuICAgIGlmICh0ZXh0T3ZlcmZsb3cpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNlbGxNb3VzZU91dFRpbWVyKTtcbiAgICAgIGNvbnN0IGFsbG93SFRNTCA9IGlzSHRtbEFsbG93ZWRGb3JDb2wodGhpcy5ncmlkT3B0aW9ucywgZXZlbnQuY29sRGVmKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY2VsbCwgdmFsdWU6IGNlbGwuaW5uZXJUZXh0LCBhbGxvd0hUTUwgfTtcblxuICAgICAgaXNOaWwodGhpcy50b29sdGlwKSA/IHRoaXMuY3JlYXRlQW5kU2hvd1Rvb2x0aXAocGFyYW1zKSA6IHRoaXMudXBkYXRlVG9vbHRpcChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5kU2hvd1Rvb2x0aXAoeyBjZWxsLCB2YWx1ZSwgYWxsb3dIVE1MIH0pIHtcbiAgICB0aGlzLnRvb2x0aXAgPSBuZXcgVG9vbHRpcChjZWxsLCB7XG4gICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LFxuICAgICAgdHJpZ2dlcjogJ21hbnVhbCcsXG4gICAgICB0aXRsZTogYWxsb3dIVE1MID8gRE9NUHVyaWZ5LnNhbml0aXplKHZhbHVlKSA6IHZhbHVlLFxuICAgICAgaHRtbDogYWxsb3dIVE1MLFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6XG4gICAgICAgICc8ZGl2IGNsYXNzPVwidG9vbHRpcCBkYXRvLXRvb2x0aXAgY29tbW9uLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj48L2Rpdj4nXG4gICAgfSk7XG5cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdG9vbHRpcCBlbGVtZW50IHJlZiBhbmQgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSk6IHZvaWQge1xuICAgIGlmIChjZWxsICE9PSB0aGlzLnRvb2x0aXAucmVmZXJlbmNlKSB7XG4gICAgICB0aGlzLnRvb2x0aXAucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC5wb3BwZXJJbnN0YW5jZS5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVRpdGxlQ29udGVudCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZE9uSG92ZXJFbGVtZW50KCkge1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnQ8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCxcbiAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgcmVzb2x2ZXI6IHRoaXMucmVzb2x2ZXJcbiAgICB9KTtcbiAgICBjb25zdCB7IGluc3RhbmNlLCBob3N0VmlldyB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpbnN0YW5jZS5jb25maWcgPSB7IC4uLnRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcsIGFjdGlvbnM6IHRoaXMucm93QWN0aW9ucy5zbGljZSgpIH07XG4gICAgaG9zdFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGFwcGVuZENoaWxkKHRoaXMuZ3JpZEVsZW1lbnRzLmNlbnRlckNvbnRhaW5lciwgdGhpcy5yb3dIb3ZlckVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJvd0hvdmVyRWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T25Ib3ZlclN0YXRlKHZpc2libGU6IGJvb2xlYW4sIGV2ZW50PzogQ2VsbE1vdXNlT3V0RXZlbnQpIHtcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5zaG93KGV2ZW50KTtcbiAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPbkhvdmVyUG9zKCkge1xuICAgIGNvbnN0IHsgY2VudGVyVmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgY29uc3QgdGFyZ2V0ID0gY2VudGVyQ29udGFpbmVyLmNsaWVudFdpZHRoID4gY2VudGVyVmlld3BvcnQuY2xpZW50V2lkdGggPyBjZW50ZXJWaWV3cG9ydCA6IGNlbnRlckNvbnRhaW5lcjtcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0YXJnZXQ7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5pbnN0YW5jZS51cGRhdGVTY3JvbGxQb3MoY2xpZW50V2lkdGggKyBzY3JvbGxMZWZ0KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUm93SG92ZXJDbGFzcyhyb3dzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pIHtcbiAgICBjb2VyY2VBcnJheShyb3dzKS5mb3JFYWNoKHJvdyA9PiByb3cgJiYgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2FjdGlvbnMtaG92ZXJlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcih7IGdyaWQsIGNvbHVtbnMgfTogRGF0b0dyaWRBcGkpIHtcbiAgICB0aGlzLmhvdGtleXNcbiAgICAgIC5hZGRTaG9ydGN1dCh7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuYWdHcmlkRWwsXG4gICAgICAgIGtleXM6ICdtZXRhLmEnLFxuICAgICAgICBpZ25vcmVJbkVkaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCkge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCAhPT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaXRUbyA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkZJVF9UT19DT05UQUlORVIgPyAnY29udGFpbmVyJyA6ICdjb250ZW50JztcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKGZpdFRvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkRGF0YSgpIHtcbiAgICBjb25zdCBncmlkTW9kZWwgPSB0aGlzLmdyaWRTZXJ2aWNlLmFwaS5ncmlkLmdldE1vZGVsKCkgYXMgYW55O1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICBjb25zdCBncmlkRGF0YSA9IGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5Lm1hcCgoeyBkYXRhIH0pID0+IGRhdGEpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tVHJlZURhdGEoZ3JpZERhdGEsIHRoaXMuZ3JpZFNlcnZpY2UudHJlZUNvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncmlkTW9kZWwucm93c1RvRGlzcGxheTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIGNvbnN0IGV2ZW50cyQgPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGVcbiAgICAgID8gbWVyZ2UoYWdHcmlkLnNvcnRDaGFuZ2VkLCBhZ0dyaWQuZmlsdGVyQ2hhbmdlZClcbiAgICAgIDogYWdHcmlkLmZpbHRlckNoYW5nZWQ7XG4gICAgKGV2ZW50cyQgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5kZXNlbGVjdEFsbFJvd3MoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBpZiAoIXRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZ0dyaWQucGFnaW5hdGlvbkNoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKHRydWUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBYXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxx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LENBQUM7O0tBQy9DLENBQUM7SUFxREcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtxQ0FUVixXQUFXO1FBQ2IsU0FBUztRQUNkLGlCQUFpQjtRQUNSLFlBQVk7UUFDZixvQkFBb0I7UUFDekIsVUFBVTtRQUNOLFFBQVE7UUFDUix3QkFBd0I7UUFDekIsV0FBVztHQW5EbkIsMkJBQTJCLENBdWZ2QztTQXZmWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtcbiAgQm9keVNjcm9sbEV2ZW50LFxuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIENlbGxNb3VzZU91dEV2ZW50LFxuICBDZWxsTW91c2VPdmVyRXZlbnQsXG4gIENvbHVtblJlc2l6ZWRFdmVudCxcbiAgQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQsXG4gIERldGFpbEdyaWRJbmZvLFxuICBHcmlkQXBpLFxuICBSb3dHcm91cE9wZW5lZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbHVtbnNTaXplcywgaXNIdG1sQWxsb3dlZEZvckNvbCB9IGZyb20gJy4uL2dyaWQtc3RvcmUvdXRpbCc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4vZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQWxpZ25tZW50LCBEYXRvR3JpZE9wdGlvbnMsIERhdG9HcmlkU29ydCwgR3JpZENoYW5nZUV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvZGVlcC1tZXJnZSc7XG5pbXBvcnQgeyBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkLWN1c3RvbS1oZWFkZXIvY3VzdG9tLWhlYWRlci10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IEdyaWRBY3Rpb24sIFJvd0FjdGlvbiB9IGZyb20gJy4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBEQVRPX0dSSURfU1RPUkFHRV9BUEksIEdyaWRTdG9yYWdlQVBJIH0gZnJvbSAnLi4vZ3JpZC1zZXR0aW5ncyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFkZENsYXNzLCBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0dyaWRRdWVyeSwgR3JpZFNlcnZpY2UsIEdyaWRTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnQpIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxcbiAgICBEYXRvQ3VzdG9tSGVhZGVyVGVtcGxhdGVDb21wb25lbnRcbiAgPjtcblxuICBAT3V0cHV0KCkgb25HcmlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHcmlkQ2hhbmdlRXZlbnQ+KCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcbiAgcHJpdmF0ZSBjZWxsTW91c2VPdXRUaW1lcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG90a2V5czogRGF0b0hvdGtleXMsXG4gICAgQEluamVjdChEQVRPX0dSSURfU1RPUkFHRV9BUEkpIHByaXZhdGUgc3RvcmFnZUFQSTogR3JpZFN0b3JhZ2VBUElcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29udGVudEluaXQuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgJiYgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBpbml0aWFsaXplR3JpZChhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIsIGFnR3JpZEVsOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghdGhpcy5jb250ZW50SW5pdC5pc1N0b3BwZWQpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVHcmlkKGFnR3JpZCwgYWdHcmlkRWwpO1xuICAgICAgdGhpcy5jb250ZW50SW5pdC5uZXh0KCk7XG4gICAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkQW5ndWxhciwgYWdHcmlkRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5hZ0dyaWRFbCA9IGFnR3JpZEVsO1xuICAgIHRoaXMuY29udGVudEluaXRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHRoaXMubm9ybWFsaXplT3B0aW9ucygpO1xuICAgICAgICAgIGFnR3JpZC5ncmlkT3B0aW9ucyA9IHRoaXMuZ3JpZE9wdGlvbnM7XG4gICAgICAgICAgY29uc3Qgc2V0dGluZ3NMb2FkZXIgPVxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zYXZlU2V0dGluZ3MgPT09IGZhbHNlID8gb2YobnVsbCkgOiB0aGlzLnN0b3JhZ2VBUEkuZ2V0KHRoaXMuZ3JpZE9wdGlvbnMuZ3JpZE5hbWUpO1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFthZ0dyaWQuZ3JpZFJlYWR5LCBzZXR0aW5nc0xvYWRlcl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt7IGFwaSwgY29sdW1uQXBpIH0sIHNhdmVkU2V0dGluZ3MgPSB7fV06IFtEZXRhaWxHcmlkSW5mbywgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEpIHtcbiAgICAgICAgICBhcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnN0YXR1c0Jhcikge1xuICAgICAgICAgIC8qKiBGaXggYWctZ3JpZCBidWcgdGhhdCBkb2Vzbid0IGFkZCBhZy1oaWRkZW4gY2xhc3MgdG8gdGhlIHN0YXR1cyBiYXIsIHdoaWNoIG9ubHkgZ2V0IGZpeGVkIGluIGxhdGVyIHZlcnNpb25zICovXG4gICAgICAgICAgY29uc3QgZWwgPSBhZ0dyaWRFbC5xdWVyeVNlbGVjdG9yKCcuYWctc3RhdHVzLWJhcicpO1xuXG4gICAgICAgICAgYWRkQ2xhc3MoZWwsICdhZy1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkQXBpOiBEYXRvR3JpZEFwaSA9IHsgZ3JpZDogYXBpLCBjb2x1bW5zOiBjb2x1bW5BcGkgfTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcblxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmluaXRTZXR0aW5ncyhzYXZlZFNldHRpbmdzIHx8IHt9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclNldHRpbmdzTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGdyaWRBcGksIGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZCk7XG4gICAgICAgIHRoaXMuZ3JpZFF1ZXJ5Ll9ncmlkUmVhZHkubmV4dCh0cnVlKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZCgndHJlZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodCkge1xuICAgICAgICAgIHRoaXMuYWdHcmlkRWwuY2xhc3NMaXN0LmFkZChgcm93LWhlaWdodC0ke3RoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0fWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIGN1c3RvbUhlYWRlcnNUZW1wbGF0ZXM6IHRoaXMuY3VzdG9tSGVhZGVyc1RlbXBsYXRlcyxcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMucm93QWN0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMuZ3JpZFNlcnZpY2Uubm9ybWFsaXplT3B0aW9ucyhwYXJhbXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4uKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEgPyBkZWZhdWx0VHJlZU9wdGlvbnMgOiB7fSksXG4gICAgICBpY29uczogdGhpcy5nZXRHcmlkSWNvbnMoKSxcbiAgICAgIGRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkczpcbiAgICAgICAgbm9ybWFsaXplZC5kaXNhYmxlZEhUTUxSZW5kZXJpbmdGaWVsZHMgfHwgZGVmYXVsdEdyaWRPcHRpb25zLmRpc2FibGVkSFRNTFJlbmRlcmluZ0ZpZWxkc1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRzLCBub3JtYWxpemVkKTtcbiAgfVxuXG4gIHNldEdyaWRSb3dzPFQ+KGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0Um93czxUPihkYXRhKTtcbiAgfVxuXG4gIHNldEdyaWRGaWx0ZXJzKGZpbHRlcnM6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZEZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRHcmlkU29ydChzb3J0OiBEYXRvR3JpZFNvcnQpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRTb3J0KHNvcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkQW5ndWxhcikge1xuICAgIGxldCBvYnNlcnZhYmxlID0gY29sdW1uUmVzaXplZC5hc09ic2VydmFibGUoKTtcbiAgICBpZiAodGhpcy5vbkhvdmVyRW5hYmxlZCgpKSB7XG4gICAgICBvYnNlcnZhYmxlID0gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKSlcbiAgICAgICk7XG4gICAgfVxuICAgIG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICBhdWRpdFRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCh7IGZpbmlzaGVkLCBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBmaW5pc2hlZCAmJiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb2x1bW5dID0gZS5jb2x1bW5zO1xuICAgICAgICBsZXQgY29sdW1uc1NpemVzID0geyAuLi50aGlzLmdyaWRRdWVyeS5nZXRDb2x1bW5TaXplcygpIH07XG4gICAgICAgIGlmIChjb2x1bW5zU2l6ZXMpIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXNbY29sdW1uLmdldENvbElkKCldID0gY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3MoeyBncmlkQWxpZ25tZW50OiBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00sIGNvbHVtbnNTaXplcyB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0dyaWRFdmVudHMoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkLCBmaWx0ZXJDaGFuZ2VkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCwgZmlsdGVyQ2hhbmdlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICBmaWx0ZXI6IHRoaXMuZ3JpZFF1ZXJ5LmdldEV4dGVybmFsRmlsdGVyKCksXG4gICAgICAgICAgc29ydDogdGhpcy5ncmlkUXVlcnkuZ2V0U29ydCgpLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0RpZmYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldFNldHRpbmdzRGlmZigpO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVTZXR0aW5nc1RvU2VydmVyKHNldHRpbmdzRGlmZik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkTGlzdGVuZXJzKGFwaTogRGF0b0dyaWRBcGksIGFnR3JpZDogQWdHcmlkQW5ndWxhcikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgLyogTWFrZSBncm91cCBleHBhbmQvY29sbGFwc2Ugb24gYSBzaW5nbGUgY2xpY2sgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBkb3VibGUgY2xpY2sgKi9cbiAgICBhZ0dyaWQuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNvbHVtbnMgfTogQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gRU1QVFlcbiAgICAgICAgICAgIDogYWdHcmlkLmNlbGxDbGlja2VkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh7IHZhbHVlLCBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbm9kZS5ncm91cCA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4ge1xuICAgICAgICBub2RlLnNldEV4cGFuZGVkKCFub2RlLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIC8qIFdoZW4gY2xvc2luZyBhIGdyb3VwZWQgcm93IHdlIHdhbnQgdG8gaGlkZSB0aGUgb24gaG92ZXIgYWN0aW9ucyAqL1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIGFnR3JpZC5yb3dHcm91cE9wZW5lZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgbm9kZSB9OiBSb3dHcm91cE9wZW5lZEV2ZW50KSA9PiBub2RlLmV4cGFuZGVkID09PSBmYWxzZSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNsaWNrIHdhcyBwZXJmb3JtZWQgb24gdGhlIGdyaWRzIGJvZHkgYW5kIG5vdCBhIHJvdywgY2xlYXIgdGhlIHJvd3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpOiBHcmlkQXBpKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlclZpZXdwb3J0IH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGV2ZW50LnRhcmdldCA9PT0gYm9keVZpZXdwb3J0IHx8IGV2ZW50LnRhcmdldCA9PT0gY2VudGVyVmlld3BvcnQpICYmIGFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gYXBpLmRlc2VsZWN0QWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhvdmVyRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZy5lbmFibGVkICYmIHRoaXMucm93QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBsZXQgbGFzdEhvdmVyZWRDZWxsO1xuICAgIGNvbnN0IG9uSG92ZXJFbmFibGVkID0gdGhpcy5vbkhvdmVyRW5hYmxlZCgpO1xuICAgIGlmIChvbkhvdmVyRW5hYmxlZCkge1xuICAgICAgZnJvbUV2ZW50KGNlbnRlckNvbnRhaW5lciwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKHRoaXMubGFzdEhvdmVyZWRSb3cpO1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgICBsYXN0SG92ZXJlZENlbGwgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIG1lcmdlKFxuICAgICAgICBhZ0dyaWQuYm9keVNjcm9sbC5waXBlKGZpbHRlcigoeyBkaXJlY3Rpb24gfTogQm9keVNjcm9sbEV2ZW50KSA9PiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykpLFxuICAgICAgICBhZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIClcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuYWRkT25Ib3ZlckVsZW1lbnQoKTtcbiAgICB9XG4gICAgYWdHcmlkLmNlbGxNb3VzZU92ZXIucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKChldmVudDogQ2VsbE1vdXNlT3ZlckV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IG5vZGUsIGNvbHVtbiB9ID0gZXZlbnQ7XG4gICAgICBpZiAobGFzdEhvdmVyZWRDZWxsID09PSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWApIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2VsbE1vdXNlT3V0VGltZXIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsYXN0SG92ZXJlZENlbGwgPSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWA7XG4gICAgICB0aGlzLnNob3dUb29sdGlwKGV2ZW50KTtcbiAgICAgIGNvbnN0IHJvdyA9IChldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAob25Ib3ZlckVuYWJsZWQgJiYgKG5vZGUuZ3JvdXAgPT09IGZhbHNlIHx8IGlzTmlsKG5vZGUuZ3JvdXApKSAmJiB0aGlzLmxhc3RIb3ZlcmVkUm93ICE9PSByb3cpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gdGhpcy5sYXN0SG92ZXJlZFJvdztcbiAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IHJvdztcbiAgICAgICAgdGhpcy50b2dnbGVSb3dIb3ZlckNsYXNzKFtwcmV2aW91c05vZGUsIHRoaXMubGFzdEhvdmVyZWRSb3ddKTtcbiAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUodHJ1ZSwgZXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uVG9vbHRpcE91dCA9IG1lcmdlKGZyb21FdmVudChib2R5Vmlld3BvcnQsICdzY3JvbGwnKSwgZnJvbUV2ZW50KHRoaXMuYWdHcmlkRWwsICdtb3VzZWxlYXZlJykpO1xuICAgIG9uVG9vbHRpcE91dC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgfSk7XG5cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3V0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICFpc05pbCh0aGlzLnRvb2x0aXApKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNlbGxNb3VzZU91dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhclRvb2x0aXAoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIHRoZSB0b29sdGlwXG4gICAqL1xuICBjbGVhclRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IENlbGxFdmVudCkge1xuICAgIGxldCBjZWxsOiBIVE1MRWxlbWVudCA9IGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoY2VsbC50YWdOYW1lID09PSAnU1BBTicgJiYgY2VsbC5zY3JvbGxXaWR0aCA9PT0gMCkge1xuICAgICAgY2VsbCA9IGNlbGwucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmNvbERlZi5lZGl0YWJsZSkge1xuICAgICAgY2VsbCA9IGNlbGwucXVlcnlTZWxlY3RvcignLnZhbHVlLXdyYXBwZXInKSB8fCBjZWxsO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0T3ZlcmZsb3cgPSBjZWxsLm9mZnNldFdpZHRoIDwgY2VsbC5zY3JvbGxXaWR0aDtcbiAgICBpZiAodGV4dE92ZXJmbG93KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jZWxsTW91c2VPdXRUaW1lcik7XG4gICAgICBjb25zdCBhbGxvd0hUTUwgPSBpc0h0bWxBbGxvd2VkRm9yQ29sKHRoaXMuZ3JpZE9wdGlvbnMsIGV2ZW50LmNvbERlZik7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNlbGwsIHZhbHVlOiBjZWxsLmlubmVyVGV4dCwgYWxsb3dIVE1MIH07XG5cbiAgICAgIGlzTmlsKHRoaXMudG9vbHRpcCkgPyB0aGlzLmNyZWF0ZUFuZFNob3dUb29sdGlwKHBhcmFtcykgOiB0aGlzLnVwZGF0ZVRvb2x0aXAocGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFuZFNob3dUb29sdGlwKHsgY2VsbCwgdmFsdWUsIGFsbG93SFRNTCB9KSB7XG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoY2VsbCwge1xuICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keSxcbiAgICAgIHRyaWdnZXI6ICdtYW51YWwnLFxuICAgICAgdGl0bGU6IGFsbG93SFRNTCA/IERPTVB1cmlmeS5zYW5pdGl6ZSh2YWx1ZSkgOiB2YWx1ZSxcbiAgICAgIGh0bWw6IGFsbG93SFRNTCxcbiAgICAgIHBvcHBlck9wdGlvbnM6IHtcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgcHJldmVudE92ZXJmbG93OiB7IGVuYWJsZWQ6IGZhbHNlIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlOlxuICAgICAgICAnPGRpdiBjbGFzcz1cInRvb2x0aXAgZGF0by10b29sdGlwIGNvbW1vbi10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+J1xuICAgIH0pO1xuXG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHRvb2x0aXAgZWxlbWVudCByZWYgYW5kIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pOiB2b2lkIHtcbiAgICBpZiAoY2VsbCAhPT0gdGhpcy50b29sdGlwLnJlZmVyZW5jZSkge1xuICAgICAgdGhpcy50b29sdGlwLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAucG9wcGVySW5zdGFuY2UucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC51cGRhdGVUaXRsZUNvbnRlbnQodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPbkhvdmVyRWxlbWVudCgpIHtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50PERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD4oe1xuICAgICAgY29tcG9uZW50OiBEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQsXG4gICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgIHJlc29sdmVyOiB0aGlzLnJlc29sdmVyXG4gICAgfSk7XG4gICAgY29uc3QgeyBpbnN0YW5jZSwgaG9zdFZpZXcgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaW5zdGFuY2UuY29uZmlnID0geyAuLi50aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLCBhY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnMuc2xpY2UoKSB9O1xuICAgIGhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmdyaWRFbGVtZW50cy5jZW50ZXJDb250YWluZXIsIHRoaXMucm93SG92ZXJFbCk7XG4gIH1cblxuICBwcml2YXRlIGdldCByb3dIb3ZlckVsKCkge1xuICAgIHJldHVybiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldE9uSG92ZXJTdGF0ZSh2aXNpYmxlOiBib29sZWFuLCBldmVudD86IENlbGxNb3VzZU91dEV2ZW50KSB7XG4gICAgY29uc3QgeyBpbnN0YW5jZSB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgaW5zdGFuY2Uuc2hvdyhldmVudCk7XG4gICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT25Ib3ZlclBvcygpIHtcbiAgICBjb25zdCB7IGNlbnRlclZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGNvbnN0IHRhcmdldCA9IGNlbnRlckNvbnRhaW5lci5jbGllbnRXaWR0aCA+IGNlbnRlclZpZXdwb3J0LmNsaWVudFdpZHRoID8gY2VudGVyVmlld3BvcnQgOiBjZW50ZXJDb250YWluZXI7XG4gICAgY29uc3QgeyBjbGllbnRXaWR0aCwgc2Nyb2xsTGVmdCB9ID0gdGFyZ2V0O1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQuaW5zdGFuY2UudXBkYXRlU2Nyb2xsUG9zKGNsaWVudFdpZHRoICsgc2Nyb2xsTGVmdCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd0hvdmVyQ2xhc3Mocm93czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKSB7XG4gICAgY29lcmNlQXJyYXkocm93cykuZm9yRWFjaChyb3cgPT4gcm93ICYmIHJvdy5jbGFzc0xpc3QudG9nZ2xlKCdhY3Rpb25zLWhvdmVyZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoeyBncmlkLCBjb2x1bW5zIH06IERhdG9HcmlkQXBpKSB7XG4gICAgdGhpcy5ob3RrZXlzXG4gICAgICAuYWRkU2hvcnRjdXQoe1xuICAgICAgICBlbGVtZW50OiB0aGlzLmFnR3JpZEVsLFxuICAgICAgICBrZXlzOiAnbWV0YS5hJyxcbiAgICAgICAgaWdub3JlSW5FZGl0YWJsZTogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJXaW5kb3dSZXNpemVMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgIT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZml0VG8gPSB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5GSVRfVE9fQ09OVEFJTkVSID8gJ2NvbnRhaW5lcicgOiAnY29udGVudCc7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZChmaXRUbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZERhdGEoKSB7XG4gICAgY29uc3QgZ3JpZE1vZGVsID0gdGhpcy5ncmlkU2VydmljZS5hcGkuZ3JpZC5nZXRNb2RlbCgpIGFzIGFueTtcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgY29uc3QgZ3JpZERhdGEgPSBncmlkTW9kZWwucm93c1RvRGlzcGxheS5tYXAoKHsgZGF0YSB9KSA9PiBkYXRhKTtcbiAgICAgIHJldHVybiBjb252ZXJ0RnJvbVRyZWVEYXRhKGdyaWREYXRhLCB0aGlzLmdyaWRTZXJ2aWNlLnRyZWVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWRBbmd1bGFyKSB7XG4gICAgaWYgKCF0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWdHcmlkLnBhZ2luYXRpb25DaGFuZ2VkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cyh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -93,7 +93,7 @@ let DatoGridPaginationV2Component = class DatoGridPaginationV2Component {
93
93
  */
94
94
  calculateRowsCount(totalRows) {
95
95
  this.totalPages = totalRows ? Math.ceil(totalRows / this.rowsPerPage) : this.gridApi.paginationGetTotalPages();
96
- this.rowCount = this.gridApi.getDisplayedRowCount();
96
+ this.rowCount = this.gridApi.paginationGetRowCount();
97
97
  this.setRowsDisplayRange(this.pageNumbersDisplay.currentPage);
98
98
  this.cdr.detectChanges();
99
99
  }
@@ -303,4 +303,4 @@ DatoGridPaginationV2Component = __decorate([
303
303
  DecimalPipe])
304
304
  ], DatoGridPaginationV2Component);
305
305
  export { DatoGridPaginationV2Component };
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTN0IsSUFBYSw2QkFBNkIsR0FBMUMsTUFBYSw2QkFBNkI7SUF1RHhDLFlBQ1UsR0FBc0IsRUFDdEIsU0FBK0IsRUFDL0IsU0FBb0IsRUFDcEIsV0FBd0IsRUFDeEIsVUFBdUMsRUFDdkMsV0FBd0I7UUFMeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsY0FBUyxHQUFULFNB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QUEyQjtRQUMxQixXQUFXO0dBN0R2Qiw2QkFBNkIsQ0F1VHpDO1NBdlRZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXBhZ2luYXRpb24tdjInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEZWNpbWFsUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRQYWdpbmF0aW9uVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhpcyBzZXR0ZXIgaXMgdXNlZCB0byBhc3NpZ24gdGhlIG5hdmlnYXRpb24gZWxlbWVudCByZWYgYW5kIHRvIHNldFxuICAgKiB0aGUgcGFnaW5hdGlvbiBzaXplIHdoZW4gdGhlIGNvbXBvbmVudCBzdGFydHNcbiAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBjb250ZW50XG4gICAqL1xuICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IGNvbnRlbnQoY29udGVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMubmF2aWdhdGlvbkVsZW1lbnQgPSBjb250ZW50O1xuICAgIGlmIChjb250ZW50ICYmIHRoaXMuc21hbGxWZXJzaW9uID09PSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU5hdmlnYXRpb25TaXplKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlXG4gIHJvd0NvdW50OiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBYU19ESVNQTEFZX1NJWkUgZGlzYWJsZSBnbyB0byBmaXJzdC9sYXN0IGJ1dHRvbnNcbiAgZGlzYWJsZUJ1dHRvbnM6IGJvb2xlYW4gPSBudWxsO1xuICAvLyB3aGVuIHRoZSB3aWRnZXQncyB3aWR0aCBpcyBzbWFsbGVyIHRoYW4gU01BTExfRElTUExBWV9TSVpFIGNoYW5nZSB0byBzbWFsbCBwYWdpbmF0aW9uIHZpZXdcbiAgc21hbGxWZXJzaW9uOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8vIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgdGFibGVcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICAvLyBUaGUgZGlzcGxheSByb3dzIHJhbmdlXG4gIHJvd3NSYW5nZTogc3RyaW5nO1xuICAvLyBtYW5hZ2luZyBvYmplY3QgZm9yIHRoZSBuYXZpZ2F0aW9uXG4gIHBhZ2VOdW1iZXJzRGlzcGxheSA9IHtcbiAgICBjdXJyZW50UGFnZTogMSxcbiAgICBwYWdlczogW10sXG4gICAgc2hvd0ZpcnN0RWxsaXBzaXM6IGZhbHNlLFxuICAgIHNob3dMYXN0UGFnZTogZmFsc2VcbiAgfTtcblxuICAvLyBTaG93IGZpdCBjZWxsIGNvbnRlbnQgYW5kIGNvbGxhcHNlL2V4cGFuZCByb3cgZ3JvdXBzIGNvbnRyb2xzXG4gIHNob3dCb3R0b21Db250cm9scyA9IGZhbHNlO1xuICBpc0V4cGFuZGVkID0gdHJ1ZTtcbiAgaGFzUm93R3JvdXBDb2x1bW5zID0gZmFsc2U7XG5cbiAgLy8gaG93IG1hbnkgbnVtYmVycyBhcmUgc2hvd2luZyBvbiB0aGUgc2FtZSB0aW1lIGJlc2lkZXMgdGhlIGxhc3QgcGFnZSBudW1iZXJcbiAgcHJpdmF0ZSBfcGFnZXNJblZpZXc6IG51bWJlcjtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgb24gZWFjaCBzaWRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlLlxuICBwcml2YXRlIHBhZ2VzT25TaWRlczogbnVtYmVyO1xuICAvLyBpZiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZSBmaXRzIHRoZSBudW1iZXIgb2YgZGlzcGxheWluZyBwYWdlc1xuICBwcml2YXRlIHBhZ2VzRml0VmlldzogYm9vbGVhbjtcbiAgLy8gaG93IG1hbnkgbnVtYmVycyB0byBzaG93IG9uIGVhY2ggc2lkZSBiZXNpZGVzIHRoZSBzZWxlY3RlZCBudW1iZXJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBpc1NlcnZlclNpZGVQYWdpbmF0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgZ3JpZEFwaTogR3JpZEFwaTtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWwgZm9yIGVhY2ggdmlldyBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOSV9ESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gMjtcbiAgcHJpdmF0ZSByZWFkb25seSBESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gNTtcbiAgLy8gV2lkZ2V0J3Mgd2lkdGggdGhlIGRldGVybWluZXMgdGhlIHBhZ2luYXRpb24gdmlldyB0eXBlIFsgc21hbGwsIHhzXSBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgWFNfRElTUExBWV9TSVpFOiBudW1iZXIgPSAxNjA7XG4gIHByaXZhdGUgcmVhZG9ubHkgU01BTExfRElTUExBWV9TSVpFOiBudW1iZXIgPSAzOTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udHJvbGxlcjogRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXG4gICkge31cblxuICBnZXQgcHJldlBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IDE7XG4gIH1cblxuICBnZXQgbmV4dFBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLFxuICAgICAgICAgIHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYucm93R3JvdXBPcGVuZWQsXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5leHBhbmRPckNvbGxhcHNlQWxsXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UoMCk7XG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93R3JvdXBDb2x1bW5zID0gdGhpcy5ncmlkUXVlcnkuYXBpLmNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG5cbiAgICAgICAgICB0aGlzLmdyaWRBcGkgPSB0aGlzLmdyaWRRdWVyeS5hcGkuZ3JpZDtcbiAgICAgICAgICB0aGlzLnNob3dCb3R0b21Db250cm9scyA9IHRoaXMuZ3JpZFF1ZXJ5LmdldEdyaWRPcHRpb25zKCkuc2hvd0JvdHRvbUNvbnRyb2xzO1xuICAgICAgICAgIHRoaXMuaGFzUm93R3JvdXBDb2x1bW5zID0gcm93R3JvdXBDb2x1bW5zICYmIHJvd0dyb3VwQ29sdW1ucy5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiA/IHRoaXMuZ3JpZFF1ZXJ5LnNlcnZlckRhdGFMb2FkZWQkIDogdGhpcy5ncmlkUXVlcnkucm93RGF0YUNoYW5nZWQkO1xuICAgICAgICB9KSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksXG4gICAgICAgIHRhcE9uY2UoKCkgPT4gdGhpcy5pbml0UGFnaW5hdGlvbigpKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGFnaW5hdGlvblBhZ2UgPSAxIH06IERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAvKiogIEFnIGdyaWQgaW5kZXggaXMgZnJvbSAwLCBidXQgdGhlIGluZGV4IGZpcmVkIGZyb20gdGhlIGV2ZW50IHN0YXJ0IGZyb20gMSovXG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24ocGFnaW5hdGlvblBhZ2UgLSAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIHRoZSByb3cgY291bnQgYW5kIHBhZ2UgbGVuZ3Roc1xuICAgKi9cbiAgY2FsY3VsYXRlUm93c0NvdW50KHRvdGFsUm93czogbnVtYmVyKSB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdG90YWxSb3dzID8gTWF0aC5jZWlsKHRvdGFsUm93cyAvIHRoaXMucm93c1BlclBhZ2UpIDogdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5yb3dDb3VudCA9IHRoaXMuZ3JpZEFwaS5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xuICAgIHRoaXMuc2V0Um93c0Rpc3BsYXlSYW5nZSh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaW5pdFBhZ2luYXRpb24ocGFnZU51bWJlciA9IDApIHtcbiAgICBjb25zdCB7IHRvdGFsUm93cywgZW5hYmxlZCB9ID0gdGhpcy5ncmlkUXVlcnkuc2VydmVyU2lkZUNvbmZpZztcbiAgICBpZiAoZW5hYmxlZCAmJiBpc05pbCh0b3RhbFJvd3MpKSByZXR1cm47XG4gICAgLyoqIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcGFnZXMgc3RhcnRpbmcgZnJvbSAxICovXG4gICAgdGhpcy5yb3dzUGVyUGFnZSA9IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVJvd3NDb3VudCh0b3RhbFJvd3MpO1xuICAgIC8qKiBzZXQgdGhlIGluaXQgdmFsdWUgb2YgdGhlIHBhZ2luYXRpb24gdmlldyB0byBub3JtYWwgc2l6ZSAqL1xuICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLkRJU1BMQVlfTEVOR1RIO1xuICAgIC8qKiBjdXJyZW50IHBhZ2UgaW5kZXggc3RhcnRzIGZyb20gMCAqL1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHBhZ2VOdW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbnVtYmVyIG9mIHBhZ2UgbnVtYmVycyBzaG93aW5nIGF0IHRoZSBzYW1lIHRpbWUgaW4gdGhlIG5hdmlnYXRpb25cbiAgICogcGFuZWwgJiB1cGRhdGUgdGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgb24gZWFjaCBzaWRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TnVtYmVyc0xlbmd0aCAtIFRoZSBuZXcgbGVuZ3RoIG9mIHRoZSBkaXNwbGF5aW5nIG51bWJlcnNcbiAgICovXG4gIHNldCBwYWdlc0luVmlldyhuZXdOdW1iZXJzTGVuZ3RoOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlc0luVmlldyA9IG5ld051bWJlcnNMZW5ndGg7XG4gICAgdGhpcy5wYWdlc09uU2lkZXMgPSBNYXRoLmZsb29yKHRoaXMuX3BhZ2VzSW5WaWV3IC8gMik7XG4gICAgdGhpcy5wYWdlc0ZpdFZpZXcgPSB0aGlzLl9wYWdlc0luVmlldyArIDEgPj0gdGhpcy50b3RhbFBhZ2VzO1xuICAgIC8vIGludmFsaWRhdGUgZGlzcGxheWluZyBwYWdlcyB1cG9uIHJlc2l6ZVxuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gW107XG4gIH1cblxuICAvKiogVE9ETyBUaGlzIGlzIG5vdCBsaXN0ZW5pbmcgdG8gc2l6ZSBjaGFuZ2VzICovXG4gIGNhbGN1bGF0ZU5hdmlnYXRpb25TaXplKCkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbGVtZW50KSB7XG4gICAgICBjb25zdCBlbGVtZW50V2lkdGggPSB0aGlzLm5hdmlnYXRpb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMgPSBlbGVtZW50V2lkdGggPCB0aGlzLlhTX0RJU1BMQVlfU0laRTtcbiAgICAgIGlmIChlbGVtZW50V2lkdGggPCB0aGlzLlNNQUxMX0RJU1BMQVlfU0laRSkge1xuICAgICAgICBpZiAodGhpcy5fcGFnZXNJblZpZXcgIT09IHRoaXMuTUlOSV9ESVNQTEFZX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuc21hbGxWZXJzaW9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5NSU5JX0RJU1BMQVlfTEVOR1RIO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5fcGFnZXNJblZpZXcgIT09IHRoaXMuRElTUExBWV9MRU5HVEgpIHtcbiAgICAgICAgICB0aGlzLnNtYWxsVmVyc2lvbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLkRJU1BMQVlfTEVOR1RIO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIGdpdmVuIHBhZ2UuXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIGFuZCB0aGUgY3VycmVudCBudW1iZXIuXG4gICAqIEBwYXJhbSBwYWdlTnVtYmVyIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvXG4gICAqL1xuICBuYXZpZ2F0ZVBhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2VOdW1iZXIgPj0gMCAmJiBwYWdlTnVtYmVyIDw9IHRoaXMudG90YWxQYWdlcyAtIDEpIHtcbiAgICAgIHRoaXMuc2hvdWxkU2hvd0xvYWRlcihwYWdlTnVtYmVyKSAmJiB0aGlzLmdyaWRTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9QYWdlKHBhZ2VOdW1iZXIpO1xuICAgICAgLy8gQWRkIDEgYmVjYXVzZSBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDBcbiAgICAgIGNvbnN0IGRpc3BsYXlOdW1iZXIgPSBwYWdlTnVtYmVyICsgMTtcbiAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlID0gZGlzcGxheU51bWJlcjtcblxuICAgICAgaWYgKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5wYWdlc0ZpdFZpZXcpIHtcbiAgICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGRpc3BsYXlOdW1iZXIpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgdGhlIGRpc3BsYXlpbmcgcm93cyByYW5nZVxuICAgICAgdGhpcy5zZXRSb3dzRGlzcGxheVJhbmdlKGRpc3BsYXlOdW1iZXIpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlRmlyc3RQYWdlKCkge1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKDApO1xuICB9XG5cbiAgbmF2aWdhdGVOZXh0UGFnZSgpIHtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZSh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSk7XG4gIH1cblxuICBuYXZpZ2F0ZVByZXZQYWdlKCkge1xuICAgIC8qKiBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDAgc28gd2UgbmVlZCB0byByZWR1Y2UgMiBpbnN0ZWFkIG9mIG9uZSAqL1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZUluZGV4ID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgLSAyO1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHByZXZpb3VzUGFnZUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyB0byBzaG93IHRoZSBuZXh0IG51bWJlcnMgc2V0XG4gICAqL1xuICBzaG93TmV4dEJhdGNoKCkge1xuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzWzBdICsgdGhpcy5fcGFnZXNJblZpZXcgKyB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyB0byBzaG93IHRoZSBwcmV2aW91cyBudW1iZXJzIHNldFxuICAgKi9cbiAgc2hvd1ByZXZpb3VzQmF0Y2goKSB7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXNbMF0gLSB0aGlzLl9wYWdlc0luVmlldyArIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhhbmNob3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFja0J5IGZ1bmN0aW9uIGZvciB0aGUgbmdGb3JcbiAgICogQHBhcmFtIGluZGV4IC0gY3VycmVudCBpdGVtIGluZGV4XG4gICAqIEBwYXJhbSBwYWdlIC0gdGhlIGN1cnJlbnQgaXRlbSdzIHBhZ2UgbnVtYmVyXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRyYWNrQnlQYWdlKGluZGV4OiBudW1iZXIsIHBhZ2U6IG51bWJlcikge1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgdG9nZ2xlR3JvdXBzU3RhdGUoKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID8gdGhpcy5ncmlkQXBpLmNvbGxhcHNlQWxsKCkgOiB0aGlzLmdyaWRBcGkuZXhwYW5kQWxsKCk7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGF1dG9GaXRHcmlkKHR5cGU6ICdjb250YWluZXInIHwgJ2NvbnRlbnQnKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKHR5cGUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3dzIGRpc3BsYXkgc3RyaW5nXG4gICAqIEBwYXJhbSBkaXNwbGF5TnVtYmVyIC0gVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgKHN0YXJ0aW5nIGluZGV4IDEpXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFJvd3NEaXNwbGF5UmFuZ2UoZGlzcGxheU51bWJlcik6IHZvaWQge1xuICAgIC8qKiBEZWNyZWFzZSBieSAxIGJlY2F1c2UgYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwICovXG4gICAgY29uc3QgcGFnZU51bWJlciA9IGRpc3BsYXlOdW1iZXIgLSAxO1xuICAgIGNvbnN0IGZpcnN0Um93SW5kZXggPSAxICsgcGFnZU51bWJlciAqIHRoaXMucm93c1BlclBhZ2U7XG4gICAgY29uc3QgbGFzdFJvdyA9IChwYWdlTnVtYmVyICsgMSkgKiB0aGlzLnJvd3NQZXJQYWdlO1xuICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IHRoaXMucm93Q291bnQgPiBsYXN0Um93ID8gbGFzdFJvdyA6IHRoaXMucm93Q291bnQ7XG4gICAgdGhpcy5yb3dzUmFuZ2UgPVxuICAgICAgdGhpcy5yb3dDb3VudCA+IDBcbiAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oJ2NvcmUuaXRlbXNSYW5nZScsIHtcbiAgICAgICAgICAgIHJhbmdlOiBgJHt0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShmaXJzdFJvd0luZGV4KX0gLSAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGxhc3RSb3dJbmRleCl9YCxcbiAgICAgICAgICAgIG51bWJlcjogdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odGhpcy5yb3dDb3VudClcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5udW1iZXJPZkl0ZW1zJywgeyBudW1iZXI6IDAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIG51bWJlciBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgZGlzcGxheWluZyBudW1iZXJzLlxuICAgKiBAcGFyYW0gYW5jaG9yIC0gVGhlIG51bWJlciB0byB1c2UgYXMgYW4gYW5jaG9yIGZvciB0aGUgY2FsY3VsYXRpb25zLlxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gLSBBbiBhcnJheSBvZiB0aGUgbmV3IG51bWJlcnMgdG8gZGlzcGxheVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYWdlcyhhbmNob3I6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBwYWdlc1RvRGlzcGxheSA9IFtdO1xuICAgIC8vIGluZGljYXRlcyByYXRoZXIgdGhlIHRhYmxlIGhhcyBtb3JlIHBhZ2VzIHRoYW4gdGhlIGRpc3BsYXkgbGVuZ3RoLCB3ZSBhZGQgMSBiZWNhdXNlIG9mXG4gICAgLy8gYSBsb2dpYyB0aGF0IHNheXMgdGhhdCBpZiB5b3VyIGN1cnJlbnQgdmlldyBpcyAxIG51bWJlciBhd2F5IGZyb20gdGhlIGxhc3QgcGFnZVxuICAgIC8vIGRpc3BsYXkgaGltIGFzIHdlbGwuXG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlID0gIXRoaXMucGFnZXNGaXRWaWV3ICYmIGFuY2hvciArIHRoaXMucGFnZXNPblNpZGVzIDwgdGhpcy50b3RhbFBhZ2VzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dGaXJzdEVsbGlwc2lzID0gIXRoaXMucGFnZXNGaXRWaWV3ICYmIGFuY2hvciAtIHRoaXMucGFnZXNPblNpZGVzID4gMTtcblxuICAgIC8vIHNldCB0aGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZFxuICAgIGNvbnN0IGZpcnN0TnVtYmVyID0gdGhpcy5nZXRGaXJzdFBhZ2VOdW1iZXIoYW5jaG9yKTtcbiAgICBjb25zdCBsb29wTGVuZ3RoID0gdGhpcy5wYWdlc0ZpdFZpZXcgPyB0aGlzLnRvdGFsUGFnZXMgOiB0aGlzLl9wYWdlc0luVmlldztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BMZW5ndGg7IGkrKykge1xuICAgICAgcGFnZXNUb0Rpc3BsYXkucHVzaChmaXJzdE51bWJlciArIGkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgbGFzdCBkaXNwbGF5ZWQgbnVtYmVyIGlzIDEgbnVtYmVyIGJlZm9yZSB0aGUgbGFzdCBwYWdlIGRpc3BsYXkgaGltIGFzIHdlbGxcbiAgICBpZiAoIXRoaXMuc21hbGxWZXJzaW9uICYmIHBhZ2VzVG9EaXNwbGF5W2xvb3BMZW5ndGggLSAxXSArIDEgPT09IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgcGFnZXNUb0Rpc3BsYXkucHVzaCh0aGlzLnRvdGFsUGFnZXMpO1xuICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBwYWdlc1RvRGlzcGxheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwYWdpbmF0aW9uIG5hdmlnYXRpb24gdmlld1xuICAgKiBAcGFyYW0ge251bWJlcn0gYW5jaG9yIC0gVGhlIGFuY2hvciBmb3IgdGhlIGNhbGN1bGF0aW9uc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0Rmlyc3RQYWdlTnVtYmVyKGFuY2hvcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZmlyc3ROdW1iZXIgPSBhbmNob3IgLSB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICAvLyBJZiBpbiBzbWFsbCB2ZXJzaW9uIHNob3cgb25seSBuZXh0IHBhZ2Ugc28gc2V0IGZpcnN0IHBhZ2UgdG8gYW5jaG9yXG4gICAgaWYgKHRoaXMuc21hbGxWZXJzaW9uICYmIGFuY2hvciA+IDEpIHtcbiAgICAgIGlmIChhbmNob3IgIT09IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICBmaXJzdE51bWJlciA9IGFuY2hvcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93Rmlyc3RFbGxpcHNpcykge1xuICAgICAgZmlyc3ROdW1iZXIgPSAxO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSkge1xuICAgICAgZmlyc3ROdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXMgLSAodGhpcy5fcGFnZXNJblZpZXcgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpcnN0TnVtYmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRTaG93TG9hZGVyKHBhZ2VOdW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gJiYgaXNOaWwodGhpcy5ncmlkQXBpLmdldENhY2hlQmxvY2tTdGF0ZSgpW3BhZ2VOdW1iZXJdKTtcbiAgfVxufVxuIl19
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTN0IsSUFBYSw2QkFBNkIsR0FBMUMsTUFBYSw2QkFBNkI7SUF1RHhDLFlBQ1UsR0FBc0IsRUFDdEIsU0FBK0IsRUFDL0IsU0FBb0IsRUFDcEIsV0FBd0IsRUFDeEIsVUFBdUMsRUFDdkMsV0FBd0I7UUFMeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsY0FBUyxHQUFULFNB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QUEyQjtRQUMxQixXQUFXO0dBN0R2Qiw2QkFBNkIsQ0F1VHpDO1NBdlRZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1ncmlkLXBhZ2luYXRpb24tdjInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEZWNpbWFsUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b0dyaWRQYWdpbmF0aW9uVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhpcyBzZXR0ZXIgaXMgdXNlZCB0byBhc3NpZ24gdGhlIG5hdmlnYXRpb24gZWxlbWVudCByZWYgYW5kIHRvIHNldFxuICAgKiB0aGUgcGFnaW5hdGlvbiBzaXplIHdoZW4gdGhlIGNvbXBvbmVudCBzdGFydHNcbiAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBjb250ZW50XG4gICAqL1xuICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IGNvbnRlbnQoY29udGVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMubmF2aWdhdGlvbkVsZW1lbnQgPSBjb250ZW50O1xuICAgIGlmIChjb250ZW50ICYmIHRoaXMuc21hbGxWZXJzaW9uID09PSBudWxsKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU5hdmlnYXRpb25TaXplKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlXG4gIHJvd0NvdW50OiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBYU19ESVNQTEFZX1NJWkUgZGlzYWJsZSBnbyB0byBmaXJzdC9sYXN0IGJ1dHRvbnNcbiAgZGlzYWJsZUJ1dHRvbnM6IGJvb2xlYW4gPSBudWxsO1xuICAvLyB3aGVuIHRoZSB3aWRnZXQncyB3aWR0aCBpcyBzbWFsbGVyIHRoYW4gU01BTExfRElTUExBWV9TSVpFIGNoYW5nZSB0byBzbWFsbCBwYWdpbmF0aW9uIHZpZXdcbiAgc21hbGxWZXJzaW9uOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8vIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgdGFibGVcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICAvLyBUaGUgZGlzcGxheSByb3dzIHJhbmdlXG4gIHJvd3NSYW5nZTogc3RyaW5nO1xuICAvLyBtYW5hZ2luZyBvYmplY3QgZm9yIHRoZSBuYXZpZ2F0aW9uXG4gIHBhZ2VOdW1iZXJzRGlzcGxheSA9IHtcbiAgICBjdXJyZW50UGFnZTogMSxcbiAgICBwYWdlczogW10sXG4gICAgc2hvd0ZpcnN0RWxsaXBzaXM6IGZhbHNlLFxuICAgIHNob3dMYXN0UGFnZTogZmFsc2VcbiAgfTtcblxuICAvLyBTaG93IGZpdCBjZWxsIGNvbnRlbnQgYW5kIGNvbGxhcHNlL2V4cGFuZCByb3cgZ3JvdXBzIGNvbnRyb2xzXG4gIHNob3dCb3R0b21Db250cm9scyA9IGZhbHNlO1xuICBpc0V4cGFuZGVkID0gdHJ1ZTtcbiAgaGFzUm93R3JvdXBDb2x1bW5zID0gZmFsc2U7XG5cbiAgLy8gaG93IG1hbnkgbnVtYmVycyBhcmUgc2hvd2luZyBvbiB0aGUgc2FtZSB0aW1lIGJlc2lkZXMgdGhlIGxhc3QgcGFnZSBudW1iZXJcbiAgcHJpdmF0ZSBfcGFnZXNJblZpZXc6IG51bWJlcjtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgb24gZWFjaCBzaWRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlLlxuICBwcml2YXRlIHBhZ2VzT25TaWRlczogbnVtYmVyO1xuICAvLyBpZiB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZSBmaXRzIHRoZSBudW1iZXIgb2YgZGlzcGxheWluZyBwYWdlc1xuICBwcml2YXRlIHBhZ2VzRml0VmlldzogYm9vbGVhbjtcbiAgLy8gaG93IG1hbnkgbnVtYmVycyB0byBzaG93IG9uIGVhY2ggc2lkZSBiZXNpZGVzIHRoZSBzZWxlY3RlZCBudW1iZXJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBpc1NlcnZlclNpZGVQYWdpbmF0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgZ3JpZEFwaTogR3JpZEFwaTtcbiAgLy8gVGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWwgZm9yIGVhY2ggdmlldyBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOSV9ESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gMjtcbiAgcHJpdmF0ZSByZWFkb25seSBESVNQTEFZX0xFTkdUSDogbnVtYmVyID0gNTtcbiAgLy8gV2lkZ2V0J3Mgd2lkdGggdGhlIGRldGVybWluZXMgdGhlIHBhZ2luYXRpb24gdmlldyB0eXBlIFsgc21hbGwsIHhzXSBhcyBkZWZpbmVkIGJ5IHByb2R1Y3QuXG4gIHByaXZhdGUgcmVhZG9ubHkgWFNfRElTUExBWV9TSVpFOiBudW1iZXIgPSAxNjA7XG4gIHByaXZhdGUgcmVhZG9ubHkgU01BTExfRElTUExBWV9TSVpFOiBudW1iZXIgPSAzOTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRRdWVyeTogR3JpZFF1ZXJ5LFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udHJvbGxlcjogRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXG4gICkge31cblxuICBnZXQgcHJldlBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IDE7XG4gIH1cblxuICBnZXQgbmV4dFBhZ2VEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPT09IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JpZFF1ZXJ5XG4gICAgICAud2FpdEZvckdyaWQoKCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLFxuICAgICAgICAgIHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWYucm93R3JvdXBPcGVuZWQsXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5leHBhbmRPckNvbGxhcHNlQWxsXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UoMCk7XG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93R3JvdXBDb2x1bW5zID0gdGhpcy5ncmlkUXVlcnkuYXBpLmNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG5cbiAgICAgICAgICB0aGlzLmdyaWRBcGkgPSB0aGlzLmdyaWRRdWVyeS5hcGkuZ3JpZDtcbiAgICAgICAgICB0aGlzLnNob3dCb3R0b21Db250cm9scyA9IHRoaXMuZ3JpZFF1ZXJ5LmdldEdyaWRPcHRpb25zKCkuc2hvd0JvdHRvbUNvbnRyb2xzO1xuICAgICAgICAgIHRoaXMuaGFzUm93R3JvdXBDb2x1bW5zID0gcm93R3JvdXBDb2x1bW5zICYmIHJvd0dyb3VwQ29sdW1ucy5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSB0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiA/IHRoaXMuZ3JpZFF1ZXJ5LnNlcnZlckRhdGFMb2FkZWQkIDogdGhpcy5ncmlkUXVlcnkucm93RGF0YUNoYW5nZWQkO1xuICAgICAgICB9KSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksXG4gICAgICAgIHRhcE9uY2UoKCkgPT4gdGhpcy5pbml0UGFnaW5hdGlvbigpKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGFnaW5hdGlvblBhZ2UgPSAxIH06IERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAvKiogIEFnIGdyaWQgaW5kZXggaXMgZnJvbSAwLCBidXQgdGhlIGluZGV4IGZpcmVkIGZyb20gdGhlIGV2ZW50IHN0YXJ0IGZyb20gMSovXG4gICAgICAgIHRoaXMuaW5pdFBhZ2luYXRpb24ocGFnaW5hdGlvblBhZ2UgLSAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIHRoZSByb3cgY291bnQgYW5kIHBhZ2UgbGVuZ3Roc1xuICAgKi9cbiAgY2FsY3VsYXRlUm93c0NvdW50KHRvdGFsUm93czogbnVtYmVyKSB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdG90YWxSb3dzID8gTWF0aC5jZWlsKHRvdGFsUm93cyAvIHRoaXMucm93c1BlclBhZ2UpIDogdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRUb3RhbFBhZ2VzKCk7XG4gICAgdGhpcy5yb3dDb3VudCA9IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0Um93Q291bnQoKTtcbiAgICB0aGlzLnNldFJvd3NEaXNwbGF5UmFuZ2UodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGluaXRQYWdpbmF0aW9uKHBhZ2VOdW1iZXIgPSAwKSB7XG4gICAgY29uc3QgeyB0b3RhbFJvd3MsIGVuYWJsZWQgfSA9IHRoaXMuZ3JpZFF1ZXJ5LnNlcnZlclNpZGVDb25maWc7XG4gICAgaWYgKGVuYWJsZWQgJiYgaXNOaWwodG90YWxSb3dzKSkgcmV0dXJuO1xuICAgIC8qKiByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHBhZ2VzIHN0YXJ0aW5nIGZyb20gMSAqL1xuICAgIHRoaXMucm93c1BlclBhZ2UgPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVSb3dzQ291bnQodG90YWxSb3dzKTtcbiAgICAvKiogc2V0IHRoZSBpbml0IHZhbHVlIG9mIHRoZSBwYWdpbmF0aW9uIHZpZXcgdG8gbm9ybWFsIHNpemUgKi9cbiAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5ESVNQTEFZX0xFTkdUSDtcbiAgICAvKiogY3VycmVudCBwYWdlIGluZGV4IHN0YXJ0cyBmcm9tIDAgKi9cbiAgICB0aGlzLm5hdmlnYXRlUGFnZShwYWdlTnVtYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG51bWJlciBvZiBwYWdlIG51bWJlcnMgc2hvd2luZyBhdCB0aGUgc2FtZSB0aW1lIGluIHRoZSBuYXZpZ2F0aW9uXG4gICAqIHBhbmVsICYgdXBkYXRlIHRoZSBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIG9uIGVhY2ggc2lkZSBvZiB0aGUgc2VsZWN0ZWQgcGFnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG5ld051bWJlcnNMZW5ndGggLSBUaGUgbmV3IGxlbmd0aCBvZiB0aGUgZGlzcGxheWluZyBudW1iZXJzXG4gICAqL1xuICBzZXQgcGFnZXNJblZpZXcobmV3TnVtYmVyc0xlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZXNJblZpZXcgPSBuZXdOdW1iZXJzTGVuZ3RoO1xuICAgIHRoaXMucGFnZXNPblNpZGVzID0gTWF0aC5mbG9vcih0aGlzLl9wYWdlc0luVmlldyAvIDIpO1xuICAgIHRoaXMucGFnZXNGaXRWaWV3ID0gdGhpcy5fcGFnZXNJblZpZXcgKyAxID49IHRoaXMudG90YWxQYWdlcztcbiAgICAvLyBpbnZhbGlkYXRlIGRpc3BsYXlpbmcgcGFnZXMgdXBvbiByZXNpemVcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IFtdO1xuICB9XG5cbiAgLyoqIFRPRE8gVGhpcyBpcyBub3QgbGlzdGVuaW5nIHRvIHNpemUgY2hhbmdlcyAqL1xuICBjYWxjdWxhdGVOYXZpZ2F0aW9uU2l6ZSgpIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudFdpZHRoID0gdGhpcy5uYXZpZ2F0aW9uRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zID0gZWxlbWVudFdpZHRoIDwgdGhpcy5YU19ESVNQTEFZX1NJWkU7XG4gICAgICBpZiAoZWxlbWVudFdpZHRoIDwgdGhpcy5TTUFMTF9ESVNQTEFZX1NJWkUpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VzSW5WaWV3ICE9PSB0aGlzLk1JTklfRElTUExBWV9MRU5HVEgpIHtcbiAgICAgICAgICB0aGlzLnNtYWxsVmVyc2lvbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuTUlOSV9ESVNQTEFZX0xFTkdUSDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VzSW5WaWV3ICE9PSB0aGlzLkRJU1BMQVlfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5zbWFsbFZlcnNpb24gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5ESVNQTEFZX0xFTkdUSDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBnaXZlbiBwYWdlLlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyBhbmQgdGhlIGN1cnJlbnQgbnVtYmVyLlxuICAgKiBAcGFyYW0gcGFnZU51bWJlciAtIFRoZSBwYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgbmF2aWdhdGVQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyID49IDAgJiYgcGFnZU51bWJlciA8PSB0aGlzLnRvdGFsUGFnZXMgLSAxKSB7XG4gICAgICB0aGlzLnNob3VsZFNob3dMb2FkZXIocGFnZU51bWJlcikgJiYgdGhpcy5ncmlkU2VydmljZS5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25Hb1RvUGFnZShwYWdlTnVtYmVyKTtcbiAgICAgIC8vIEFkZCAxIGJlY2F1c2UgYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwXG4gICAgICBjb25zdCBkaXNwbGF5TnVtYmVyID0gcGFnZU51bWJlciArIDE7XG4gICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9IGRpc3BsYXlOdW1iZXI7XG5cbiAgICAgIGlmICh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcy5sZW5ndGggPT09IDAgfHwgIXRoaXMucGFnZXNGaXRWaWV3KSB7XG4gICAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhkaXNwbGF5TnVtYmVyKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5aW5nIHJvd3MgcmFuZ2VcbiAgICAgIHRoaXMuc2V0Um93c0Rpc3BsYXlSYW5nZShkaXNwbGF5TnVtYmVyKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZUZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZSgwKTtcbiAgfVxuXG4gIG5hdmlnYXRlTmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UpO1xuICB9XG5cbiAgbmF2aWdhdGVQcmV2UGFnZSgpIHtcbiAgICAvKiogYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwIHNvIHdlIG5lZWQgdG8gcmVkdWNlIDIgaW5zdGVhZCBvZiBvbmUgKi9cbiAgICBjb25zdCBwcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlIC0gMjtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZShwcmV2aW91c1BhZ2VJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgdG8gc2hvdyB0aGUgbmV4dCBudW1iZXJzIHNldFxuICAgKi9cbiAgc2hvd05leHRCYXRjaCgpIHtcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlc1swXSArIHRoaXMuX3BhZ2VzSW5WaWV3ICsgdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgdG8gc2hvdyB0aGUgcHJldmlvdXMgbnVtYmVycyBzZXRcbiAgICovXG4gIHNob3dQcmV2aW91c0JhdGNoKCkge1xuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzWzBdIC0gdGhpcy5fcGFnZXNJblZpZXcgKyB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhY2tCeSBmdW5jdGlvbiBmb3IgdGhlIG5nRm9yXG4gICAqIEBwYXJhbSBpbmRleCAtIGN1cnJlbnQgaXRlbSBpbmRleFxuICAgKiBAcGFyYW0gcGFnZSAtIHRoZSBjdXJyZW50IGl0ZW0ncyBwYWdlIG51bWJlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0cmFja0J5UGFnZShpbmRleDogbnVtYmVyLCBwYWdlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIHRvZ2dsZUdyb3Vwc1N0YXRlKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA/IHRoaXMuZ3JpZEFwaS5jb2xsYXBzZUFsbCgpIDogdGhpcy5ncmlkQXBpLmV4cGFuZEFsbCgpO1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBhdXRvRml0R3JpZCh0eXBlOiAnY29udGFpbmVyJyB8ICdjb250ZW50Jykge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuZml0R3JpZCh0eXBlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge31cblxuICAvKipcbiAgICogU2V0cyB0aGUgcm93cyBkaXNwbGF5IHN0cmluZ1xuICAgKiBAcGFyYW0gZGlzcGxheU51bWJlciAtIFRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIChzdGFydGluZyBpbmRleCAxKVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRSb3dzRGlzcGxheVJhbmdlKGRpc3BsYXlOdW1iZXIpOiB2b2lkIHtcbiAgICAvKiogRGVjcmVhc2UgYnkgMSBiZWNhdXNlIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMCAqL1xuICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBkaXNwbGF5TnVtYmVyIC0gMTtcbiAgICBjb25zdCBmaXJzdFJvd0luZGV4ID0gMSArIHBhZ2VOdW1iZXIgKiB0aGlzLnJvd3NQZXJQYWdlO1xuICAgIGNvbnN0IGxhc3RSb3cgPSAocGFnZU51bWJlciArIDEpICogdGhpcy5yb3dzUGVyUGFnZTtcbiAgICBjb25zdCBsYXN0Um93SW5kZXggPSB0aGlzLnJvd0NvdW50ID4gbGFzdFJvdyA/IGxhc3RSb3cgOiB0aGlzLnJvd0NvdW50O1xuICAgIHRoaXMucm93c1JhbmdlID1cbiAgICAgIHRoaXMucm93Q291bnQgPiAwXG4gICAgICAgID8gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLml0ZW1zUmFuZ2UnLCB7XG4gICAgICAgICAgICByYW5nZTogYCR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZmlyc3RSb3dJbmRleCl9IC0gJHt0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShsYXN0Um93SW5kZXgpfWAsXG4gICAgICAgICAgICBudW1iZXI6IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHRoaXMucm93Q291bnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oJ2NvcmUubnVtYmVyT2ZJdGVtcycsIHsgbnVtYmVyOiAwIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBudW1iZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGRpc3BsYXlpbmcgbnVtYmVycy5cbiAgICogQHBhcmFtIGFuY2hvciAtIFRoZSBudW1iZXIgdG8gdXNlIGFzIGFuIGFuY2hvciBmb3IgdGhlIGNhbGN1bGF0aW9ucy5cbiAgICogQHJldHVybiB7bnVtYmVyW119IC0gQW4gYXJyYXkgb2YgdGhlIG5ldyBudW1iZXJzIHRvIGRpc3BsYXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFnZXMoYW5jaG9yOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgcGFnZXNUb0Rpc3BsYXkgPSBbXTtcbiAgICAvLyBpbmRpY2F0ZXMgcmF0aGVyIHRoZSB0YWJsZSBoYXMgbW9yZSBwYWdlcyB0aGFuIHRoZSBkaXNwbGF5IGxlbmd0aCwgd2UgYWRkIDEgYmVjYXVzZSBvZlxuICAgIC8vIGEgbG9naWMgdGhhdCBzYXlzIHRoYXQgaWYgeW91ciBjdXJyZW50IHZpZXcgaXMgMSBudW1iZXIgYXdheSBmcm9tIHRoZSBsYXN0IHBhZ2VcbiAgICAvLyBkaXNwbGF5IGhpbSBhcyB3ZWxsLlxuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSA9ICF0aGlzLnBhZ2VzRml0VmlldyAmJiBhbmNob3IgKyB0aGlzLnBhZ2VzT25TaWRlcyA8IHRoaXMudG90YWxQYWdlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93Rmlyc3RFbGxpcHNpcyA9ICF0aGlzLnBhZ2VzRml0VmlldyAmJiBhbmNob3IgLSB0aGlzLnBhZ2VzT25TaWRlcyA+IDE7XG5cbiAgICAvLyBzZXQgdGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICBjb25zdCBmaXJzdE51bWJlciA9IHRoaXMuZ2V0Rmlyc3RQYWdlTnVtYmVyKGFuY2hvcik7XG4gICAgY29uc3QgbG9vcExlbmd0aCA9IHRoaXMucGFnZXNGaXRWaWV3ID8gdGhpcy50b3RhbFBhZ2VzIDogdGhpcy5fcGFnZXNJblZpZXc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb29wTGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhZ2VzVG9EaXNwbGF5LnB1c2goZmlyc3ROdW1iZXIgKyBpKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGxhc3QgZGlzcGxheWVkIG51bWJlciBpcyAxIG51bWJlciBiZWZvcmUgdGhlIGxhc3QgcGFnZSBkaXNwbGF5IGhpbSBhcyB3ZWxsXG4gICAgaWYgKCF0aGlzLnNtYWxsVmVyc2lvbiAmJiBwYWdlc1RvRGlzcGxheVtsb29wTGVuZ3RoIC0gMV0gKyAxID09PSB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIHBhZ2VzVG9EaXNwbGF5LnB1c2godGhpcy50b3RhbFBhZ2VzKTtcbiAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gcGFnZXNUb0Rpc3BsYXk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcGFnaW5hdGlvbiBuYXZpZ2F0aW9uIHZpZXdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFuY2hvciAtIFRoZSBhbmNob3IgZm9yIHRoZSBjYWxjdWxhdGlvbnNcbiAgICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldEZpcnN0UGFnZU51bWJlcihhbmNob3I6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0TnVtYmVyID0gYW5jaG9yIC0gdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgLy8gSWYgaW4gc21hbGwgdmVyc2lvbiBzaG93IG9ubHkgbmV4dCBwYWdlIHNvIHNldCBmaXJzdCBwYWdlIHRvIGFuY2hvclxuICAgIGlmICh0aGlzLnNtYWxsVmVyc2lvbiAmJiBhbmNob3IgPiAxKSB7XG4gICAgICBpZiAoYW5jaG9yICE9PSB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgZmlyc3ROdW1iZXIgPSBhbmNob3I7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0ZpcnN0RWxsaXBzaXMpIHtcbiAgICAgIGZpcnN0TnVtYmVyID0gMTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UpIHtcbiAgICAgIGZpcnN0TnVtYmVyID0gdGhpcy50b3RhbFBhZ2VzIC0gKHRoaXMuX3BhZ2VzSW5WaWV3IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdE51bWJlcjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2hvd0xvYWRlcihwYWdlTnVtYmVyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlcnZlclNpZGVQYWdpbmF0aW9uICYmIGlzTmlsKHRoaXMuZ3JpZEFwaS5nZXRDYWNoZUJsb2NrU3RhdGUoKVtwYWdlTnVtYmVyXSk7XG4gIH1cbn1cbiJdfQ==