@c8y/ngx-components 1021.11.1 → 1021.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +34 -0
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -0
  3. package/alarms/alarms-filter.component.d.ts +2 -1
  4. package/alarms/alarms-filter.component.d.ts.map +1 -1
  5. package/alarms/alarms-view.service.d.ts +4 -2
  6. package/alarms/alarms-view.service.d.ts.map +1 -1
  7. package/alarms/alarms.component.d.ts +3 -1
  8. package/alarms/alarms.component.d.ts.map +1 -1
  9. package/alarms/alarms.model.d.ts +17 -1
  10. package/alarms/alarms.model.d.ts.map +1 -1
  11. package/alarms/alarms.module.d.ts +15 -13
  12. package/alarms/alarms.module.d.ts.map +1 -1
  13. package/branding/shared/data/store-branding.service.d.ts +5 -0
  14. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  15. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  16. package/core/dashboard/dashboard.module.d.ts +19 -19
  17. package/core/dashboard/widget-change-event.model.d.ts +1 -1
  18. package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
  19. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
  20. package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
  21. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  22. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +2 -1
  23. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  24. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +1 -14
  25. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  26. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  27. package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
  28. package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
  29. package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
  30. package/esm2022/alarms/alarms-filter.component.mjs +11 -5
  31. package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
  32. package/esm2022/alarms/alarms-view.service.mjs +15 -2
  33. package/esm2022/alarms/alarms.component.mjs +12 -6
  34. package/esm2022/alarms/alarms.model.mjs +17 -1
  35. package/esm2022/alarms/alarms.module.mjs +11 -4
  36. package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
  37. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
  38. package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
  39. package/esm2022/core/dashboard/dashboard.module.mjs +5 -4
  40. package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
  41. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
  42. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +1 -1
  43. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +6 -5
  44. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +3 -47
  45. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +7 -1
  46. package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
  47. package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
  48. package/esm2022/interval-picker/index.mjs +3 -0
  49. package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
  50. package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
  51. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
  52. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-alarms.mjs +184 -16
  54. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
  56. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
  58. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
  60. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
  61. package/fesm2022/c8y-ngx-components.mjs +17 -101
  62. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  63. package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
  64. package/interval-picker/index.d.ts +3 -0
  65. package/interval-picker/index.d.ts.map +1 -0
  66. package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
  67. package/interval-picker/interval-picker.component.d.ts.map +1 -0
  68. package/interval-picker/interval-picker.model.d.ts +15 -0
  69. package/interval-picker/interval-picker.model.d.ts.map +1 -0
  70. package/locales/locales.pot +9 -3
  71. package/package.json +1 -1
  72. package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
  73. package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
@@ -19,10 +19,10 @@ import { DynamicFormsModule } from '../dynamic-forms';
19
19
  import { HelpModule } from '../help';
20
20
  import { DateTimePickerModule } from '../date-time-picker';
21
21
  import { FormsModule } from '../forms';
22
- import { IntervalPickerComponent } from './wiget-time-context/interval-picker/interval-picker.component';
23
22
  import { RealtimeControlComponent } from './wiget-time-context/realtime-control/realtime-control.component';
24
23
  import { AggregationPickerComponent } from './wiget-time-context/aggregation-picker/aggregation-picker.component';
25
24
  import { WidgetTimeContextIconBar } from './wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component';
25
+ import { IntervalPickerComponent } from '@c8y/ngx-components/interval-picker';
26
26
  import { PopoverModule } from 'ngx-bootstrap/popover';
27
27
  import * as i0 from "@angular/core";
28
28
  import * as i1 from "ngx-bootstrap/dropdown";
@@ -34,7 +34,6 @@ export class DashboardModule {
34
34
  DashboardChildActionComponent,
35
35
  WidgetsDashboardComponent,
36
36
  WidgetTimeContextComponent,
37
- IntervalPickerComponent,
38
37
  RealtimeControlComponent,
39
38
  AggregationPickerComponent,
40
39
  WidgetTimeContextIconBar], imports: [CommonModule,
@@ -49,6 +48,7 @@ export class DashboardModule {
49
48
  DynamicFormsModule,
50
49
  HelpModule,
51
50
  DateTimePickerModule,
51
+ IntervalPickerComponent,
52
52
  PopoverModule], exports: [DashboardComponent,
53
53
  DashboardChildComponent,
54
54
  DashboardChildTitleComponent,
@@ -69,6 +69,7 @@ export class DashboardModule {
69
69
  DynamicFormsModule,
70
70
  HelpModule,
71
71
  DateTimePickerModule,
72
+ IntervalPickerComponent,
72
73
  PopoverModule] }); }
73
74
  }
74
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardModule, decorators: [{
@@ -81,7 +82,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
81
82
  DashboardChildActionComponent,
82
83
  WidgetsDashboardComponent,
83
84
  WidgetTimeContextComponent,
84
- IntervalPickerComponent,
85
85
  RealtimeControlComponent,
86
86
  AggregationPickerComponent,
87
87
  WidgetTimeContextIconBar
@@ -101,6 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
101
101
  DynamicFormsModule,
102
102
  HelpModule,
103
103
  DateTimePickerModule,
104
+ IntervalPickerComponent,
104
105
  PopoverModule
105
106
  ],
106
107
  exports: [
@@ -113,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
113
114
  ]
114
115
  }]
115
116
  }] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDekcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDNUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEZBQTBGLENBQUM7QUFDcEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUF5Q3RELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFyQ3hCLHVCQUF1QjtZQUN2QixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3Qix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsMEJBQTBCO1lBQzFCLHdCQUF3QixhQUd4QixZQUFZO1lBQ1osZUFBZTtZQUNmLHNCQUFzQjtZQUN0QixjQUFjLHVCQUVkLGFBQWE7WUFDYixZQUFZO1lBQ1osVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixVQUFVO1lBQ1Ysb0JBQW9CO1lBQ3BCLGFBQWEsYUFHYixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0IseUJBQXlCO1lBQ3pCLDBCQUEwQjsrR0FHakIsZUFBZSxZQXpCeEIsWUFBWTtZQUNaLGVBQWU7WUFDZixzQkFBc0I7WUFDdEIsY0FBYztZQUNkLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtZQUMxQixhQUFhO1lBQ2IsWUFBWTtZQUNaLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsVUFBVTtZQUNWLG9CQUFvQjtZQUNwQixhQUFhOzsyRkFXSixlQUFlO2tCQXZDM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLDRCQUE0Qjt3QkFDNUIsNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7d0JBQzFCLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6QiwwQkFBMEI7cUJBQzNCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBBY3Rpb25CYXJNb2R1bGUgfSBmcm9tICcuLi9hY3Rpb24tYmFyL2FjdGlvbi1iYXIubW9kdWxlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJNb2R1bGUgfSBmcm9tICcuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kdWxlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcbmltcG9ydCB7IERvY3NNb2R1bGUgfSBmcm9tICcuLi9kb2NzL2RvY3MubW9kdWxlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkVGl0bGVDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC10aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGb3Jtc01vZHVsZSB9IGZyb20gJy4uL2R5bmFtaWMtZm9ybXMnO1xuaW1wb3J0IHsgSGVscE1vZHVsZSB9IGZyb20gJy4uL2hlbHAnO1xuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICcuLi9kYXRlLXRpbWUtcGlja2VyJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnLi4vZm9ybXMnO1xuaW1wb3J0IHsgSW50ZXJ2YWxQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9pbnRlcnZhbC1waWNrZXIvaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFsdGltZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9yZWFsdGltZS1jb250cm9sL3JlYWx0aW1lLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvYWdncmVnYXRpb24tcGlja2VyL2FnZ3JlZ2F0aW9uLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRJY29uQmFyIH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhci93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkVGl0bGVDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQsXG4gICAgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCxcbiAgICBJbnRlcnZhbFBpY2tlckNvbXBvbmVudCxcbiAgICBSZWFsdGltZUNvbnRyb2xDb21wb25lbnQsXG4gICAgQWdncmVnYXRpb25QaWNrZXJDb21wb25lbnQsXG4gICAgV2lkZ2V0VGltZUNvbnRleHRJY29uQmFyXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQWN0aW9uQmFyTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgQnNEcm9wZG93bk1vZHVsZS5mb3JSb290KCksXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgRG9jc01vZHVsZSxcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBEeW5hbWljRm9ybXNNb2R1bGUsXG4gICAgSGVscE1vZHVsZSxcbiAgICBEYXRlVGltZVBpY2tlck1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYXNoYm9hcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRUaXRsZUNvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCxcbiAgICBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTW9kdWxlIHt9XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDNUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEZBQTBGLENBQUM7QUFDcEksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUF5Q3RELE1BQU0sT0FBTyxlQUFlOzhHQUFmLGVBQWU7K0dBQWYsZUFBZSxpQkFyQ3hCLHVCQUF1QjtZQUN2QixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3Qix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QiwwQkFBMEI7WUFDMUIsd0JBQXdCLGFBR3hCLFlBQVk7WUFDWixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLGNBQWMsdUJBRWQsYUFBYTtZQUNiLFlBQVk7WUFDWixVQUFVO1lBQ1YsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsa0JBQWtCO1lBQ2xCLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsdUJBQXVCO1lBQ3ZCLGFBQWEsYUFHYixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0IseUJBQXlCO1lBQ3pCLDBCQUEwQjsrR0FHakIsZUFBZSxZQTFCeEIsWUFBWTtZQUNaLGVBQWU7WUFDZixzQkFBc0I7WUFDdEIsY0FBYztZQUNkLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtZQUMxQixhQUFhO1lBQ2IsWUFBWTtZQUNaLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsVUFBVTtZQUNWLG9CQUFvQjtZQUNwQix1QkFBdUI7WUFDdkIsYUFBYTs7MkZBV0osZUFBZTtrQkF2QzNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6QiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysc0JBQXNCO3dCQUN0QixjQUFjO3dCQUNkLGdCQUFnQixDQUFDLE9BQU8sRUFBRTt3QkFDMUIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQWN0aW9uQmFyTW9kdWxlIH0gZnJvbSAnLi4vYWN0aW9uLWJhci9hY3Rpb24tYmFyLm1vZHVsZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAnLi4vYnJlYWRjcnVtYi9icmVhZGNydW1iLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBEb2NzTW9kdWxlIH0gZnJvbSAnLi4vZG9jcy9kb2NzLm1vZHVsZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IEhlYWRlck1vZHVsZSB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIubW9kdWxlJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMtZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybXNNb2R1bGUgfSBmcm9tICcuLi9keW5hbWljLWZvcm1zJztcbmltcG9ydCB7IEhlbHBNb2R1bGUgfSBmcm9tICcuLi9oZWxwJztcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnLi4vZGF0ZS10aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IFJlYWx0aW1lQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vd2lnZXQtdGltZS1jb250ZXh0L3JlYWx0aW1lLWNvbnRyb2wvcmVhbHRpbWUtY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWdncmVnYXRpb25QaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC9hZ2dyZWdhdGlvbi1waWNrZXIvYWdncmVnYXRpb24tcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRUaW1lQ29udGV4dEljb25CYXIgfSBmcm9tICcuL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWljb24tYmFyL3dpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEludGVydmFsUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERhc2hib2FyZENoaWxkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRDaGlsZFRpdGxlQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50LFxuICAgIFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnQsXG4gICAgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQsXG4gICAgUmVhbHRpbWVDb250cm9sQ29tcG9uZW50LFxuICAgIEFnZ3JlZ2F0aW9uUGlja2VyQ29tcG9uZW50LFxuICAgIFdpZGdldFRpbWVDb250ZXh0SWNvbkJhclxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFjdGlvbkJhck1vZHVsZSxcbiAgICBEeW5hbWljQ29tcG9uZW50TW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUuZm9yUm9vdCgpLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgSGVhZGVyTW9kdWxlLFxuICAgIERvY3NNb2R1bGUsXG4gICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCc0RhdGVwaWNrZXJNb2R1bGUsXG4gICAgRHluYW1pY0Zvcm1zTW9kdWxlLFxuICAgIEhlbHBNb2R1bGUsXG4gICAgRGF0ZVRpbWVQaWNrZXJNb2R1bGUsXG4gICAgSW50ZXJ2YWxQaWNrZXJDb21wb25lbnQsXG4gICAgUG9wb3Zlck1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZENoaWxkVGl0bGVDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQsXG4gICAgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZE1vZHVsZSB7fVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbi8qKlxuICogVHlwZSBmb3IgZGVzY3JpYmluZyB3aWRnZXQgY2hhbmdlIGV2ZW50cy4gSXQncyBwb3NzaWJsZVxuICogdG8gZXh0ZW5kIHRoaXMgYnkgYWRkaW5nIGFkZGl0aW9uYWwgZXZlbnRzIHRvIGRpc2NyaW1pbmF0ZWQgdW5pb24gdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2lkZ2V0Q2hhbmdlRXZlbnQgPSBUaW1lQ29udGV4dEV2ZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDb250ZXh0RXZlbnQge1xuICB0eXBlOiAnVElNRV9DT05URVhUJztcbiAgZGF0YTogV2lkZ2V0VGltZUNvbnRleHQ7XG59XG5cbmV4cG9ydCB0eXBlIFdpZGdldENoYW5nZUV2ZW50VHlwZSA9IFdpZGdldENoYW5nZUV2ZW50Wyd0eXBlJ107XG5cbmV4cG9ydCB0eXBlIFJldmVydENoYW5nZVR5cGUgPSAndW5kbycgfCAncmVkbyc7XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lQ29udGV4dCA9IFtEYXRlLCBEYXRlXTtcblxuZXhwb3J0IHR5cGUgV2lkZ2V0VGltZUNvbnRleHQgPVxuICB8ICh7IGRhdGVUaW1lQ29udGV4dDogRGF0ZVRpbWVDb250ZXh0OyByZWFsdGltZTogYm9vbGVhbjsgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZSB9ICYge1xuICAgICAgaW50ZXJ2YWw/OiBuZXZlcjtcbiAgICB9KVxuICB8ICh7IGRhdGVUaW1lQ29udGV4dD86IG5ldmVyIH0gJiB7XG4gICAgICBpbnRlcnZhbDogSW50ZXJ2YWxbJ2lkJ107XG4gICAgICByZWFsdGltZTogYm9vbGVhbjtcbiAgICAgIGFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblR5cGU7XG4gICAgfSk7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG4vKipcbiAqIFR5cGUgZm9yIGRlc2NyaWJpbmcgd2lkZ2V0IGNoYW5nZSBldmVudHMuIEl0J3MgcG9zc2libGVcbiAqIHRvIGV4dGVuZCB0aGlzIGJ5IGFkZGluZyBhZGRpdGlvbmFsIGV2ZW50cyB0byBkaXNjcmltaW5hdGVkIHVuaW9uIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFdpZGdldENoYW5nZUV2ZW50ID0gVGltZUNvbnRleHRFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ29udGV4dEV2ZW50IHtcbiAgdHlwZTogJ1RJTUVfQ09OVEVYVCc7XG4gIGRhdGE6IFdpZGdldFRpbWVDb250ZXh0O1xufVxuXG5leHBvcnQgdHlwZSBXaWRnZXRDaGFuZ2VFdmVudFR5cGUgPSBXaWRnZXRDaGFuZ2VFdmVudFsndHlwZSddO1xuXG5leHBvcnQgdHlwZSBSZXZlcnRDaGFuZ2VUeXBlID0gJ3VuZG8nIHwgJ3JlZG8nO1xuXG5leHBvcnQgdHlwZSBEYXRlVGltZUNvbnRleHQgPSBbRGF0ZSwgRGF0ZV07XG5cbmV4cG9ydCB0eXBlIFdpZGdldFRpbWVDb250ZXh0ID1cbiAgfCAoeyBkYXRlVGltZUNvbnRleHQ6IERhdGVUaW1lQ29udGV4dDsgcmVhbHRpbWU6IGJvb2xlYW47IGFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblR5cGUgfSAmIHtcbiAgICAgIGludGVydmFsPzogbmV2ZXI7XG4gICAgfSlcbiAgfCAoeyBkYXRlVGltZUNvbnRleHQ/OiBuZXZlciB9ICYge1xuICAgICAgaW50ZXJ2YWw6IEludGVydmFsWydpZCddO1xuICAgICAgcmVhbHRpbWU6IGJvb2xlYW47XG4gICAgICBhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25UeXBlO1xuICAgIH0pO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { INTERVALS, WidgetTimeContextActionBarPriority } from './widget-time-context.model';
2
+ import { WidgetTimeContextActionBarPriority } from './widget-time-context.model';
3
3
  import { aggregationType } from '@c8y/client';
4
+ import { INTERVALS } from '@c8y/ngx-components/interval-picker';
4
5
  import * as i0 from "@angular/core";
5
6
  export class WidgetTimeContextHelperService {
6
7
  /**
@@ -85,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
85
86
  type: Injectable,
86
87
  args: [{ providedIn: 'root' }]
87
88
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxrQ0FBa0MsRUFFbkMsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUc5QyxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxtQkFBMkIsRUFBRSxpQkFBeUI7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLElBQ0UsUUFBUSxZQUFZLElBQUk7WUFDeEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxJQUFJO1lBQ3RCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUN6QixDQUFDO1lBQ0QsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsV0FBNEI7UUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQXNCLENBQUM7UUFDMUYsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxVQUEwQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILG9CQUFvQixDQUFDLGVBQXNDO1FBQ3pELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUMvRixJQUFJLGlCQUFpQixJQUFJLHFCQUFxQixJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDM0UsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sa0NBQWtDLENBQUMsR0FBRyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGtDQUFrQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQWpGVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEludGVydmFsLFxuICBJTlRFUlZBTFMsXG4gIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHksXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBwYXJhbSBmb3IgYmVpbmcgc2VsZWN0YWJsZSBJbnRlcnZhbCBpZC5cbiAgICogQHBhcmFtIGludGVydmFsSWQgSW50ZXJ2YWwgaWQgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHByb3ZpZGVkIGlkIGlzIHZhbGlkLCBzZWxlY3RhYmxlIEludGVydmFsIGlkIGFuZCBmYWxzZSBpZiBpdCdzIG5vdC5cbiAgICovXG4gIGlzU2VsZWN0YWJsZUludGVydmFsKGludGVydmFsSWQ6IEludGVydmFsWydpZCddKSB7XG4gICAgaWYgKGludGVydmFsSWQgPT09ICdjdXN0b20nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBJTlRFUlZBTFMuc29tZSgoeyBpZCB9KSA9PiBpZCA9PT0gaW50ZXJ2YWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHByb3ZpZGVkIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiOlxuICAgKiAtIGlmIGJvdGggZGF0ZXMgYXJlIHByb3BlciBkYXRlIHN0cmluZ3NcbiAgICogLSBpZiBwcm92aWRlZCBkYXRlIGZyb20gaXMgZWFybGllciB0aGFuIGRhdGUgdG8uXG4gICAqIEBwYXJhbSBzdHJpbmdpZmllZERhdGVGcm9tIERhdGUgXCJmcm9tXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcGFyYW0gc3RyaW5naWZpZWREYXRlVG8gRGF0ZSBcInRvXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdmFsaWRhdGlvbiBvZiBkYXRlcyByYW5nZS5cbiAgICovXG4gIGlzVmFsaWREYXRlUmFuZ2Uoc3RyaW5naWZpZWREYXRlRnJvbTogc3RyaW5nLCBzdHJpbmdpZmllZERhdGVUbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVGcm9tKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVUbyk7XG4gICAgaWYgKFxuICAgICAgZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZUZyb20/LmdldFRpbWUoKSkgJiZcbiAgICAgIGRhdGVUbyBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlVG8/LmdldFRpbWUoKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRlRnJvbSA8IGRhdGVUbztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBhZ2dyZWdhdGlvbjpcbiAgICogQHBhcmFtIGFnZ3JlZ2F0aW9uIERhdGUgXCJmcm9tXCIgdGhhdCBzaG91bGQgYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdmFsaWRhdGlvbiBvZiBhZ2dyZWdhdGlvbi5cbiAgICovXG4gIGlzVmFsaWRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcG9zc2libGVBZ2dyZWdhdGlvbnMgPSBbbnVsbCwgLi4uT2JqZWN0LmtleXMoYWdncmVnYXRpb25UeXBlKV0gYXMgYWdncmVnYXRpb25UeXBlW107XG4gICAgcmV0dXJuIHBvc3NpYmxlQWdncmVnYXRpb25zLmluY2x1ZGVzKGFnZ3JlZ2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGRhdGUgdGltZSBjb250ZXh0IGFjY29yZGluZyB0byBwcm92aWRlZCBpbnRlcnZhbC5cbiAgICogQHBhcmFtIGludGVydmFsSWQgSW50ZXJ2YWwgaWQgaW5kaWNhdGluZyB0aW1lIHJhbmdlLlxuICAgKiBAcmV0dXJucyBUdXBsZSBvZiBkYXRlcy0gdGhlIGZpcnN0IG9uZSBpcyBkYXRlIFwiZnJvbVwiIGFjY29yZGluZyB0byBzZWxlY3RlZCBpbnRlcnZhbCwgc2Vjb25kIG9uZSBpcyBkYXRlIFwidG9cIiAobm93KS5cbiAgICovXG4gIGdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWxJZDogSW50ZXJ2YWxbJ2lkJ10pOiBEYXRlVGltZUNvbnRleHQge1xuICAgIGNvbnN0IGludGVydmFsID0gSU5URVJWQUxTLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGludGVydmFsSWQpO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShkYXRlVG8udmFsdWVPZigpIC0gaW50ZXJ2YWwudGltZXNwYW5Jbk1zKTtcbiAgICByZXR1cm4gW2RhdGVGcm9tLCBkYXRlVG9dO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgcHJpb3JpdHkgZm9yIHNpbmdsZSBhY3Rpb24gYmFyIGl0ZW0gb2YgYmFyIGl0ZW1zIHRoYXQgaGFzIHRoZSAndGltZWNvbnRleHQnIGdyb3VwSWQuXG4gICAqIFdpZGdldHMgdGhhdCB1c2VzIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IGNhbiBiZSBhc3NpZ25lZCB0byB0aHJlZSBsZXZlbHMgb2YgcHJpb3JpdHk6XG4gICAqIEhJR0ggcHJpb3JpdHkgbWVhbnMgdGhhdCB3aWRnZXQgaXMgdXNpbmcgdGltZSByYW5nZSBwaWNrZXJzLCByZWFsdGltZSBhbmQgYWdncmVnYXRpb24gZmVhdHVyZXMuXG4gICAqIFdpZGdldHM6IERhdGEgcG9pbnRzIGdyYXBoLCBEYXRhIHBvaW50cyBncmFwaCAyLjAsIERhdGEgcG9pbnRzIHRhYmxlLlxuICAgKiBNRURJVU0gcHJpb3JpdHkgbWVhbnMgdGhhdCB3aWRnZXQgaXMgdXNpbmcgdGltZSByYW5nZSBwaWNrZXJzIGFuZCByZWFsdGltZSBmZWF0dXJlcy5cbiAgICogV2lkZ2V0czogRXZlbnQgbGlzdC5cbiAgICogTE9XIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHJlYWx0aW1lIGZlYXR1cmUgb25seS5cbiAgICogV2lkZ2V0czogTWFwXG4gICAqIEBwYXJhbSBkaXNwbGF5U2V0dGluZ3MgU2V0dGluZ3MgaW5kaWNhdGluZyB3aGljaCBmZWF0dXJlcyBvZiBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBhcmUgdXNlZCBieSB3aWRnZXQuXG4gICAqIEByZXR1cm5zIHByaW9yaXR5IG9mIHdpZGdldCBhY3Rpb24gYmFyIGl0ZW0uXG4gICAqL1xuICBnZXRBY3Rpb25CYXJQcmlvcml0eShkaXNwbGF5U2V0dGluZ3M6IFdpZGdldERpc3BsYXlTZXR0aW5ncyk6IFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkge1xuICAgIGNvbnN0IHsgZ2xvYmFsVGltZUNvbnRleHQsIGdsb2JhbFJlYWx0aW1lQ29udGV4dCwgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0IH0gPSBkaXNwbGF5U2V0dGluZ3M7XG4gICAgaWYgKGdsb2JhbFRpbWVDb250ZXh0ICYmIGdsb2JhbFJlYWx0aW1lQ29udGV4dCAmJiBnbG9iYWxBZ2dyZWdhdGlvbkNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5LkhJR0g7XG4gICAgfVxuICAgIGlmIChnbG9iYWxUaW1lQ29udGV4dCAmJiBnbG9iYWxSZWFsdGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5Lk1FRElVTTtcbiAgICB9XG4gICAgaWYgKGdsb2JhbFJlYWx0aW1lQ29udGV4dCkge1xuICAgICAgcmV0dXJuIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkuTE9XO1xuICAgIH1cbiAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5OT05FO1xuICB9XG59XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZ2V0LXRpbWUtY29udGV4dC93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtDQUFrQyxFQUVuQyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUcxRSxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxtQkFBMkIsRUFBRSxpQkFBeUI7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLElBQ0UsUUFBUSxZQUFZLElBQUk7WUFDeEIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sWUFBWSxJQUFJO1lBQ3RCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUN6QixDQUFDO1lBQ0QsT0FBTyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsV0FBNEI7UUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQXNCLENBQUM7UUFDMUYsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxVQUEwQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILG9CQUFvQixDQUFDLGVBQXNDO1FBQ3pELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUMvRixJQUFJLGlCQUFpQixJQUFJLHFCQUFxQixJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDM0UsT0FBTyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sa0NBQWtDLENBQUMsR0FBRyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGtDQUFrQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDOzhHQWpGVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQURqQixNQUFNOzsyRkFDbkIsOEJBQThCO2tCQUQxQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHksXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBJbnRlcnZhbCwgSU5URVJWQUxTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0SGVscGVyU2VydmljZSB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgcGFyYW0gZm9yIGJlaW5nIHNlbGVjdGFibGUgSW50ZXJ2YWwgaWQuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBwcm92aWRlZCBpZCBpcyB2YWxpZCwgc2VsZWN0YWJsZSBJbnRlcnZhbCBpZCBhbmQgZmFsc2UgaWYgaXQncyBub3QuXG4gICAqL1xuICBpc1NlbGVjdGFibGVJbnRlcnZhbChpbnRlcnZhbElkOiBJbnRlcnZhbFsnaWQnXSkge1xuICAgIGlmIChpbnRlcnZhbElkID09PSAnY3VzdG9tJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gSU5URVJWQUxTLnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IGludGVydmFsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm92aWRlZCBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIjpcbiAgICogLSBpZiBib3RoIGRhdGVzIGFyZSBwcm9wZXIgZGF0ZSBzdHJpbmdzXG4gICAqIC0gaWYgcHJvdmlkZWQgZGF0ZSBmcm9tIGlzIGVhcmxpZXIgdGhhbiBkYXRlIHRvLlxuICAgKiBAcGFyYW0gc3RyaW5naWZpZWREYXRlRnJvbSBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHBhcmFtIHN0cmluZ2lmaWVkRGF0ZVRvIERhdGUgXCJ0b1wiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgZGF0ZXMgcmFuZ2UuXG4gICAqL1xuICBpc1ZhbGlkRGF0ZVJhbmdlKHN0cmluZ2lmaWVkRGF0ZUZyb206IHN0cmluZywgc3RyaW5naWZpZWREYXRlVG86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlRnJvbSk7XG4gICAgY29uc3QgZGF0ZVRvID0gbmV3IERhdGUoc3RyaW5naWZpZWREYXRlVG8pO1xuICAgIGlmIChcbiAgICAgIGRhdGVGcm9tIGluc3RhbmNlb2YgRGF0ZSAmJlxuICAgICAgIWlzTmFOKGRhdGVGcm9tPy5nZXRUaW1lKCkpICYmXG4gICAgICBkYXRlVG8gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZVRvPy5nZXRUaW1lKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0ZUZyb20gPCBkYXRlVG87XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgcHJvdmlkZWQgYWdncmVnYXRpb246XG4gICAqIEBwYXJhbSBhZ2dyZWdhdGlvbiBEYXRlIFwiZnJvbVwiIHRoYXQgc2hvdWxkIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHZhbGlkYXRpb24gb2YgYWdncmVnYXRpb24uXG4gICAqL1xuICBpc1ZhbGlkQWdncmVnYXRpb24oYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBvc3NpYmxlQWdncmVnYXRpb25zID0gW251bGwsIC4uLk9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9uVHlwZSldIGFzIGFnZ3JlZ2F0aW9uVHlwZVtdO1xuICAgIHJldHVybiBwb3NzaWJsZUFnZ3JlZ2F0aW9ucy5pbmNsdWRlcyhhZ2dyZWdhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBkYXRlIHRpbWUgY29udGV4dCBhY2NvcmRpbmcgdG8gcHJvdmlkZWQgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSBpbnRlcnZhbElkIEludGVydmFsIGlkIGluZGljYXRpbmcgdGltZSByYW5nZS5cbiAgICogQHJldHVybnMgVHVwbGUgb2YgZGF0ZXMtIHRoZSBmaXJzdCBvbmUgaXMgZGF0ZSBcImZyb21cIiBhY2NvcmRpbmcgdG8gc2VsZWN0ZWQgaW50ZXJ2YWwsIHNlY29uZCBvbmUgaXMgZGF0ZSBcInRvXCIgKG5vdykuXG4gICAqL1xuICBnZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGludGVydmFsSWQ6IEludGVydmFsWydpZCddKTogRGF0ZVRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IElOVEVSVkFMUy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBpbnRlcnZhbElkKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUoZGF0ZVRvLnZhbHVlT2YoKSAtIGludGVydmFsLnRpbWVzcGFuSW5Ncyk7XG4gICAgcmV0dXJuIFtkYXRlRnJvbSwgZGF0ZVRvXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHByaW9yaXR5IGZvciBzaW5nbGUgYWN0aW9uIGJhciBpdGVtIG9mIGJhciBpdGVtcyB0aGF0IGhhcyB0aGUgJ3RpbWVjb250ZXh0JyBncm91cElkLlxuICAgKiBXaWRnZXRzIHRoYXQgdXNlcyBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBjYW4gYmUgYXNzaWduZWQgdG8gdGhyZWUgbGV2ZWxzIG9mIHByaW9yaXR5OlxuICAgKiBISUdIIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycywgcmVhbHRpbWUgYW5kIGFnZ3JlZ2F0aW9uIGZlYXR1cmVzLlxuICAgKiBXaWRnZXRzOiBEYXRhIHBvaW50cyBncmFwaCwgRGF0YSBwb2ludHMgZ3JhcGggMi4wLCBEYXRhIHBvaW50cyB0YWJsZS5cbiAgICogTUVESVVNIHByaW9yaXR5IG1lYW5zIHRoYXQgd2lkZ2V0IGlzIHVzaW5nIHRpbWUgcmFuZ2UgcGlja2VycyBhbmQgcmVhbHRpbWUgZmVhdHVyZXMuXG4gICAqIFdpZGdldHM6IEV2ZW50IGxpc3QuXG4gICAqIExPVyBwcmlvcml0eSBtZWFucyB0aGF0IHdpZGdldCBpcyB1c2luZyByZWFsdGltZSBmZWF0dXJlIG9ubHkuXG4gICAqIFdpZGdldHM6IE1hcFxuICAgKiBAcGFyYW0gZGlzcGxheVNldHRpbmdzIFNldHRpbmdzIGluZGljYXRpbmcgd2hpY2ggZmVhdHVyZXMgb2YgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgYXJlIHVzZWQgYnkgd2lkZ2V0LlxuICAgKiBAcmV0dXJucyBwcmlvcml0eSBvZiB3aWRnZXQgYWN0aW9uIGJhciBpdGVtLlxuICAgKi9cbiAgZ2V0QWN0aW9uQmFyUHJpb3JpdHkoZGlzcGxheVNldHRpbmdzOiBXaWRnZXREaXNwbGF5U2V0dGluZ3MpOiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5IHtcbiAgICBjb25zdCB7IGdsb2JhbFRpbWVDb250ZXh0LCBnbG9iYWxSZWFsdGltZUNvbnRleHQsIGdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dCB9ID0gZGlzcGxheVNldHRpbmdzO1xuICAgIGlmIChnbG9iYWxUaW1lQ29udGV4dCAmJiBnbG9iYWxSZWFsdGltZUNvbnRleHQgJiYgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5ISUdIO1xuICAgIH1cbiAgICBpZiAoZ2xvYmFsVGltZUNvbnRleHQgJiYgZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm4gV2lkZ2V0VGltZUNvbnRleHRBY3Rpb25CYXJQcmlvcml0eS5NRURJVU07XG4gICAgfVxuICAgIGlmIChnbG9iYWxSZWFsdGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkJhclByaW9yaXR5LkxPVztcbiAgICB9XG4gICAgcmV0dXJuIFdpZGdldFRpbWVDb250ZXh0QWN0aW9uQmFyUHJpb3JpdHkuTk9ORTtcbiAgfVxufVxuIl19
@@ -162,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
162
162
  type: Injectable,
163
163
  args: [{ providedIn: 'root' }]
164
164
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.WidgetTimeContextHelperService }, { type: i1.Router }] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQtcXVlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsMEJBQTBCLEVBSzNCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFLdEYsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGNBQThCLEVBQzlCLGFBQTZDLEVBQzdDLE1BQWM7UUFGZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWdDO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFrRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDNUYsTUFBTSxDQUFDLENBQUMsTUFBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDhCQUE4QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENB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bUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3hELE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLE1BQU0sQ0FBQyxhQUFhLENBQ3JCLENBQUM7UUFDRixPQUFPLGdCQUFnQixJQUFJLGNBQWMsQ0FBQztJQUM1QyxDQUFDOzhHQXBMVSw2QkFBNkI7a0hBQTdCLDZCQUE2QixjQURoQixNQUFNOzsyRkFDbkIsNkJBQTZCO2tCQUR6QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcyxcbiAgSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBJbnRlcnZhbCxcbiAgT3V0cHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyxcbiAgV2lkZ2V0VGltZUNvbnRleHRTdGF0ZVxufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtdGltZS1jb250ZXh0LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCB9IGZyb20gJy4uL3dpZGdldC1jaGFuZ2UtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgYWdncmVnYXRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0UXVlcnlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBoZWxwZXJTZXJ2aWNlOiBXaWRnZXRUaW1lQ29udGV4dEhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGRhdGUgY29udGV4dCBxdWVyeSBwYXJhbXMgZXZlcnkgdGltZSBxdWVyeSBwYXJhbXMgY2hhbmdlLlxuICAgKiBJbnZhbGlkIHZhbHVlcyBhcmUgZmlsdGVyZWQgb3V0LlxuICAgKlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGRhdGUgY29udGV4dCBxdWVyeSBwYXJhbXMuXG4gICAqL1xuICBxdWVyeVBhcmFtc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5waXBlKFxuICAgICAgbWFwKChwYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcywgc3RyaW5nPikgPT4gdGhpcy5wcm9jZXNzUXVlcnlQYXJhbXMocGFyYW1zKSksXG4gICAgICBmaWx0ZXIoKHBhcmFtczogSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zKSA9PiB0aGlzLnF1ZXJ5UGFyYW1zQ29udGFpbnNUaW1lUmFuZ2UocGFyYW1zKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgd2lkZ2V0IHRpbWUgY29udGV4dCBmcm9tIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqIEludGVydmFsIGRhdGEgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGRhdGUgdGltZSBjb250ZXh0IGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIixcbiAgICogc28gaWYgdmFsaWQgaW50ZXJ2YWwgaXMgcHJvdmlkZWQsIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGFyZSBpZ25vcmVkLCBhbmQgdGhleSBhcmUgcmVjYWxjdWxhdGVkXG4gICAqIHdpdGggaW50ZXJ2YWwuXG4gICAqXG4gICAqIEByZXR1cm5zIFdpZGdldCB0aW1lIGNvbnRleHQgc3RhdGUgYmFzZWQgb24gY3VycmVudCBxdWVyeSBwYXJhbXMgb3IgbnVsbCBpZiBxdWVyeSBwYXJhbXMgcHJvdmlkZSBubyB2YWxpZCBjb250ZXh0LlxuICAgKi9cbiAgZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKCk6IFdpZGdldFRpbWVDb250ZXh0U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucGFyc2VSZWFsdGltZShcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX1JFQUxUSU1FXVxuICAgICk7XG4gICAgLy8gdHJ5aW5nIHRvIGdldCBkYXRlIGNvbnRleHQgZnJvbSBxdWVyeSBwYXJhbXMgYnkgaW50ZXJ2YWwgZmlyc3RcbiAgICBjb25zdCBkYXRlQ29udGV4dEludGVydmFsID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX0lOVEVSVkFMXTtcbiAgICBjb25zdCBhZ2dyZWdhdGlvbiA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9BR0dSRUdBVElPTl07XG4gICAgY29uc3QgaXNWYWxpZEludGVydmFsID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzU2VsZWN0YWJsZUludGVydmFsKGRhdGVDb250ZXh0SW50ZXJ2YWwpO1xuICAgIGlmIChpc1ZhbGlkSW50ZXJ2YWwpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGRhdGVDb250ZXh0SW50ZXJ2YWwpLFxuICAgICAgICBpbnRlcnZhbDogZGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGlmIGRhdGUgY29udGV4dCBieSBpbnRlcnZhbCBpcyBub3QgcHJvdmlkZWQsIHRyeSBnZXR0aW5nIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGZyb20gcXVlcnkgcGFyYW1zXG4gICAgY29uc3QgZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zID0gdGhpcy5nZXREYXRlQ29udGV4dEZyb21RdWVyeVBhcmFtcygpO1xuICAgIGlmIChkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcyxcbiAgICAgICAgaW50ZXJ2YWw6ICdjdXN0b20nLFxuICAgICAgICByZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcXVlcnkgcGFyYW1ldGVycyByZWxhdGVkIHRvIGRhdGUgdGltZSBjb250ZXh0LlxuICAgKiBWYWxpZCBpbnRlcnZhbCAoYW5kIG90aGVyIHRoYW4gJ2N1c3RvbScpIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBjb250ZXh0IGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIi5cbiAgICogSW50ZXJ2YWwgYW5kIGNvbnRleHQgZGVzY3JpYmVkIGJ5IGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiIGV4Y2x1ZGUgZWFjaCBvdGhlci5cbiAgICpcbiAgICogQHBhcmFtIHdpZGdldFRpbWVDb250ZXh0U3RhdGUgV2lkZ2V0IHRpbWUgY29udGV4dCBzdGF0ZS5cbiAgICovXG4gIHNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoe1xuICAgIGludGVydmFsLFxuICAgIGRhdGUsXG4gICAgcmVhbHRpbWUsXG4gICAgYWdncmVnYXRpb25cbiAgfTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSk6IHZvaWQge1xuICAgIGxldCBxdWVyeVBhcmFtczogT3V0cHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcztcbiAgICBpZiAoaW50ZXJ2YWwgJiYgaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgZGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWwsXG4gICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IHJlYWx0aW1lLFxuICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgIGRhdGVDb250ZXh0RnJvbTogZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgICBkYXRlQ29udGV4dFRvOiBkYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IHJlYWx0aW1lLFxuICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGRhdGUgdGltZSBjb250ZXh0IHJlbGF0ZWQgcXVlcnkgcGFyYW1ldGVycy5cbiAgICovXG4gIGNsZWFyUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2xlYXJpbmdRdWVyeVBhcmFtczogUmVjb3JkPERhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLCBudWxsPiA9IHtcbiAgICAgIGRhdGVDb250ZXh0RnJvbTogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0VG86IG51bGwsXG4gICAgICBkYXRlQ29udGV4dEludGVydmFsOiBudWxsLFxuICAgICAgZGF0ZUNvbnRleHRSZWFsdGltZTogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0QWdncmVnYXRpb246IG51bGxcbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IGNsZWFyaW5nUXVlcnlQYXJhbXMsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIGFuZCB2YWxpZGF0ZXMgZGF0ZSBjb250ZXh0IGZyb20gcXVlcnkgcGFyYW1zIGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIi5cbiAgICpcbiAgICogQHJldHVybnMgRGF0ZSBjb250ZXh0IGFzIHR1cGxlIG9mIGRhdGUgXCJmcm9tXCIgYW5kIGRhdGUgXCJ0b1wiLCBvciBudWxsIGlmIGRhdGUgY29udGV4dCBpcyBpbnZhbGlkLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXRlQ29udGV4dEZyb21RdWVyeVBhcmFtcygpOiBEYXRlVGltZUNvbnRleHQgfCBudWxsIHtcbiAgICBjb25zdCBkYXRlQ29udGV4dEZyb20gPVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfRlJPTV07XG4gICAgY29uc3QgZGF0ZUNvbnRleHRUbyA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9UT107XG5cbiAgICBpZiAodGhpcy5oZWxwZXJTZXJ2aWNlLmlzVmFsaWREYXRlUmFuZ2UoZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvKSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkYXRlQ29udGV4dEZyb20pLCBuZXcgRGF0ZShkYXRlQ29udGV4dFRvKV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyByZWFsdGltZSBxdWVyeSBwYXJhbS5cbiAgICpcbiAgICogQHJldHVybnMgUGFyc2VkIHJlYWx0aW1lIHZhbHVlIG9yIG51bGwuXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUmVhbHRpbWUocmVhbHRpbWU6IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICByZXR1cm4gcmVhbHRpbWUgPT09ICdmYWxzZScgPyBmYWxzZSA6IHJlYWx0aW1lID09PSAndHJ1ZScgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHF1ZXJ5IHBhcmFtcyBvYmplY3QgdG8gcHJvcGVyIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgUXVlcnkgcGFyYW1ldGVycyBvYmplY3Qgd2l0aCBzdHJpbmcgdmFsdWVzIG9ubHkuXG4gICAqXG4gICAqIEByZXR1cm5zIFF1ZXJ5IHBhcmFtcyBvYmplY3Qgb2YgcHJvcGVyIHR5cGUuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NRdWVyeVBhcmFtcyhcbiAgICBwYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcywgc3RyaW5nPlxuICApOiBJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXMge1xuICAgIGNvbnN0IGRhdGVDb250ZXh0UmVhbHRpbWUgPSB0aGlzLnBhcnNlUmVhbHRpbWUocGFyYW1zLmRhdGVDb250ZXh0UmVhbHRpbWUpO1xuICAgIGNvbnN0IGRhdGVDb250ZXh0SW50ZXJ2YWwgPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNTZWxlY3RhYmxlSW50ZXJ2YWwoXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRJbnRlcnZhbCBhcyBJbnRlcnZhbFsnaWQnXVxuICAgIClcbiAgICAgID8gKHBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsIGFzIEludGVydmFsWydpZCddKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVDb250ZXh0QWdncmVnYXRpb24gPSB0aGlzLmhlbHBlclNlcnZpY2UuaXNWYWxpZEFnZ3JlZ2F0aW9uKFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0QWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgKVxuICAgICAgPyAocGFyYW1zLmRhdGVDb250ZXh0QWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlKVxuICAgICAgOiBudWxsO1xuICAgIHJldHVybiB7IC4uLnBhcmFtcywgZGF0ZUNvbnRleHRSZWFsdGltZSwgZGF0ZUNvbnRleHRJbnRlcnZhbCwgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgcHJvdmlkZWQgcXVlcnkgcGFyYW1zIGNvbnRhaW5zIHZhbGlkIHRpbWUgcmFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgUXVlcnkgcGFyYW1ldGVycyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIFRydWUgaWYgcXVlcnkgcGFyYW1zIGNvbnRhaW5zIHZhbGlkIHRpbWUgcmFuZ2UsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHByaXZhdGUgcXVlcnlQYXJhbXNDb250YWluc1RpbWVSYW5nZShwYXJhbXM6IElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGFyYW1zLmRhdGVDb250ZXh0SW50ZXJ2YWwgJiYgIXBhcmFtcy5kYXRlQ29udGV4dEZyb20gJiYgIXBhcmFtcy5kYXRlQ29udGV4dFRvKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGludGVydmFsUHJvdmlkZWQgPSAhIXBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsO1xuICAgIGNvbnN0IGRhdGVSYW5nZVZhbGlkID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzVmFsaWREYXRlUmFuZ2UoXG4gICAgICBwYXJhbXMuZGF0ZUNvbnRleHRGcm9tLFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0VG9cbiAgICApO1xuICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVkIHx8IGRhdGVSYW5nZVZhbGlkO1xuICB9XG59XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lnZXQtdGltZS1jb250ZXh0L3dpZGdldC10aW1lLWNvbnRleHQtcXVlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsMEJBQTBCLEVBSTNCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFNdEYsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGNBQThCLEVBQzlCLGFBQTZDLEVBQzdDLE1BQWM7UUFGZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWdDO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFrRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDNUYsTUFBTSxDQUFDLENBQUMsTUFBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDhCQUE4QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENB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bUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3hELE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLE1BQU0sQ0FBQyxhQUFhLENBQ3JCLENBQUM7UUFDRixPQUFPLGdCQUFnQixJQUFJLGNBQWMsQ0FBQztJQUM1QyxDQUFDOzhHQXBMVSw2QkFBNkI7a0hBQTdCLDZCQUE2QixjQURoQixNQUFNOzsyRkFDbkIsNkJBQTZCO2tCQUR6QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcyxcbiAgSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBPdXRwdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBXaWRnZXRUaW1lQ29udGV4dFN0YXRlXG59IGZyb20gJy4vd2lkZ2V0LXRpbWUtY29udGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRUaW1lQ29udGV4dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVRpbWVDb250ZXh0IH0gZnJvbSAnLi4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBJbnRlcnZhbCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaW50ZXJ2YWwtcGlja2VyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUaW1lQ29udGV4dFF1ZXJ5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgaGVscGVyU2VydmljZTogV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9ic2VydmFibGUgdGhhdCBlbWl0cyBkYXRlIGNvbnRleHQgcXVlcnkgcGFyYW1zIGV2ZXJ5IHRpbWUgcXVlcnkgcGFyYW1zIGNoYW5nZS5cbiAgICogSW52YWxpZCB2YWx1ZXMgYXJlIGZpbHRlcmVkIG91dC5cbiAgICpcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBkYXRlIGNvbnRleHQgcXVlcnkgcGFyYW1zLlxuICAgKi9cbiAgcXVlcnlQYXJhbXNDaGFuZ2UkKCk6IE9ic2VydmFibGU8SW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMucGlwZShcbiAgICAgIG1hcCgocGFyYW1zOiBSZWNvcmQ8RGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMsIHN0cmluZz4pID0+IHRoaXMucHJvY2Vzc1F1ZXJ5UGFyYW1zKHBhcmFtcykpLFxuICAgICAgZmlsdGVyKChwYXJhbXM6IElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcykgPT4gdGhpcy5xdWVyeVBhcmFtc0NvbnRhaW5zVGltZVJhbmdlKHBhcmFtcykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHdpZGdldCB0aW1lIGNvbnRleHQgZnJvbSBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgKiBJbnRlcnZhbCBkYXRhIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBkYXRlIHRpbWUgY29udGV4dCBkZXNjcmliZWQgYnkgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIsXG4gICAqIHNvIGlmIHZhbGlkIGludGVydmFsIGlzIHByb3ZpZGVkLCBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIiBhcmUgaWdub3JlZCwgYW5kIHRoZXkgYXJlIHJlY2FsY3VsYXRlZFxuICAgKiB3aXRoIGludGVydmFsLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaWRnZXQgdGltZSBjb250ZXh0IHN0YXRlIGJhc2VkIG9uIGN1cnJlbnQgcXVlcnkgcGFyYW1zIG9yIG51bGwgaWYgcXVlcnkgcGFyYW1zIHByb3ZpZGUgbm8gdmFsaWQgY29udGV4dC5cbiAgICovXG4gIGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcygpOiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlIHwgbnVsbCB7XG4gICAgY29uc3QgcmVhbHRpbWUgPSB0aGlzLnBhcnNlUmVhbHRpbWUoXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9SRUFMVElNRV1cbiAgICApO1xuICAgIC8vIHRyeWluZyB0byBnZXQgZGF0ZSBjb250ZXh0IGZyb20gcXVlcnkgcGFyYW1zIGJ5IGludGVydmFsIGZpcnN0XG4gICAgY29uc3QgZGF0ZUNvbnRleHRJbnRlcnZhbCA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbU5hbWVzLkRBVEVfQ09OVEVYVF9JTlRFUlZBTF07XG4gICAgY29uc3QgYWdncmVnYXRpb24gPVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfQUdHUkVHQVRJT05dO1xuICAgIGNvbnN0IGlzVmFsaWRJbnRlcnZhbCA9IHRoaXMuaGVscGVyU2VydmljZS5pc1NlbGVjdGFibGVJbnRlcnZhbChkYXRlQ29udGV4dEludGVydmFsKTtcbiAgICBpZiAoaXNWYWxpZEludGVydmFsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChkYXRlQ29udGV4dEludGVydmFsKSxcbiAgICAgICAgaW50ZXJ2YWw6IGRhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBpZiBkYXRlIGNvbnRleHQgYnkgaW50ZXJ2YWwgaXMgbm90IHByb3ZpZGVkLCB0cnkgZ2V0dGluZyBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIiBmcm9tIHF1ZXJ5IHBhcmFtc1xuICAgIGNvbnN0IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcyA9IHRoaXMuZ2V0RGF0ZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICBpZiAoZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiBkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMsXG4gICAgICAgIGludGVydmFsOiAnY3VzdG9tJyxcbiAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHF1ZXJ5IHBhcmFtZXRlcnMgcmVsYXRlZCB0byBkYXRlIHRpbWUgY29udGV4dC5cbiAgICogVmFsaWQgaW50ZXJ2YWwgKGFuZCBvdGhlciB0aGFuICdjdXN0b20nKSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgY29udGV4dCBkZXNjcmliZWQgYnkgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIuXG4gICAqIEludGVydmFsIGFuZCBjb250ZXh0IGRlc2NyaWJlZCBieSBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIiBleGNsdWRlIGVhY2ggb3RoZXIuXG4gICAqXG4gICAqIEBwYXJhbSB3aWRnZXRUaW1lQ29udGV4dFN0YXRlIFdpZGdldCB0aW1lIGNvbnRleHQgc3RhdGUuXG4gICAqL1xuICBzZXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zKHtcbiAgICBpbnRlcnZhbCxcbiAgICBkYXRlLFxuICAgIHJlYWx0aW1lLFxuICAgIGFnZ3JlZ2F0aW9uXG4gIH06IFdpZGdldFRpbWVDb250ZXh0U3RhdGUpOiB2b2lkIHtcbiAgICBsZXQgcXVlcnlQYXJhbXM6IE91dHB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXM7XG4gICAgaWYgKGludGVydmFsICYmIGludGVydmFsICE9PSAnY3VzdG9tJykge1xuICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgIGRhdGVDb250ZXh0SW50ZXJ2YWw6IGludGVydmFsLFxuICAgICAgICBkYXRlQ29udGV4dFJlYWx0aW1lOiByZWFsdGltZSxcbiAgICAgICAgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbjogYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICBkYXRlQ29udGV4dEZyb206IGRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZGF0ZUNvbnRleHRUbzogZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICBkYXRlQ29udGV4dFJlYWx0aW1lOiByZWFsdGltZSxcbiAgICAgICAgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvbjogYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBkYXRlIHRpbWUgY29udGV4dCByZWxhdGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqL1xuICBjbGVhclF1ZXJ5UGFyYW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsZWFyaW5nUXVlcnlQYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcywgbnVsbD4gPSB7XG4gICAgICBkYXRlQ29udGV4dEZyb206IG51bGwsXG4gICAgICBkYXRlQ29udGV4dFRvOiBudWxsLFxuICAgICAgZGF0ZUNvbnRleHRJbnRlcnZhbDogbnVsbCxcbiAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWU6IG51bGwsXG4gICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uOiBudWxsXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjbGVhcmluZ1F1ZXJ5UGFyYW1zLFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhbmQgdmFsaWRhdGVzIGRhdGUgY29udGV4dCBmcm9tIHF1ZXJ5IHBhcmFtcyBkZXNjcmliZWQgYnkgZGF0ZSBcImZyb21cIiBhbmQgZGF0ZSBcInRvXCIuXG4gICAqXG4gICAqIEByZXR1cm5zIERhdGUgY29udGV4dCBhcyB0dXBsZSBvZiBkYXRlIFwiZnJvbVwiIGFuZCBkYXRlIFwidG9cIiwgb3IgbnVsbCBpZiBkYXRlIGNvbnRleHQgaXMgaW52YWxpZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0ZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMoKTogRGF0ZVRpbWVDb250ZXh0IHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRGcm9tID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMuREFURV9DT05URVhUX0ZST01dO1xuICAgIGNvbnN0IGRhdGVDb250ZXh0VG8gPVxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tEYXRlQ29udGV4dFF1ZXJ5UGFyYW1OYW1lcy5EQVRFX0NPTlRFWFRfVE9dO1xuXG4gICAgaWYgKHRoaXMuaGVscGVyU2VydmljZS5pc1ZhbGlkRGF0ZVJhbmdlKGRhdGVDb250ZXh0RnJvbSwgZGF0ZUNvbnRleHRUbykpIHtcbiAgICAgIHJldHVybiBbbmV3IERhdGUoZGF0ZUNvbnRleHRGcm9tKSwgbmV3IERhdGUoZGF0ZUNvbnRleHRUbyldO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgcmVhbHRpbWUgcXVlcnkgcGFyYW0uXG4gICAqXG4gICAqIEByZXR1cm5zIFBhcnNlZCByZWFsdGltZSB2YWx1ZSBvciBudWxsLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVJlYWx0aW1lKHJlYWx0aW1lOiBzdHJpbmcpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlYWx0aW1lID09PSAnZmFsc2UnID8gZmFsc2UgOiByZWFsdGltZSA9PT0gJ3RydWUnID8gdHJ1ZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBxdWVyeSBwYXJhbXMgb2JqZWN0IHRvIHByb3BlciB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnMgb2JqZWN0IHdpdGggc3RyaW5nIHZhbHVlcyBvbmx5LlxuICAgKlxuICAgKiBAcmV0dXJucyBRdWVyeSBwYXJhbXMgb2JqZWN0IG9mIHByb3BlciB0eXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzUXVlcnlQYXJhbXMoXG4gICAgcGFyYW1zOiBSZWNvcmQ8RGF0ZUNvbnRleHRRdWVyeVBhcmFtTmFtZXMsIHN0cmluZz5cbiAgKTogSW5wdXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zIHtcbiAgICBjb25zdCBkYXRlQ29udGV4dFJlYWx0aW1lID0gdGhpcy5wYXJzZVJlYWx0aW1lKHBhcmFtcy5kYXRlQ29udGV4dFJlYWx0aW1lKTtcbiAgICBjb25zdCBkYXRlQ29udGV4dEludGVydmFsID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzU2VsZWN0YWJsZUludGVydmFsKFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0SW50ZXJ2YWwgYXMgSW50ZXJ2YWxbJ2lkJ11cbiAgICApXG4gICAgICA/IChwYXJhbXMuZGF0ZUNvbnRleHRJbnRlcnZhbCBhcyBJbnRlcnZhbFsnaWQnXSlcbiAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmlzVmFsaWRBZ2dyZWdhdGlvbihcbiAgICAgIHBhcmFtcy5kYXRlQ29udGV4dEFnZ3JlZ2F0aW9uIGFzIGFnZ3JlZ2F0aW9uVHlwZVxuICAgIClcbiAgICAgID8gKHBhcmFtcy5kYXRlQ29udGV4dEFnZ3JlZ2F0aW9uIGFzIGFnZ3JlZ2F0aW9uVHlwZSlcbiAgICAgIDogbnVsbDtcbiAgICByZXR1cm4geyAuLi5wYXJhbXMsIGRhdGVDb250ZXh0UmVhbHRpbWUsIGRhdGVDb250ZXh0SW50ZXJ2YWwsIGRhdGVDb250ZXh0QWdncmVnYXRpb24gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtcyBjb250YWlucyB2YWxpZCB0aW1lIHJhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnMgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHF1ZXJ5IHBhcmFtcyBjb250YWlucyB2YWxpZCB0aW1lIHJhbmdlLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBwcml2YXRlIHF1ZXJ5UGFyYW1zQ29udGFpbnNUaW1lUmFuZ2UocGFyYW1zOiBJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAoIXBhcmFtcy5kYXRlQ29udGV4dEludGVydmFsICYmICFwYXJhbXMuZGF0ZUNvbnRleHRGcm9tICYmICFwYXJhbXMuZGF0ZUNvbnRleHRUbykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcnZhbFByb3ZpZGVkID0gISFwYXJhbXMuZGF0ZUNvbnRleHRJbnRlcnZhbDtcbiAgICBjb25zdCBkYXRlUmFuZ2VWYWxpZCA9IHRoaXMuaGVscGVyU2VydmljZS5pc1ZhbGlkRGF0ZVJhbmdlKFxuICAgICAgcGFyYW1zLmRhdGVDb250ZXh0RnJvbSxcbiAgICAgIHBhcmFtcy5kYXRlQ29udGV4dFRvXG4gICAgKTtcbiAgICByZXR1cm4gaW50ZXJ2YWxQcm92aWRlZCB8fCBkYXRlUmFuZ2VWYWxpZDtcbiAgfVxufVxuIl19
@@ -6,13 +6,14 @@ import { WidgetsDashboardEventService } from '../widgets-dashboard-event.service
6
6
  import { FormBuilder } from '@angular/forms';
7
7
  import { gettext } from '../../i18n';
8
8
  import { filter, takeUntil } from 'rxjs/operators';
9
- import { AGGREGATION_LIMITS, INTERVAL_TITLES, TimeSpanInMs } from './widget-time-context.model';
9
+ import { AGGREGATION_LIMITS } from './widget-time-context.model';
10
10
  import { WidgetTimeContextQueryService } from './widget-time-context-query.service';
11
11
  import { WidgetTimeContextHelperService } from './widget-time-context-helper.service';
12
12
  import { ActivationEnd, NavigationEnd, NavigationStart, Router } from '@angular/router';
13
13
  import { ActionBarService } from '../../action-bar';
14
14
  import { aggregationType } from '@c8y/client';
15
15
  import { BsDropdownDirective } from 'ngx-bootstrap/dropdown';
16
+ import { INTERVAL_TITLES, TimeSpanInMs } from '@c8y/ngx-components/interval-picker';
16
17
  import * as i0 from "@angular/core";
17
18
  import * as i1 from "../widgets-dashboard-event.service";
18
19
  import * as i2 from "../dashboard-child.component";
@@ -31,8 +32,8 @@ import * as i14 from "../../forms/form-group.component";
31
32
  import * as i15 from "../../forms/message.directive";
32
33
  import * as i16 from "../../forms/messages.component";
33
34
  import * as i17 from "../../date-time-picker/date-time-picker.component";
34
- import * as i18 from "../dashboard-child-action.component";
35
- import * as i19 from "./interval-picker/interval-picker.component";
35
+ import * as i18 from "@c8y/ngx-components/interval-picker";
36
+ import * as i19 from "../dashboard-child-action.component";
36
37
  import * as i20 from "./realtime-control/realtime-control.component";
37
38
  import * as i21 from "./aggregation-picker/aggregation-picker.component";
38
39
  import * as i22 from "../../i18n/c8y-translate.pipe";
@@ -431,7 +432,7 @@ export class WidgetTimeContextComponent {
431
432
  }
432
433
  }
433
434
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: WidgetTimeContextComponent, deps: [{ token: i1.WidgetsDashboardEventService }, { token: i2.DashboardChildComponent }, { token: i3.FormBuilder }, { token: i4.WidgetTimeContextQueryService }, { token: i5.WidgetTimeContextHelperService }, { token: i6.Router }, { token: i7.ActionBarService }], target: i0.ɵɵFactoryTarget.Component }); }
434
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple", displaySettings: "displaySettings", hidden: "hidden" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n \n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4 \"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span class=\"text-12\" data-cy=\"widget-time-context--selected-interval\">\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n class=\"form-control p-0 flex-no-grow w-auto\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i11.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i12.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i12.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i12.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i13.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i14.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i15.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i16.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i17.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "component", type: i18.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: i19.IntervalPickerComponent, selector: "c8y-interval-picker" }, { kind: "component", type: i20.RealtimeControlComponent, selector: "c8y-realtime-control" }, { kind: "component", type: i21.AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations"] }, { kind: "pipe", type: i22.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i23.DatePipe, name: "c8yDate" }] }); }
435
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple", displaySettings: "displaySettings", hidden: "hidden" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n \n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4 \"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span class=\"text-12\" data-cy=\"widget-time-context--selected-interval\">\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n class=\"form-control p-0 flex-no-grow w-auto\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: i8.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i9.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i11.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i12.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i12.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i12.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i13.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i14.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i15.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i16.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i17.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "component", type: i18.IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS"] }, { kind: "component", type: i19.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: i20.RealtimeControlComponent, selector: "c8y-realtime-control" }, { kind: "component", type: i21.AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations"] }, { kind: "pipe", type: i22.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i23.DatePipe, name: "c8yDate" }] }); }
435
436
  }
436
437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: WidgetTimeContextComponent, decorators: [{
437
438
  type: Component,
@@ -451,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
451
452
  type: ViewChild,
452
453
  args: [BsDropdownDirective]
453
454
  }] } });
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsa0JBQWtCLEVBR2xCLGVBQWUsRUFDZixZQUFZLEVBSWIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJB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QUFpQjtzQkFEaEIsTUFBTTtnQkFLbUMsTUFBTTtzQkFBL0MsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBQ1IsUUFBUTtzQkFBdkMsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgfSBmcm9tICcuLi9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldHNEYXNoYm9hcmRFdmVudFNlcnZpY2UgfSBmcm9tICcuLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCwgVGltZUNvbnRleHRFdmVudCwgV2lkZ2V0VGltZUNvbnRleHQgfSBmcm9tICcuLi93aWRnZXQtY2hhbmdlLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBR0dSRUdBVElPTl9MSU1JVFMsXG4gIElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyxcbiAgSW50ZXJ2YWwsXG4gIElOVEVSVkFMX1RJVExFUyxcbiAgVGltZVNwYW5Jbk1zLFxuICBXaWRnZXREaXNwbGF5U2V0dGluZ3MsXG4gIFdpZGdldFRpbWVDb250ZXh0Q2hhbmdlLFxuICBXaWRnZXRUaW1lQ29udGV4dFN0YXRlXG59IGZyb20gJy4vd2lkZ2V0LXRpbWUtY29udGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRUaW1lQ29udGV4dFF1ZXJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXRpbWUtY29udGV4dC1xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFRpbWVDb250ZXh0SGVscGVyU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXRpbWUtY29udGV4dC1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0aW9uRW5kLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBY3Rpb25CYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWN0aW9uLWJhcic7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS13aWRnZXQtdGltZS1jb250ZXh0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTQnIH1cbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHJlYWRvbmx5IElOVEVSVkFMX1RJVExFUyA9IElOVEVSVkFMX1RJVExFUztcbiAgcmVhZG9ubHkgREFURV9GT1JNQVQgPSAnc2hvcnQnO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgY2FuIGRlY291cGxlIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNhbkRlY291cGxlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBkaXNwbGF5U2V0dGluZ3M6IFdpZGdldERpc3BsYXlTZXR0aW5ncztcblxuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgZWFjaCBjaGFuZ2UgYXMgYW4gYXJyYXkgb2YgZGF0ZXMgW2Zyb20sIHRvXS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkYXRlQ29udGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0VGltZUNvbnRleHRDaGFuZ2U+KCk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50KSBhY3Rpb246IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKEJzRHJvcGRvd25EaXJlY3RpdmUpIGRyb3Bkb3duOiBCc0Ryb3Bkb3duRGlyZWN0aXZlO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0aW1lIGNvbnRleHQgaXMgYm91bmQgdG8gdGhlIGdsb2JhbCBzY29wZS5cbiAgICovXG4gIGlzQ291cGxlZCA9IHRydWU7XG4gIGRlY291cGxlVGltZUNvbnRleHRMYWJlbCA9IGdldHRleHQoJ0RlY291cGxlIHRpbWUgY29udGV4dCcpO1xuICBjb3VwbGVUaW1lQ29udGV4dExhYmVsID0gZ2V0dGV4dCgnQ291cGxlIHRpbWUgY29udGV4dCcpO1xuICBmb3JtOiBSZXR1cm5UeXBlPFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50WydjcmVhdGVGb3JtJ10+O1xuICBhY3Rpb25CYXJJbkdyb3VwUHJpb3JpdHk6IG51bWJlcjtcbiAgZGlzYWJsZWRBZ2dyZWdhdGlvbnM6IFBhcnRpYWw8UmVjb3JkPGFnZ3JlZ2F0aW9uVHlwZSwgYm9vbGVhbj4+ID0ge307XG4gIHJlYWRvbmx5IERFRkFVTFRfSU5URVJWQUw6IEludGVydmFsWydpZCddID0gJ2RheXMnO1xuICByZWFkb25seSBBQ1RJT05fQkFSX0dST1VQX0lEID0gJ3RpbWVjb250ZXh0JztcbiAgcmVhZG9ubHkgUkVBTFRJTUVfSU5URVJWQUwgPSAxMDAwO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFsdGltZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHdpZGdldEV2ZW50U2VydmljZTogV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHF1ZXJ5U2VydmljZTogV2lkZ2V0VGltZUNvbnRleHRRdWVyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoZWxwZXJTZXJ2aWNlOiBXaWRnZXRUaW1lQ29udGV4dEhlbHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGlvbkJhclNlcnZpY2U6IEFjdGlvbkJhclNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAaWdub3JlIFN1YnNjcmliaW5nIHRvIHRoZSBnbG9iYWwgY29udGV4dC5cbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uQmFySW5Hcm91cFByaW9yaXR5ID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmdldEFjdGlvbkJhclByaW9yaXR5KHRoaXMuZGlzcGxheVNldHRpbmdzKTtcblxuICAgIGNvbnN0IGluaXRpYWxDb250ZXh0OiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlID1cbiAgICAgIHRoaXMuZ2V0SW5pdGlhbENvbnRleHQoKSB8fCB0aGlzLmdldERlZmF1bHRDb250ZXh0KCk7XG4gICAgaW5pdGlhbENvbnRleHQuYWdncmVnYXRpb24gPSB0aGlzLmNhbGN1bGF0ZUFnZ3JlZ2F0aW9uKFxuICAgICAgaW5pdGlhbENvbnRleHQuZGF0ZSxcbiAgICAgIGluaXRpYWxDb250ZXh0LmFnZ3JlZ2F0aW9uXG4gICAgKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmNyZWF0ZUZvcm0oaW5pdGlhbENvbnRleHQpO1xuXG4gICAgdGhpcy5kYXRlQ29udGV4dENoYW5nZS5lbWl0KHtcbiAgICAgIGRhdGU6IGluaXRpYWxDb250ZXh0LmRhdGUsXG4gICAgICByZWFsdGltZTogaW5pdGlhbENvbnRleHQucmVhbHRpbWUsXG4gICAgICBhZ2dyZWdhdGlvbjogaW5pdGlhbENvbnRleHQuYWdncmVnYXRpb25cbiAgICB9KTtcbiAgICBpZiAodGhpcy5pc0NvdXBsZWQpIHtcbiAgICAgIHRoaXMucXVlcnlTZXJ2aWNlLnNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoaW5pdGlhbENvbnRleHQpO1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmliZVRvR2xvYmFsQ29udGV4dCgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVBhcmFtc0NoYW5nZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZXJFdmVudHMoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvSW50ZXJ2YWxDaGFuZ2UoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUmVhbHRpbWVDaGFuZ2UoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvQWdncmVnYXRpb25DaGFuZ2UoKTtcblxuICAgIGlmIChpbml0aWFsQ29udGV4dC5yZWFsdGltZSkge1xuICAgICAgdGhpcy5vblJlYWx0aW1lVmFsdWVDaGFuZ2UoaW5pdGlhbENvbnRleHQucmVhbHRpbWUpO1xuICAgICAgdGhpcy5zdGFydFJlYWx0aW1lKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgQWRkaW5nIGN1c3RvbSBhY3Rpb25zLlxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkRlY291cGxlKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZENoaWxkLmFkZEFjdGlvbnMoW3RoaXMuYWN0aW9uXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGNvdXBsaW5nIG9uIG9yIG9mZi5cbiAgICovXG4gIHRvZ2dsZURlY291cGxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5pc0NvdXBsZWQgPSAhdGhpcy5pc0NvdXBsZWQ7XG4gICAgY29uc3QgbGFzdEV2ZW50VmFsdWUgPSB0aGlzLndpZGdldEV2ZW50U2VydmljZS5nZXRMYXN0VmFsdWUoJ1RJTUVfQ09OVEVYVCcpO1xuICAgIGNvbnN0IHsgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uLCBpbnRlcnZhbCB9ID0gbGFzdEV2ZW50VmFsdWU7XG4gICAgbGV0IGRhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgICBpZiAoaW50ZXJ2YWwpIHtcbiAgICAgIGRhdGUgPSB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBsYXN0RXZlbnRWYWx1ZS5kYXRlVGltZUNvbnRleHQ7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh7IGRhdGUsIGludGVydmFsLCByZWFsdGltZSwgYWdncmVnYXRpb24gfSk7XG5cbiAgICBpZiAodGhpcy5pc0NvdXBsZWQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCk7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoeyBkYXRlLCByZWFsdGltZSwgYWdncmVnYXRpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGZvcm0gdmFsdWUgdG8gZ2xvYmFsIG9yIGxvY2FsIGRhdGUgY29udGV4dC5cbiAgICovXG4gIGFwcGx5RGF0ZXRpbWVDb250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlKHtcbiAgICAgIGRhdGU6IFtcbiAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlKSxcbiAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZSlcbiAgICAgIF0sXG4gICAgICBpbnRlcnZhbDogbnVsbCxcbiAgICAgIHJlYWx0aW1lOiB0aGlzLmZvcm0udmFsdWUucmVhbHRpbWUsXG4gICAgICBhZ2dyZWdhdGlvbjogdGhpcy5mb3JtLnZhbHVlLmFnZ3JlZ2F0aW9uXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGZvcm0gdG8gaW5pdGlhbCB2YWx1ZSBhbmQgdXBkYXRlIGNvbnRleHQuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgIHRoaXMudXBkYXRlKHRoaXMuZ2V0RGVmYXVsdENvbnRleHQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZSB1bnN1YnNjcmliaW5nLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb21HbG9iYWxDb250ZXh0KCk7XG4gICAgdGhpcy5jbGVhclF1ZXJ5UGFyYW1zSWZOZWVkZWQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvSW50ZXJ2YWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpbnRlcnZhbCA9PiB7XG4gICAgICAgIGxldCBkYXRlOiBEYXRlVGltZUNvbnRleHQ7XG4gICAgICAgIGlmIChpbnRlcnZhbCA9PT0gJ2N1c3RvbScpIHtcbiAgICAgICAgICBkYXRlID0gW1xuICAgICAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLmNvbnRyb2xzLmN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlLnZhbHVlKSxcbiAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGUudmFsdWUpXG4gICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRlID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgIHRoaXMuZHJvcGRvd24uaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGUoe1xuICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgaW50ZXJ2YWwsXG4gICAgICAgICAgcmVhbHRpbWU6IHRoaXMuZm9ybS52YWx1ZS5yZWFsdGltZSxcbiAgICAgICAgICBhZ2dyZWdhdGlvbjogdGhpcy5mb3JtLnZhbHVlLmFnZ3JlZ2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUmVhbHRpbWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnJlYWx0aW1lLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHJlYWx0aW1lID0+IHtcbiAgICAgIHRoaXMub25SZWFsdGltZVZhbHVlQ2hhbmdlKHJlYWx0aW1lKTtcblxuICAgICAgaWYgKHJlYWx0aW1lKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZWFsdGltZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9BZ2dyZWdhdGlvbkNoYW5nZSgpIHtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMuYWdncmVnYXRpb24udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGFnZ3JlZ2F0aW9uID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGUoe1xuICAgICAgICAgIGRhdGU6IFtcbiAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSksXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0VG9EYXRlKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW50ZXJ2YWw6IHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgICAgICByZWFsdGltZTogdGhpcy5mb3JtLnZhbHVlLnJlYWx0aW1lLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oY29udGV4dDogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlOiBjb250ZXh0LmRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZTogY29udGV4dC5kYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICBjdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZTogY29udGV4dC5kYXRlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICBjdXJyZW50RGF0ZUNvbnRleHRUb0RhdGU6IGNvbnRleHQuZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWw6IGNvbnRleHQuaW50ZXJ2YWwgfHwgJ2N1c3RvbScsXG4gICAgICByZWFsdGltZTogY29udGV4dC5yZWFsdGltZSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiBjb250ZXh0LmFnZ3JlZ2F0aW9uXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgYSBuZXcgV2lkZ2V0Q2hhbmdlRXZlbnQgZWl0aGVyIG9uIHRoZSBsb2NhbCBjaGFuZ2UgZW1pdHRlciBvciBvbiB0aGUgZ2xvYmFsIG9uZS5cbiAgICogQHBhcmFtIHdpZGdldFRpbWVDb250ZXh0U3RhdGUgTmV3IHdpZGdldCB0aW1lIGNvbnRleHQgdmFsdWUuKi9cbiAgcHJpdmF0ZSB1cGRhdGUoeyBkYXRlLCBpbnRlcnZhbCwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uIH06IFdpZGdldFRpbWVDb250ZXh0U3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZEFnZ3JlZ2F0aW9uID0gdGhpcy5jYWxjdWxhdGVBZ2dyZWdhdGlvbihkYXRlLCBhZ2dyZWdhdGlvbik7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICBjb25zdCBldmVudERhdGE6IFdpZGdldFRpbWVDb250ZXh0ID1cbiAgICAgICAgaW50ZXJ2YWwgJiYgaW50ZXJ2YWwgIT09ICdjdXN0b20nXG4gICAgICAgICAgPyB7IGludGVydmFsLCByZWFsdGltZSwgYWdncmVnYXRpb246IHZhbGlkQWdncmVnYXRpb24gfVxuICAgICAgICAgIDogeyBkYXRlVGltZUNvbnRleHQ6IGRhdGUsIHJlYWx0aW1lLCBhZ2dyZWdhdGlvbjogdmFsaWRBZ2dyZWdhdGlvbiB9O1xuICAgICAgdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZW1pdCh7IHR5cGU6ICdUSU1FX0NPTlRFWFQnLCBkYXRhOiBldmVudERhdGEgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh7IGRhdGUsIGludGVydmFsLCByZWFsdGltZSwgYWdncmVnYXRpb246IHZhbGlkQWdncmVnYXRpb24gfSk7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoeyBkYXRlLCByZWFsdGltZSwgYWdncmVnYXRpb246IHZhbGlkQWdncmVnYXRpb24gfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0dsb2JhbENvbnRleHQoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQkID0gdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZ2V0T2JzZXJ2YWJsZTxUaW1lQ29udGV4dEV2ZW50PignVElNRV9DT05URVhUJyk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBldmVudCQuc3Vic2NyaWJlKChjb250ZXh0OiBXaWRnZXRUaW1lQ29udGV4dCkgPT4ge1xuICAgICAgbGV0IGRhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgICAgIGNvbnN0IHsgcmVhbHRpbWUsIGludGVydmFsLCBhZ2dyZWdhdGlvbiB9ID0gY29udGV4dDtcbiAgICAgIGlmIChpbnRlcnZhbCkge1xuICAgICAgICBkYXRlID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoY29udGV4dC5pbnRlcnZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlID0gY29udGV4dC5kYXRlVGltZUNvbnRleHQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0ZUNvbnRleHRDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGRhdGUsXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZXMoeyBkYXRlLCBpbnRlcnZhbCwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uIH0pO1xuICAgICAgdGhpcy5xdWVyeVNlcnZpY2Uuc2V0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyh7IGludGVydmFsLCBkYXRlLCByZWFsdGltZSwgYWdncmVnYXRpb24gfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvcm1WYWx1ZXMoe1xuICAgIGRhdGUsXG4gICAgaW50ZXJ2YWwsXG4gICAgcmVhbHRpbWUsXG4gICAgYWdncmVnYXRpb25cbiAgfTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZTogZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGU6IGRhdGVbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudERhdGVDb250ZXh0RnJvbURhdGU6IGRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudERhdGVDb250ZXh0VG9EYXRlOiBkYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogaW50ZXJ2YWwgfHwgJ2N1c3RvbScsXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiBhZ2dyZWdhdGlvbiB8fCBudWxsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsQ29udGV4dCgpOiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlIHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVNlcnZpY2UuZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zKCk7XG4gICAgaWYgKGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zLFxuICAgICAgICByZWFsdGltZTogZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zLnJlYWx0aW1lID8/IGZhbHNlLFxuICAgICAgICBhZ2dyZWdhdGlvbjogZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zLnJlYWx0aW1lXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiBkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMuYWdncmVnYXRpb24gfHwgbnVsbFxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gbGFzdCB2YWx1ZSBvZiBldmVudHMgc2VydmljZVxuICAgIGNvbnN0IGxhc3RFdmVudFZhbHVlID0gdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZ2V0TGFzdFZhbHVlKCdUSU1FX0NPTlRFWFQnKTtcbiAgICBjb25zdCByZWFsdGltZSA9IGxhc3RFdmVudFZhbHVlPy5yZWFsdGltZSA/PyBmYWxzZTtcbiAgICBpZiAobGFzdEV2ZW50VmFsdWUgJiYgbGFzdEV2ZW50VmFsdWUuZGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiBsYXN0RXZlbnRWYWx1ZS5kYXRlVGltZUNvbnRleHQsXG4gICAgICAgIGludGVydmFsOiAnY3VzdG9tJyxcbiAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiByZWFsdGltZSA/IG51bGwgOiBsYXN0RXZlbnRWYWx1ZS5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGxhc3RFdmVudFZhbHVlICYmIGxhc3RFdmVudFZhbHVlLmludGVydmFsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChsYXN0RXZlbnRWYWx1ZS5pbnRlcnZhbCksXG4gICAgICAgIGludGVydmFsOiBsYXN0RXZlbnRWYWx1ZS5pbnRlcnZhbCxcbiAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiByZWFsdGltZSA/IG51bGwgOiBsYXN0RXZlbnRWYWx1ZS5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9RdWVyeVBhcmFtc0NoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZVxuICAgICAgLnF1ZXJ5UGFyYW1zQ2hhbmdlJCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoe1xuICAgICAgICAgIGRhdGVDb250ZXh0RnJvbSxcbiAgICAgICAgICBkYXRlQ29udGV4dFRvLFxuICAgICAgICAgIGRhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICAgICAgZGF0ZUNvbnRleHRSZWFsdGltZSxcbiAgICAgICAgICBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uXG4gICAgICAgIH06IElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlYWx0aW1lID0gZGF0ZUNvbnRleHRSZWFsdGltZSA/PyB0aGlzLmZvcm0udmFsdWUucmVhbHRpbWU7XG4gICAgICAgICAgaWYgKGRhdGVDb250ZXh0SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmVtaXQoe1xuICAgICAgICAgICAgICB0eXBlOiAnVElNRV9DT05URVhUJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGludGVydmFsOiBkYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgICAgICAgICAgIHJlYWx0aW1lLFxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQ29udGV4dDogRGF0ZVRpbWVDb250ZXh0ID0gW1xuICAgICAgICAgICAgICBuZXcgRGF0ZShkYXRlQ29udGV4dEZyb20pLFxuICAgICAgICAgICAgICBuZXcgRGF0ZShkYXRlQ29udGV4dFRvKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmVtaXQoe1xuICAgICAgICAgICAgICB0eXBlOiAnVElNRV9DT05URVhUJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGRhdGVUaW1lQ29udGV4dDogZGF0ZUNvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVhbHRpbWUsXG4gICAgICAgICAgICAgICAgYWdncmVnYXRpb246IGRhdGVDb250ZXh0QWdncmVnYXRpb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclF1ZXJ5UGFyYW1zSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgLy8gSWYgbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzcywgcm91dGVyIHdpbGwgdGFrZSBjYXJlIG9mIGNsZWFyaW5nIHF1ZXJ5IHBhcmFtcy4gVGhpcyB3YXkgd2UgYXZvaWQgdW5uZWNlc3NhcnkgbWFuaXB1bGF0aW9uIG9mIGJyb3dzZXIgaGlzdG9yeVxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGNoZWNrIGlmIGFueSBvdGhlciBXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudCBhY3Rpb24gaW4gYWN0aW9uIGJhciBleGlzdHNcbiAgICBjb25zdCBhbnlXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkxlZnQgPSBBcnJheS5mcm9tKHRoaXMuYWN0aW9uQmFyU2VydmljZS5zdGF0ZSkuc29tZShcbiAgICAgIGFjdGlvbiA9PiBhY3Rpb24uZ3JvdXBJZCA9PT0gdGhpcy5BQ1RJT05fQkFSX0dST1VQX0lEXG4gICAgKTtcbiAgICBpZiAoIWFueVdpZGdldFRpbWVDb250ZXh0QWN0aW9uTGVmdCkge1xuICAgICAgdGhpcy5xdWVyeVNlcnZpY2UuY2xlYXJRdWVyeVBhcmFtcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Sb3V0ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmRcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzID0gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q29udGV4dCgpOiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZTogdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwodGhpcy5ERUZBVUxUX0lOVEVSVkFMKSxcbiAgICAgIGludGVydmFsOiB0aGlzLkRFRkFVTFRfSU5URVJWQUwsXG4gICAgICByZWFsdGltZTogZmFsc2UsXG4gICAgICBhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25UeXBlLk1JTlVURUxZXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRSZWFsdGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZGlzYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGUuZGlzYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5hZ2dyZWdhdGlvbi5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy5SRUFMVElNRV9JTlRFUlZBTClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdEYXRlRnJvbSA9IG5ldyBEYXRlKFxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSkudmFsdWVPZigpICsgdGhpcy5SRUFMVElNRV9JTlRFUlZBTFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXdEYXRlVG8gPSBuZXcgRGF0ZShcbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0VG9EYXRlKS52YWx1ZU9mKCkgKyB0aGlzLlJFQUxUSU1FX0lOVEVSVkFMXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh7XG4gICAgICAgICAgZGF0ZTogW25ld0RhdGVGcm9tLCBuZXdEYXRlVG9dLFxuICAgICAgICAgIGludGVydmFsOiB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICAgICAgcmVhbHRpbWU6IHRydWUsXG4gICAgICAgICAgYWdncmVnYXRpb246IG51bGxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFJlYWx0aW1lKCk6IHZvaWQge1xuICAgIHRoaXMucmVhbHRpbWVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5mb3JtPy5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZS5lbmFibGUoKTtcbiAgICB0aGlzLmZvcm0/LmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZS5lbmFibGUoKTtcbiAgICB0aGlzLmZvcm0/LmNvbnRyb2xzLmFnZ3JlZ2F0aW9uLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblJlYWx0aW1lVmFsdWVDaGFuZ2UocmVhbHRpbWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBsZXQgZGF0ZVRpbWVDb250ZXh0OiBEYXRlVGltZUNvbnRleHQ7XG4gICAgaWYgKHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCAhPT0gJ2N1c3RvbScpIHtcbiAgICAgIGRhdGVUaW1lQ29udGV4dCA9IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKFxuICAgICAgICB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lU3BhbkluTXMgPVxuICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0VG9EYXRlKS52YWx1ZU9mKCkgLVxuICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBkYXRlRnJvbSA9IG5ldyBEYXRlKGRhdGVUby52YWx1ZU9mKCkgLSBjdXJyZW50VGltZVNwYW5Jbk1zKTtcbiAgICAgIGRhdGVUaW1lQ29udGV4dCA9IFtkYXRlRnJvbSwgZGF0ZVRvXTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZSh7XG4gICAgICBkYXRlOiBkYXRlVGltZUNvbnRleHQsXG4gICAgICBpbnRlcnZhbDogdGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgcmVhbHRpbWUsXG4gICAgICBhZ2dyZWdhdGlvbjogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBZ2dyZWdhdGlvbihcbiAgICBbZGF0ZUZyb20sIGRhdGVUb106IERhdGVUaW1lQ29udGV4dCxcbiAgICBhZ2dyZWdhdGlvbjogYWdncmVnYXRpb25UeXBlXG4gICk6IGFnZ3JlZ2F0aW9uVHlwZSB7XG4gICAgY29uc3QgdGltZVJhbmdlSW5NcyA9IGRhdGVUby52YWx1ZU9mKCkgLSBkYXRlRnJvbS52YWx1ZU9mKCk7XG4gICAgdGhpcy5kaXNhYmxlZEFnZ3JlZ2F0aW9ucyA9IHtcbiAgICAgIERBSUxZOiB0aW1lUmFuZ2VJbk1zIDw9IFRpbWVTcGFuSW5Ncy5EQVksXG4gICAgICBIT1VSTFk6IHRpbWVSYW5nZUluTXMgPD0gVGltZVNwYW5Jbk1zLkhPVVIsXG4gICAgICBNSU5VVEVMWTogdGltZVJhbmdlSW5NcyA8PSBUaW1lU3BhbkluTXMuTUlOVVRFXG4gICAgfTtcbiAgICBjb25zdCBpc1Byb3BlckFnZ3JlZ2F0aW9uID0gIXRoaXMuZGlzYWJsZWRBZ2dyZWdhdGlvbnNbYWdncmVnYXRpb25dIHx8IGFnZ3JlZ2F0aW9uID09PSBudWxsO1xuICAgIGlmIChpc1Byb3BlckFnZ3JlZ2F0aW9uKSB7XG4gICAgICByZXR1cm4gYWdncmVnYXRpb247XG4gICAgfVxuXG4gICAgaWYgKHRpbWVSYW5nZUluTXMgPj0gQUdHUkVHQVRJT05fTElNSVRTLkRBSUxZX0xJTUlUKSB7XG4gICAgICByZXR1cm4gYWdncmVnYXRpb25UeXBlLkRBSUxZO1xuICAgIH0gZWxzZSBpZiAodGltZVJhbmdlSW5NcyA+PSBBR0dSRUdBVElPTl9MSU1JVFMuSE9VUkxZX0xJTUlUKSB7XG4gICAgICByZXR1cm4gYWdncmVnYXRpb25UeXBlLkhPVVJMWTtcbiAgICB9IGVsc2UgaWYgKHRpbWVSYW5nZUluTXMgPj0gQUdHUkVHQVRJT05fTElNSVRTLk1JTlVURUxZX0xJTUlUKSB7XG4gICAgICByZXR1cm4gYWdncmVnYXRpb25UeXBlLk1JTlVURUxZO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtXG4gICpuZ0lmPVwiaXNDb3VwbGVkICYmICFoaWRkZW5cIlxuICBbZ3JvdXBJZF09XCJBQ1RJT05fQkFSX0dST1VQX0lEXCJcbiAgW2luR3JvdXBQcmlvcml0eV09XCJhY3Rpb25CYXJJbkdyb3VwUHJpb3JpdHlcIlxuICBbcGxhY2VtZW50XT1cIidsZWZ0J1wiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlVGltZVBpY2tlclwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgIGRhdGU6IFtmb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlLCBmb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZV1cbiAgICB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwiIWlzQ291cGxlZFwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVUaW1lUGlja2VyXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICBkYXRlOiBbZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSwgZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGVdXG4gIH1cIlxuPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGVcbiAgI2RhdGVUaW1lUGlja2VyXG4gIGxldC1kYXRlPVwiZGF0ZVwiXG4+XG4gIDxmb3JtXG4gICAgY2xhc3M9XCJkLWZsZXggZ2FwLTE2IHAtbC14cy0xNiBwLXIteHMtMTYgbS10LXhzLTggbS1iLXhzLThcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVNldHRpbmdzLmdsb2JhbFRpbWVDb250ZXh0XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93biBmbGV4LWdyb3dcIlxuICAgICAgICAgICNkcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgICAgICAgICBcbiAgICAgICAgICBkcm9wZG93blxuICAgICAgICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAqbmdJZj1cImRhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZGF0YS1jeT1cIndpZGdldC10aW1lLWNvbnRleHQtLWRhdGUtcGlja2VyLWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBmb3JtLWNvbnRyb2wgbC1oLXRpZ2h0IGQtZmxleCBhLWktY2VudGVyXCJcbiAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7IGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCB9fSDigJQge3tcbiAgICAgICAgICAgICAgZGF0ZVsxXSB8IGM4eURhdGU6IERBVEVfRk9STUFUXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICB0b29sdGlwPVwie3sgZGF0ZVswXSB8IGM4eURhdGU6IERBVEVfRk9STUFUIH19IOKAlCB7eyBkYXRlWzFdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQgfX1cIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1yLTQgXCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cInNjaGVkdWxlMVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtY29sIHRleHQtbGVmdCBmaXQtd1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTJcIiBkYXRhLWN5PVwid2lkZ2V0LXRpbWUtY29udGV4dC0tc2VsZWN0ZWQtaW50ZXJ2YWxcIj5cbiAgICAgICAgICAgICAgICB7eyBJTlRFUlZBTF9USVRMRVNbZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC0xMCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXQtdGltZS1jb250ZXh0LS1zZWxlY3RlZC10aW1lLXJhbmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6IERBVEVfRk9STUFUIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldCBtLXItMTYgbS1sLTRcIj48L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LS1kYXRlLXJhbmdlXCJcbiAgICAgICAgICAgICpkcm9wZG93bk1lbnVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yzh5LWludGVydmFsLXBpY2tlclxuICAgICAgICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbFwiXG4gICAgICAgICAgICA+PC9jOHktaW50ZXJ2YWwtcGlja2VyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbC0xNiBwLXItMTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZXJyb3JzID8gJ2hhcy1lcnJvcicgOiAnJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmb3I9XCJ0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBGcm9tYGRhdGVgXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGM4eS1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwidGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJmb3JtLnZhbHVlLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZXJyb3JzID8gJ2hhcy1lcnJvcicgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9jOHktZGF0ZS10aW1lLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZXMgW3Nob3ddPVwiZm9ybS5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZS5lcnJvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRhdGVBZnRlclJhbmdlTWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVGhpcyBkYXRlIGlzIGFmdGVyIHRoZSBsYXRlc3QgYWxsb3dlZCBkYXRlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImludmFsaWREYXRlVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBpbnZhbGlkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZvcj1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBUb2BkYXRlYFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBpZD1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImZvcm0udmFsdWUudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmVycm9yc1wiPlxuICAgICAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGF0ZUJlZm9yZVJhbmdlTWluXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVGhpcyBkYXRlIGlzIGJlZm9yZSB0aGUgZWFybGllc3QgYWxsb3dlZCBkYXRlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImludmFsaWREYXRlVGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBpbnZhbGlkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGQtZmxleCBnYXAtOCBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZXNldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXQoKTsgZHJvcGRvd24uaXNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0udmFsdWUucmVhbHRpbWVcIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgUmVzZXRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RGF0ZXRpbWVDb250ZXh0KCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgKGZvcm0ucHJpc3RpbmUgJiYgZm9ybS51bnRvdWNoZWQpIHx8IGZvcm0uaW52YWxpZCB8fCBmb3JtLnZhbHVlLnJlYWx0aW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQXBwbHlcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctYXV0b1wiPlxuICAgICAgPGM4eS1yZWFsdGltZS1jb250cm9sXG4gICAgICAqbmdJZj1cImRpc3BsYXlTZXR0aW5ncy5nbG9iYWxSZWFsdGltZUNvbnRleHRcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVhbHRpbWVcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcC0wIGZsZXgtbm8tZ3JvdyB3LWF1dG9cIlxuICAgICAgPjwvYzh5LXJlYWx0aW1lLWNvbnRyb2w+XG5cbiAgICAgIDxjOHktYWdncmVnYXRpb24tcGlja2VyXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheVNldHRpbmdzLmdsb2JhbEFnZ3JlZ2F0aW9uQ29udGV4dFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFnZ3JlZ2F0aW9uXCJcbiAgICAgICAgW2Rpc2FibGVkQWdncmVnYXRpb25zXT1cImRpc2FibGVkQWdncmVnYXRpb25zXCJcbiAgICAgID48L2M4eS1hZ2dyZWdhdGlvbi1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVEZWNvdXBsaW5nKClcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiaXNDb3VwbGVkID8gJ3NjaGVkdWxlMScgOiAndG9kYXknXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwibS1sLTRcIj5cbiAgICAgIHt7IChpc0NvdXBsZWQgPyBkZWNvdXBsZVRpbWVDb250ZXh0TGFiZWwgOiBjb3VwbGVUaW1lQ29udGV4dExhYmVsKSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uPlxuIl19
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWdldC10aW1lLWNvbnRleHQvd2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsa0JBQWtCLEVBS25CLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hGLE9BQU8s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QUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQU1OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLbUMsTUFBTTtzQkFBL0MsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBQ1IsUUFBUTtzQkFBdkMsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLWNoaWxkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgfSBmcm9tICcuLi9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldHNEYXNoYm9hcmRFdmVudFNlcnZpY2UgfSBmcm9tICcuLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCwgVGltZUNvbnRleHRFdmVudCwgV2lkZ2V0VGltZUNvbnRleHQgfSBmcm9tICcuLi93aWRnZXQtY2hhbmdlLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBR0dSRUdBVElPTl9MSU1JVFMsXG4gIElucHV0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcyxcbiAgV2lkZ2V0RGlzcGxheVNldHRpbmdzLFxuICBXaWRnZXRUaW1lQ29udGV4dENoYW5nZSxcbiAgV2lkZ2V0VGltZUNvbnRleHRTdGF0ZVxufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0VGltZUNvbnRleHRRdWVyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQtcXVlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRUaW1lQ29udGV4dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGlvbkVuZCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9uQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2FjdGlvbi1iYXInO1xuaW1wb3J0IHsgYWdncmVnYXRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQnNEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgSW50ZXJ2YWwsIElOVEVSVkFMX1RJVExFUywgVGltZVNwYW5Jbk1zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktd2lkZ2V0LXRpbWUtY29udGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2QtZmxleCBhLWktY2VudGVyIGdhcC00JyB9XG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBJTlRFUlZBTF9USVRMRVMgPSBJTlRFUlZBTF9USVRMRVM7XG4gIHJlYWRvbmx5IERBVEVfRk9STUFUID0gJ3Nob3J0JztcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgY29tcG9uZW50IGNhbiBkZWNvdXBsZSBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBjYW5EZWNvdXBsZSA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzcGxheVNldHRpbmdzOiBXaWRnZXREaXNwbGF5U2V0dGluZ3M7XG5cbiAgQElucHV0KCkgaGlkZGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGVhY2ggY2hhbmdlIGFzIGFuIGFycmF5IG9mIGRhdGVzIFtmcm9tLCB0b10uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZGF0ZUNvbnRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdpZGdldFRpbWVDb250ZXh0Q2hhbmdlPigpO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZChEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCkgYWN0aW9uOiBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChCc0Ryb3Bkb3duRGlyZWN0aXZlKSBkcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGltZSBjb250ZXh0IGlzIGJvdW5kIHRvIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAqL1xuICBpc0NvdXBsZWQgPSB0cnVlO1xuICBkZWNvdXBsZVRpbWVDb250ZXh0TGFiZWwgPSBnZXR0ZXh0KCdEZWNvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgY291cGxlVGltZUNvbnRleHRMYWJlbCA9IGdldHRleHQoJ0NvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgZm9ybTogUmV0dXJuVHlwZTxXaWRnZXRUaW1lQ29udGV4dENvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgYWN0aW9uQmFySW5Hcm91cFByaW9yaXR5OiBudW1iZXI7XG4gIGRpc2FibGVkQWdncmVnYXRpb25zOiBQYXJ0aWFsPFJlY29yZDxhZ2dyZWdhdGlvblR5cGUsIGJvb2xlYW4+PiA9IHt9O1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMOiBJbnRlcnZhbFsnaWQnXSA9ICdkYXlzJztcbiAgcmVhZG9ubHkgQUNUSU9OX0JBUl9HUk9VUF9JRCA9ICd0aW1lY29udGV4dCc7XG4gIHJlYWRvbmx5IFJFQUxUSU1FX0lOVEVSVkFMID0gMTAwMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbmF2aWdhdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhbHRpbWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogQGlnbm9yZSBvbmx5IERJLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRFdmVudFNlcnZpY2U6IFdpZGdldHNEYXNoYm9hcmRFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRDaGlsZDogRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFdpZGdldFRpbWVDb250ZXh0UXVlcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGVscGVyU2VydmljZTogV2lkZ2V0VGltZUNvbnRleHRIZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25CYXJTZXJ2aWNlOiBBY3Rpb25CYXJTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQGlnbm9yZSBTdWJzY3JpYmluZyB0byB0aGUgZ2xvYmFsIGNvbnRleHQuXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkJhckluR3JvdXBQcmlvcml0eSA9IHRoaXMuaGVscGVyU2VydmljZS5nZXRBY3Rpb25CYXJQcmlvcml0eSh0aGlzLmRpc3BsYXlTZXR0aW5ncyk7XG5cbiAgICBjb25zdCBpbml0aWFsQ29udGV4dDogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSA9XG4gICAgICB0aGlzLmdldEluaXRpYWxDb250ZXh0KCkgfHwgdGhpcy5nZXREZWZhdWx0Q29udGV4dCgpO1xuICAgIGluaXRpYWxDb250ZXh0LmFnZ3JlZ2F0aW9uID0gdGhpcy5jYWxjdWxhdGVBZ2dyZWdhdGlvbihcbiAgICAgIGluaXRpYWxDb250ZXh0LmRhdGUsXG4gICAgICBpbml0aWFsQ29udGV4dC5hZ2dyZWdhdGlvblxuICAgICk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5jcmVhdGVGb3JtKGluaXRpYWxDb250ZXh0KTtcblxuICAgIHRoaXMuZGF0ZUNvbnRleHRDaGFuZ2UuZW1pdCh7XG4gICAgICBkYXRlOiBpbml0aWFsQ29udGV4dC5kYXRlLFxuICAgICAgcmVhbHRpbWU6IGluaXRpYWxDb250ZXh0LnJlYWx0aW1lLFxuICAgICAgYWdncmVnYXRpb246IGluaXRpYWxDb250ZXh0LmFnZ3JlZ2F0aW9uXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VydmljZS5zZXREYXRlQ29udGV4dFF1ZXJ5UGFyYW1zKGluaXRpYWxDb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpYmVUb0dsb2JhbENvbnRleHQoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUXVlcnlQYXJhbXNDaGFuZ2UoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGVyRXZlbnRzKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0ludGVydmFsQ2hhbmdlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb1JlYWx0aW1lQ2hhbmdlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0FnZ3JlZ2F0aW9uQ2hhbmdlKCk7XG5cbiAgICBpZiAoaW5pdGlhbENvbnRleHQucmVhbHRpbWUpIHtcbiAgICAgIHRoaXMub25SZWFsdGltZVZhbHVlQ2hhbmdlKGluaXRpYWxDb250ZXh0LnJlYWx0aW1lKTtcbiAgICAgIHRoaXMuc3RhcnRSZWFsdGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlIEFkZGluZyBjdXN0b20gYWN0aW9ucy5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5EZWNvdXBsZSkge1xuICAgICAgdGhpcy5kYXNoYm9hcmRDaGlsZC5hZGRBY3Rpb25zKFt0aGlzLmFjdGlvbl0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBjb3VwbGluZyBvbiBvciBvZmYuXG4gICAqL1xuICB0b2dnbGVEZWNvdXBsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuaXNDb3VwbGVkID0gIXRoaXMuaXNDb3VwbGVkO1xuICAgIGNvbnN0IGxhc3RFdmVudFZhbHVlID0gdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZ2V0TGFzdFZhbHVlKCdUSU1FX0NPTlRFWFQnKTtcbiAgICBjb25zdCB7IHJlYWx0aW1lLCBhZ2dyZWdhdGlvbiwgaW50ZXJ2YWwgfSA9IGxhc3RFdmVudFZhbHVlO1xuICAgIGxldCBkYXRlOiBEYXRlVGltZUNvbnRleHQ7XG4gICAgaWYgKGludGVydmFsKSB7XG4gICAgICBkYXRlID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gbGFzdEV2ZW50VmFsdWUuZGF0ZVRpbWVDb250ZXh0O1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZXMoeyBkYXRlLCBpbnRlcnZhbCwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLnN1YnNjcmliZVRvR2xvYmFsQ29udGV4dCgpO1xuICAgICAgdGhpcy5kYXRlQ29udGV4dENoYW5nZS5lbWl0KHsgZGF0ZSwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbUdsb2JhbENvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBmb3JtIHZhbHVlIHRvIGdsb2JhbCBvciBsb2NhbCBkYXRlIGNvbnRleHQuXG4gICAqL1xuICBhcHBseURhdGV0aW1lQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZSh7XG4gICAgICBkYXRlOiBbXG4gICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZSksXG4gICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGUpXG4gICAgICBdLFxuICAgICAgaW50ZXJ2YWw6IG51bGwsXG4gICAgICByZWFsdGltZTogdGhpcy5mb3JtLnZhbHVlLnJlYWx0aW1lLFxuICAgICAgYWdncmVnYXRpb246IHRoaXMuZm9ybS52YWx1ZS5hZ2dyZWdhdGlvblxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyBmb3JtIHRvIGluaXRpYWwgdmFsdWUgYW5kIHVwZGF0ZSBjb250ZXh0LlxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgICB0aGlzLnVwZGF0ZSh0aGlzLmdldERlZmF1bHRDb250ZXh0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgdW5zdWJzY3JpYmluZy5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICAgIHRoaXMuY2xlYXJRdWVyeVBhcmFtc0lmTmVlZGVkKCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0ludGVydmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoaW50ZXJ2YWwgPT4ge1xuICAgICAgICBsZXQgZGF0ZTogRGF0ZVRpbWVDb250ZXh0O1xuICAgICAgICBpZiAoaW50ZXJ2YWwgPT09ICdjdXN0b20nKSB7XG4gICAgICAgICAgZGF0ZSA9IFtcbiAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuZm9ybS5jb250cm9scy5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZS52YWx1ZSksXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0uY29udHJvbHMuY3VycmVudERhdGVDb250ZXh0VG9EYXRlLnZhbHVlKVxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0ZSA9IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlKHtcbiAgICAgICAgICBkYXRlLFxuICAgICAgICAgIGludGVydmFsLFxuICAgICAgICAgIHJlYWx0aW1lOiB0aGlzLmZvcm0udmFsdWUucmVhbHRpbWUsXG4gICAgICAgICAgYWdncmVnYXRpb246IHRoaXMuZm9ybS52YWx1ZS5hZ2dyZWdhdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1JlYWx0aW1lQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5yZWFsdGltZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShyZWFsdGltZSA9PiB7XG4gICAgICB0aGlzLm9uUmVhbHRpbWVWYWx1ZUNoYW5nZShyZWFsdGltZSk7XG5cbiAgICAgIGlmIChyZWFsdGltZSkge1xuICAgICAgICB0aGlzLnN0YXJ0UmVhbHRpbWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQWdncmVnYXRpb25DaGFuZ2UoKSB7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmFnZ3JlZ2F0aW9uLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShhZ2dyZWdhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlKHtcbiAgICAgICAgICBkYXRlOiBbXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUpLFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIGludGVydmFsOiB0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICAgICAgcmVhbHRpbWU6IHRoaXMuZm9ybS52YWx1ZS5yZWFsdGltZSxcbiAgICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKGNvbnRleHQ6IFdpZGdldFRpbWVDb250ZXh0U3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZTogY29udGV4dC5kYXRlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGU6IGNvbnRleHQuZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgY3VycmVudERhdGVDb250ZXh0RnJvbURhdGU6IGNvbnRleHQuZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgY3VycmVudERhdGVDb250ZXh0VG9EYXRlOiBjb250ZXh0LmRhdGVbMV0udG9JU09TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnREYXRlQ29udGV4dEludGVydmFsOiBjb250ZXh0LmludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAgcmVhbHRpbWU6IGNvbnRleHQucmVhbHRpbWUsXG4gICAgICBhZ2dyZWdhdGlvbjogY29udGV4dC5hZ2dyZWdhdGlvblxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgbmV3IFdpZGdldENoYW5nZUV2ZW50IGVpdGhlciBvbiB0aGUgbG9jYWwgY2hhbmdlIGVtaXR0ZXIgb3Igb24gdGhlIGdsb2JhbCBvbmUuXG4gICAqIEBwYXJhbSB3aWRnZXRUaW1lQ29udGV4dFN0YXRlIE5ldyB3aWRnZXQgdGltZSBjb250ZXh0IHZhbHVlLiovXG4gIHByaXZhdGUgdXBkYXRlKHsgZGF0ZSwgaW50ZXJ2YWwsIHJlYWx0aW1lLCBhZ2dyZWdhdGlvbiB9OiBXaWRnZXRUaW1lQ29udGV4dFN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRBZ2dyZWdhdGlvbiA9IHRoaXMuY2FsY3VsYXRlQWdncmVnYXRpb24oZGF0ZSwgYWdncmVnYXRpb24pO1xuICAgIGlmICh0aGlzLmlzQ291cGxlZCkge1xuICAgICAgY29uc3QgZXZlbnREYXRhOiBXaWRnZXRUaW1lQ29udGV4dCA9XG4gICAgICAgIGludGVydmFsICYmIGludGVydmFsICE9PSAnY3VzdG9tJ1xuICAgICAgICAgID8geyBpbnRlcnZhbCwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uOiB2YWxpZEFnZ3JlZ2F0aW9uIH1cbiAgICAgICAgICA6IHsgZGF0ZVRpbWVDb250ZXh0OiBkYXRlLCByZWFsdGltZSwgYWdncmVnYXRpb246IHZhbGlkQWdncmVnYXRpb24gfTtcbiAgICAgIHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmVtaXQoeyB0eXBlOiAnVElNRV9DT05URVhUJywgZGF0YTogZXZlbnREYXRhIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZXMoeyBkYXRlLCBpbnRlcnZhbCwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uOiB2YWxpZEFnZ3JlZ2F0aW9uIH0pO1xuICAgICAgdGhpcy5kYXRlQ29udGV4dENoYW5nZS5lbWl0KHsgZGF0ZSwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uOiB2YWxpZEFnZ3JlZ2F0aW9uIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50JCA9IHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmdldE9ic2VydmFibGU8VGltZUNvbnRleHRFdmVudD4oJ1RJTUVfQ09OVEVYVCcpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gZXZlbnQkLnN1YnNjcmliZSgoY29udGV4dDogV2lkZ2V0VGltZUNvbnRleHQpID0+IHtcbiAgICAgIGxldCBkYXRlOiBEYXRlVGltZUNvbnRleHQ7XG4gICAgICBjb25zdCB7IHJlYWx0aW1lLCBpbnRlcnZhbCwgYWdncmVnYXRpb24gfSA9IGNvbnRleHQ7XG4gICAgICBpZiAoaW50ZXJ2YWwpIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKGNvbnRleHQuaW50ZXJ2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IGNvbnRleHQuZGF0ZVRpbWVDb250ZXh0O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoe1xuICAgICAgICBkYXRlLFxuICAgICAgICByZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb25cbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWVzKHsgZGF0ZSwgaW50ZXJ2YWwsIHJlYWx0aW1lLCBhZ2dyZWdhdGlvbiB9KTtcbiAgICAgIHRoaXMucXVlcnlTZXJ2aWNlLnNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoeyBpbnRlcnZhbCwgZGF0ZSwgcmVhbHRpbWUsIGFnZ3JlZ2F0aW9uIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtVmFsdWVzKHtcbiAgICBkYXRlLFxuICAgIGludGVydmFsLFxuICAgIHJlYWx0aW1lLFxuICAgIGFnZ3JlZ2F0aW9uXG4gIH06IFdpZGdldFRpbWVDb250ZXh0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU6IGRhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgICAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlOiBkYXRlWzFdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlOiBkYXRlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZTogZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICByZWFsdGltZSxcbiAgICAgICAgY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWw6IGludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAgICBhZ2dyZWdhdGlvbjogYWdncmVnYXRpb24gfHwgbnVsbFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlRnJvbUdsb2JhbENvbnRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5pdGlhbENvbnRleHQoKTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlTZXJ2aWNlLmRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcygpO1xuICAgIGlmIChkYXRlVGltZUNvbnRleHRGcm9tUXVlcnlQYXJhbXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcyxcbiAgICAgICAgcmVhbHRpbWU6IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcy5yZWFsdGltZSA/PyBmYWxzZSxcbiAgICAgICAgYWdncmVnYXRpb246IGRhdGVUaW1lQ29udGV4dEZyb21RdWVyeVBhcmFtcy5yZWFsdGltZVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogZGF0ZVRpbWVDb250ZXh0RnJvbVF1ZXJ5UGFyYW1zLmFnZ3JlZ2F0aW9uIHx8IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGxhc3QgdmFsdWUgb2YgZXZlbnRzIHNlcnZpY2VcbiAgICBjb25zdCBsYXN0RXZlbnRWYWx1ZSA9IHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmdldExhc3RWYWx1ZSgnVElNRV9DT05URVhUJyk7XG4gICAgY29uc3QgcmVhbHRpbWUgPSBsYXN0RXZlbnRWYWx1ZT8ucmVhbHRpbWUgPz8gZmFsc2U7XG4gICAgaWYgKGxhc3RFdmVudFZhbHVlICYmIGxhc3RFdmVudFZhbHVlLmRhdGVUaW1lQ29udGV4dCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZTogbGFzdEV2ZW50VmFsdWUuZGF0ZVRpbWVDb250ZXh0LFxuICAgICAgICBpbnRlcnZhbDogJ2N1c3RvbScsXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBhZ2dyZWdhdGlvbjogcmVhbHRpbWUgPyBudWxsIDogbGFzdEV2ZW50VmFsdWUuYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXN0RXZlbnRWYWx1ZSAmJiBsYXN0RXZlbnRWYWx1ZS5pbnRlcnZhbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZTogdGhpcy5oZWxwZXJTZXJ2aWNlLmdldERhdGVUaW1lQ29udGV4dEJ5SW50ZXJ2YWwobGFzdEV2ZW50VmFsdWUuaW50ZXJ2YWwpLFxuICAgICAgICBpbnRlcnZhbDogbGFzdEV2ZW50VmFsdWUuaW50ZXJ2YWwsXG4gICAgICAgIHJlYWx0aW1lLFxuICAgICAgICBhZ2dyZWdhdGlvbjogcmVhbHRpbWUgPyBudWxsIDogbGFzdEV2ZW50VmFsdWUuYWdncmVnYXRpb25cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUXVlcnlQYXJhbXNDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2VcbiAgICAgIC5xdWVyeVBhcmFtc0NoYW5nZSQoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHtcbiAgICAgICAgICBkYXRlQ29udGV4dEZyb20sXG4gICAgICAgICAgZGF0ZUNvbnRleHRUbyxcbiAgICAgICAgICBkYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgICAgIGRhdGVDb250ZXh0UmVhbHRpbWUsXG4gICAgICAgICAgZGF0ZUNvbnRleHRBZ2dyZWdhdGlvblxuICAgICAgICB9OiBJbnB1dERhdGVDb250ZXh0UXVlcnlQYXJhbXMpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFsdGltZSA9IGRhdGVDb250ZXh0UmVhbHRpbWUgPz8gdGhpcy5mb3JtLnZhbHVlLnJlYWx0aW1lO1xuICAgICAgICAgIGlmIChkYXRlQ29udGV4dEludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ1RJTUVfQ09OVEVYVCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogZGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgICAgICAgICAgICByZWFsdGltZSxcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbjogZGF0ZUNvbnRleHRBZ2dyZWdhdGlvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUNvbnRleHQ6IERhdGVUaW1lQ29udGV4dCA9IFtcbiAgICAgICAgICAgICAgbmV3IERhdGUoZGF0ZUNvbnRleHRGcm9tKSxcbiAgICAgICAgICAgICAgbmV3IERhdGUoZGF0ZUNvbnRleHRUbylcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ1RJTUVfQ09OVEVYVCcsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBkYXRlVGltZUNvbnRleHQ6IGRhdGVDb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlYWx0aW1lLFxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiBkYXRlQ29udGV4dEFnZ3JlZ2F0aW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJRdWVyeVBhcmFtc0lmTmVlZGVkKCk6IHZvaWQge1xuICAgIC8vIElmIG5hdmlnYXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHJvdXRlciB3aWxsIHRha2UgY2FyZSBvZiBjbGVhcmluZyBxdWVyeSBwYXJhbXMuIFRoaXMgd2F5IHdlIGF2b2lkIHVubmVjZXNzYXJ5IG1hbmlwdWxhdGlvbiBvZiBicm93c2VyIGhpc3RvcnlcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjaGVjayBpZiBhbnkgb3RoZXIgV2lkZ2V0VGltZUNvbnRleHRDb21wb25lbnQgYWN0aW9uIGluIGFjdGlvbiBiYXIgZXhpc3RzXG4gICAgY29uc3QgYW55V2lkZ2V0VGltZUNvbnRleHRBY3Rpb25MZWZ0ID0gQXJyYXkuZnJvbSh0aGlzLmFjdGlvbkJhclNlcnZpY2Uuc3RhdGUpLnNvbWUoXG4gICAgICBhY3Rpb24gPT4gYWN0aW9uLmdyb3VwSWQgPT09IHRoaXMuQUNUSU9OX0JBUl9HUk9VUF9JRFxuICAgICk7XG4gICAgaWYgKCFhbnlXaWRnZXRUaW1lQ29udGV4dEFjdGlvbkxlZnQpIHtcbiAgICAgIHRoaXMucXVlcnlTZXJ2aWNlLmNsZWFyUXVlcnlQYXJhbXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvUm91dGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICBlID0+XG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyA9IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbnRleHQoKTogV2lkZ2V0VGltZUNvbnRleHRTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGU6IHRoaXMuaGVscGVyU2VydmljZS5nZXREYXRlVGltZUNvbnRleHRCeUludGVydmFsKHRoaXMuREVGQVVMVF9JTlRFUlZBTCksXG4gICAgICBpbnRlcnZhbDogdGhpcy5ERUZBVUxUX0lOVEVSVkFMLFxuICAgICAgcmVhbHRpbWU6IGZhbHNlLFxuICAgICAgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZS5NSU5VVEVMWVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UmVhbHRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlLmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMuYWdncmVnYXRpb24uZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMuUkVBTFRJTUVfSU5URVJWQUwpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZUZyb20gPSBuZXcgRGF0ZShcbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUpLnZhbHVlT2YoKSArIHRoaXMuUkVBTFRJTUVfSU5URVJWQUxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3RGF0ZVRvID0gbmV3IERhdGUoXG4gICAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZSkudmFsdWVPZigpICsgdGhpcy5SRUFMVElNRV9JTlRFUlZBTFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZXMoe1xuICAgICAgICAgIGRhdGU6IFtuZXdEYXRlRnJvbSwgbmV3RGF0ZVRvXSxcbiAgICAgICAgICBpbnRlcnZhbDogdGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsLFxuICAgICAgICAgIHJlYWx0aW1lOiB0cnVlLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BSZWFsdGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZm9ybT8uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZW5hYmxlKCk7XG4gICAgdGhpcy5mb3JtPy5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGUuZW5hYmxlKCk7XG4gICAgdGhpcy5mb3JtPy5jb250cm9scy5hZ2dyZWdhdGlvbi5lbmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZWFsdGltZVZhbHVlQ2hhbmdlKHJlYWx0aW1lOiBib29sZWFuKTogdm9pZCB7XG4gICAgbGV0IGRhdGVUaW1lQ29udGV4dDogRGF0ZVRpbWVDb250ZXh0O1xuICAgIGlmICh0aGlzLmZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICBkYXRlVGltZUNvbnRleHQgPSB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0RGF0ZVRpbWVDb250ZXh0QnlJbnRlcnZhbChcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEludGVydmFsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJyZW50VGltZVNwYW5Jbk1zID1cbiAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZSkudmFsdWVPZigpIC1cbiAgICAgICAgbmV3IERhdGUodGhpcy5mb3JtLnZhbHVlLmN1cnJlbnREYXRlQ29udGV4dEZyb21EYXRlKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShkYXRlVG8udmFsdWVPZigpIC0gY3VycmVudFRpbWVTcGFuSW5Ncyk7XG4gICAgICBkYXRlVGltZUNvbnRleHQgPSBbZGF0ZUZyb20sIGRhdGVUb107XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGUoe1xuICAgICAgZGF0ZTogZGF0ZVRpbWVDb250ZXh0LFxuICAgICAgaW50ZXJ2YWw6IHRoaXMuZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgIHJlYWx0aW1lLFxuICAgICAgYWdncmVnYXRpb246IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQWdncmVnYXRpb24oXG4gICAgW2RhdGVGcm9tLCBkYXRlVG9dOiBEYXRlVGltZUNvbnRleHQsXG4gICAgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uVHlwZVxuICApOiBhZ2dyZWdhdGlvblR5cGUge1xuICAgIGNvbnN0IHRpbWVSYW5nZUluTXMgPSBkYXRlVG8udmFsdWVPZigpIC0gZGF0ZUZyb20udmFsdWVPZigpO1xuICAgIHRoaXMuZGlzYWJsZWRBZ2dyZWdhdGlvbnMgPSB7XG4gICAgICBEQUlMWTogdGltZVJhbmdlSW5NcyA8PSBUaW1lU3BhbkluTXMuREFZLFxuICAgICAgSE9VUkxZOiB0aW1lUmFuZ2VJbk1zIDw9IFRpbWVTcGFuSW5Ncy5IT1VSLFxuICAgICAgTUlOVVRFTFk6IHRpbWVSYW5nZUluTXMgPD0gVGltZVNwYW5Jbk1zLk1JTlVURVxuICAgIH07XG4gICAgY29uc3QgaXNQcm9wZXJBZ2dyZWdhdGlvbiA9ICF0aGlzLmRpc2FibGVkQWdncmVnYXRpb25zW2FnZ3JlZ2F0aW9uXSB8fCBhZ2dyZWdhdGlvbiA9PT0gbnVsbDtcbiAgICBpZiAoaXNQcm9wZXJBZ2dyZWdhdGlvbikge1xuICAgICAgcmV0dXJuIGFnZ3JlZ2F0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aW1lUmFuZ2VJbk1zID49IEFHR1JFR0FUSU9OX0xJTUlUUy5EQUlMWV9MSU1JVCkge1xuICAgICAgcmV0dXJuIGFnZ3JlZ2F0aW9uVHlwZS5EQUlMWTtcbiAgICB9IGVsc2UgaWYgKHRpbWVSYW5nZUluTXMgPj0gQUdHUkVHQVRJT05fTElNSVRTLkhPVVJMWV9MSU1JVCkge1xuICAgICAgcmV0dXJuIGFnZ3JlZ2F0aW9uVHlwZS5IT1VSTFk7XG4gICAgfSBlbHNlIGlmICh0aW1lUmFuZ2VJbk1zID49IEFHR1JFR0FUSU9OX0xJTUlUUy5NSU5VVEVMWV9MSU1JVCkge1xuICAgICAgcmV0dXJuIGFnZ3JlZ2F0aW9uVHlwZS5NSU5VVEVMWTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LWFjdGlvbi1iYXItaXRlbVxuICAqbmdJZj1cImlzQ291cGxlZCAmJiAhaGlkZGVuXCJcbiAgW2dyb3VwSWRdPVwiQUNUSU9OX0JBUl9HUk9VUF9JRFwiXG4gIFtpbkdyb3VwUHJpb3JpdHldPVwiYWN0aW9uQmFySW5Hcm91cFByaW9yaXR5XCJcbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF0ZVRpbWVQaWNrZXJcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICBkYXRlOiBbZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSwgZm9ybS52YWx1ZS5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGVdXG4gICAgfVwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIiFpc0NvdXBsZWRcIlxuICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlVGltZVBpY2tlclwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgZGF0ZTogW2Zvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0RnJvbURhdGUsIGZvcm0udmFsdWUuY3VycmVudERhdGVDb250ZXh0VG9EYXRlXVxuICB9XCJcbj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlXG4gICNkYXRlVGltZVBpY2tlclxuICBsZXQtZGF0ZT1cImRhdGVcIlxuPlxuICA8Zm9ybVxuICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0xNiBwLWwteHMtMTYgcC1yLXhzLTE2IG0tdC14cy04IG0tYi14cy04XCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlTZXR0aW5ncy5nbG9iYWxUaW1lQ29udGV4dFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24gZmxleC1ncm93XCJcbiAgICAgICAgICAjZHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgICAgICAgXG4gICAgICAgICAgZHJvcGRvd25cbiAgICAgICAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gICAgICAgICAgKm5nSWY9XCJkYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXQtdGltZS1jb250ZXh0LS1kYXRlLXBpY2tlci1kcm9wZG93bi1idXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZm9ybS1jb250cm9sIGwtaC10aWdodCBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBkYXRlWzBdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQgfX0g4oCUIHt7XG4gICAgICAgICAgICAgIGRhdGVbMV0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVFxuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgdG9vbHRpcD1cInt7IGRhdGVbMF0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6IERBVEVfRk9STUFUIH19XCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cIm0tci00IFwiXG4gICAgICAgICAgICAgIGM4eUljb249XCJzY2hlZHVsZTFcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWNvbCB0ZXh0LWxlZnQgZml0LXdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTEyXCIgZGF0YS1jeT1cIndpZGdldC10aW1lLWNvbnRleHQtLXNlbGVjdGVkLWludGVydmFsXCI+XG4gICAgICAgICAgICAgICAge3sgSU5URVJWQUxfVElUTEVTW2Zvcm0uY29udHJvbHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwudmFsdWVdIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtMTAgdGV4dC1tdXRlZCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICBkYXRhLWN5PVwid2lkZ2V0LXRpbWUtY29udGV4dC0tc2VsZWN0ZWQtdGltZS1yYW5nZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBkYXRlWzBdIHwgYzh5RGF0ZTogREFURV9GT1JNQVQgfX0g4oCUIHt7IGRhdGVbMV0gfCBjOHlEYXRlOiBEQVRFX0ZPUk1BVCB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXQgbS1yLTE2IG0tbC00XCI+PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPHVsXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS0tZGF0ZS1yYW5nZVwiXG4gICAgICAgICAgICAqZHJvcGRvd25NZW51XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGM4eS1pbnRlcnZhbC1waWNrZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWxcIlxuICAgICAgICAgICAgPjwvYzh5LWludGVydmFsLXBpY2tlcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uY29udHJvbHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwudmFsdWUgPT09ICdjdXN0b20nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZm9yPVwidGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgRnJvbWBkYXRlYFxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxjOHktZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICBpZD1cInRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwiZm9ybS52YWx1ZS50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlLmVycm9ycyA/ICdoYXMtZXJyb3InIDogJydcIlxuICAgICAgICAgICAgICAgICAgPjwvYzh5LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LW1lc3NhZ2VzIFtzaG93XT1cImZvcm0uY29udHJvbHMudGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGUuZXJyb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkYXRlQWZ0ZXJSYW5nZU1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBhZnRlciB0aGUgbGF0ZXN0IGFsbG93ZWQgZGF0ZS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnZhbGlkRGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgaW52YWxpZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZS5lcnJvcnMgPyAnaGFzLWVycm9yJyA6ICcnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidUb2BkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmb3I9XCJ0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgVG9gZGF0ZWBcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWRhdGUtdGltZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJmb3JtLnZhbHVlLnRlbXBvcmFyeVVzZXJTZWxlY3RlZEZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUb2BkYXRlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9scy50ZW1wb3JhcnlVc2VyU2VsZWN0ZWRUb0RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZS5lcnJvcnMgPyAnaGFzLWVycm9yJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgID48L2M4eS1kYXRlLXRpbWUtcGlja2VyPlxuICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlcyBbc2hvd109XCJmb3JtLmNvbnRyb2xzLnRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZS5lcnJvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRhdGVCZWZvcmVSYW5nZU1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1RoaXMgZGF0ZSBpcyBiZWZvcmUgdGhlIGVhcmxpZXN0IGFsbG93ZWQgZGF0ZS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnZhbGlkRGF0ZVRpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidUaGlzIGRhdGUgaXMgaW52YWxpZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYzh5LW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1tZXNzYWdlcz5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNiBkLWZsZXggZ2FwLTggc2VwYXJhdG9yLXRvcFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVzZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0KCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLnZhbHVlLnJlYWx0aW1lXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFJlc2V0XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FwcGx5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseURhdGV0aW1lQ29udGV4dCgpOyBkcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIChmb3JtLnByaXN0aW5lICYmIGZvcm0udW50b3VjaGVkKSB8fCBmb3JtLmludmFsaWQgfHwgZm9ybS52YWx1ZS5yZWFsdGltZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEFwcGx5XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LWF1dG9cIj5cbiAgICAgIDxjOHktcmVhbHRpbWUtY29udHJvbFxuICAgICAgKm5nSWY9XCJkaXNwbGF5U2V0dGluZ3MuZ2xvYmFsUmVhbHRpbWVDb250ZXh0XCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlYWx0aW1lXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHAtMCBmbGV4LW5vLWdyb3cgdy1hdXRvXCJcbiAgICAgID48L2M4eS1yZWFsdGltZS1jb250cm9sPlxuXG4gICAgICA8Yzh5LWFnZ3JlZ2F0aW9uLXBpY2tlclxuICAgICAgICAqbmdJZj1cImRpc3BsYXlTZXR0aW5ncy5nbG9iYWxBZ2dyZWdhdGlvbkNvbnRleHRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2dyZWdhdGlvblwiXG4gICAgICAgIFtkaXNhYmxlZEFnZ3JlZ2F0aW9uc109XCJkaXNhYmxlZEFnZ3JlZ2F0aW9uc1wiXG4gICAgICA+PC9jOHktYWdncmVnYXRpb24tcGlja2VyPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48Yzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRGVjb3VwbGluZygpXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cImlzQ291cGxlZCA/ICdzY2hlZHVsZTEnIDogJ3RvZGF5J1wiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cIm0tbC00XCI+XG4gICAgICB7eyAoaXNDb3VwbGVkID8gZGVjb3VwbGVUaW1lQ29udGV4dExhYmVsIDogY291cGxlVGltZUNvbnRleHRMYWJlbCkgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiJdfQ==