@c8y/ngx-components 1021.77.2 → 1021.78.2

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 (24) hide show
  1. package/bookmarks/bookmarks.component.d.ts +4 -6
  2. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  3. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  4. package/echart/charts.component.d.ts.map +1 -1
  5. package/echart/models/datapoints-graph-widget.model.d.ts +2 -0
  6. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  7. package/echart/services/echarts-options.service.d.ts.map +1 -1
  8. package/esm2022/bookmarks/bookmarks.component.mjs +15 -18
  9. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +6 -5
  10. package/esm2022/echart/charts.component.mjs +5 -3
  11. package/esm2022/echart/models/datapoints-graph-widget.model.mjs +1 -1
  12. package/esm2022/echart/services/echarts-options.service.mjs +5 -5
  13. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +5 -4
  14. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -14
  15. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +5 -4
  17. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  18. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-echart.mjs +8 -6
  20. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +4 -3
  22. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
@@ -390,7 +390,8 @@ export class ChartsComponent {
390
390
  mergeMatchingDatapoints: this.config.mergeMatchingDatapoints || false,
391
391
  forceMergeDatapoints: this.config.forceMergeDatapoints || false,
392
392
  showLabelAndUnit: this.config.showLabelAndUnit || false,
393
- showSlider: this.config.showSlider || false
393
+ showSlider: this.config.showSlider || false,
394
+ numberOfDecimalPlaces: this.config.numberOfDecimalPlaces ?? 2
394
395
  }, undefined, aggregatedDatapoints);
395
396
  }
396
397
  else {
@@ -411,7 +412,8 @@ export class ChartsComponent {
411
412
  mergeMatchingDatapoints: this.config.mergeMatchingDatapoints || false,
412
413
  forceMergeDatapoints: this.config.forceMergeDatapoints || false,
413
414
  showLabelAndUnit: this.config.showLabelAndUnit || false,
414
- showSlider: this.config.showSlider || false
415
+ showSlider: this.config.showSlider || false,
416
+ numberOfDecimalPlaces: this.config.numberOfDecimalPlaces ?? 2
415
417
  }, timeRange, aggregatedDatapoints, true);
416
418
  }
417
419
  }
@@ -548,4 +550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
548
550
  type: ViewChild,
549
551
  args: ['chart']
550
552
  }] } });
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2VjaGFydC9jaGFydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZWNoYXJ0L2NoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQVl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBTXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxh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Q2hGSCw2aEJBdUJBLDJDRDRESSxZQUFZLHVMQUNaLFVBQVUseUxBQ1YsZ0JBQWdCLGtqQ0FDaEIsYUFBYSw4QkFDYixhQUFhLCtCQUNiLG9CQUFvQixnRkFDcEIsWUFBWTs7NEZBR0gsZUFBZTtrQkEzQjNCLFNBQVM7K0JBQ0UsWUFBWSxhQUVYO3dCQUNULEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ3pGLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3QjtxQkFDekIsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYjt3REFTUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFLRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBR0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ2EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBFQ2hhcnRzLCBFQ2hhcnRzT3B0aW9uLCBTZXJpZXNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCB7XG4gIEFsYXJtRGV0YWlsc0V4dGVuZGVkLFxuICBBbGFybU9yRXZlbnRFeHRlbmRlZCxcbiAgRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLFxuICBEcFdpdGhWYWx1ZXMsXG4gIEV2ZW50RGV0YWlsc0V4dGVuZGVkLFxuICBNYXJrTGluZURhdGEsXG4gIFNlcmllc0RhdGFwb2ludEluZm9cbn0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2N1c3RvbS1tZWFzdXJlbWVudHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBBbGFybVJlYWx0aW1lU2VydmljZSxcbiAgQ29yZU1vZHVsZSxcbiAgRGlzbWlzc0FsZXJ0U3RyYXRlZ3ksXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBXaWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFY2hhcnRzT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VjaGFydHMtb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0UmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1yZWFsdGltZS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FsbGJhY2tEYXRhUGFyYW1zLFxuICBFQ0FjdGlvbkV2ZW50LFxuICBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2tcbn0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBDaGFydFR5cGVzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTkdYX0VDSEFSVFNfQ09ORklHLCBOZ3hFY2hhcnRzTW9kdWxlIH0gZnJvbSAnbmd4LWVjaGFydHMnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IFlBeGlzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMveS1heGlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRBbGVydHNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWFsZXJ0cy9jaGFydC1hbGVydHMuY29tcG9uZW50JztcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSwgQWxhcm1TdGF0dXMsIElBbGFybSwgSUV2ZW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ2hhcnRFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydEFsYXJtc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NoYXJ0LWFsYXJtcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVjaGFydHNDdXN0b21PcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvY2hhcnQubW9kZWwnO1xuaW1wb3J0IHsgVG9wTGV2ZWxGb3JtYXR0ZXJQYXJhbXMgfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy9jb21wb25lbnQvdG9vbHRpcC9Ub29sdGlwTW9kZWwnO1xuaW1wb3J0IHtcbiAgQWxhcm1TZXZlcml0eVRvSWNvblBpcGUsXG4gIEFsYXJtU2V2ZXJpdHlUb0xhYmVsUGlwZSxcbiAgQWxhcm1zTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm1zJztcbmltcG9ydCB7IEludGVydmFsLCBJTlRFUlZBTFMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jaGFydHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRzLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR1hfRUNIQVJUU19DT05GSUcsIHVzZUZhY3Rvcnk6ICgpID0+ICh7IGVjaGFydHM6ICgpID0+IGltcG9ydCgnZWNoYXJ0cycpIH0pIH0sXG4gICAgQ2hhcnRSZWFsdGltZVNlcnZpY2UsXG4gICAgTWVhc3VyZW1lbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgQWxhcm1SZWFsdGltZVNlcnZpY2UsXG4gICAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgQ2hhcnRUeXBlc1NlcnZpY2UsXG4gICAgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlLFxuICAgIEN1c3RvbU1lYXN1cmVtZW50U2VydmljZSxcbiAgICBZQXhpc1NlcnZpY2UsXG4gICAgQWxhcm1TZXZlcml0eVRvSWNvblBpcGUsXG4gICAgQWxhcm1TZXZlcml0eVRvTGFiZWxQaXBlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBOZ3hFY2hhcnRzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBDaGFydEFsZXJ0c0NvbXBvbmVudCxcbiAgICBBbGFybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2hhcnRPcHRpb24kOiBPYnNlcnZhYmxlPEVDaGFydHNPcHRpb24+O1xuICBlY2hhcnRzSW5zdGFuY2UhOiBFQ2hhcnRzO1xuICBzaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgYWxhcm1zOiBJQWxhcm1bXSA9IFtdO1xuICBldmVudHM6IElFdmVudFtdID0gW107XG4gIHNsaWRlclpvb21Vc2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZztcbiAgQElucHV0KCkgYWxlcnRzITogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcbiAgQE91dHB1dCgpIGNvbmZpZ0NoYW5nZU9uWm9vbU91dCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGRhdGVGcm9tOiBEYXRlO1xuICAgIGRhdGVUbzogRGF0ZTtcbiAgICBpbnRlcnZhbD86IEludGVydmFsWydpZCddO1xuICB9PigpO1xuICBAT3V0cHV0KCkgdGltZVJhbmdlQ2hhbmdlT25SZWFsdGltZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgUGljazxEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWcsICdkYXRlRnJvbScgfCAnZGF0ZVRvJz5cbiAgPigpO1xuICBAT3V0cHV0KCkgZGF0YXBvaW50T3V0T2ZTeW5jID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzPigpO1xuICBAT3V0cHV0KCkgdXBkYXRlQWxhcm1zQW5kRXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnRFeHRlbmRlZFtdPigpO1xuICBAT3V0cHV0KCkgaXNNYXJrZWRBcmVhRW5hYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKSBjaGFydDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjb25maWdDaGFuZ2VkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZCB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVhc3VyZW1lbnRTZXJ2aWNlID0gaW5qZWN0KEN1c3RvbU1lYXN1cmVtZW50U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWNoYXJ0c09wdGlvbnNTZXJ2aWNlID0gaW5qZWN0KEVjaGFydHNPcHRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRSZWFsdGltZVNlcnZpY2UgPSBpbmplY3QoQ2hhcnRSZWFsdGltZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0RXZlbnRzU2VydmljZSA9IGluamVjdChDaGFydEV2ZW50c1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0QWxhcm1zU2VydmljZSA9IGluamVjdChDaGFydEFsYXJtc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZSA9IGluamVjdChXaWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UpO1xuICBwcml2YXRlIGxvYWRlZFRpbWVSYW5nZTogeyBkYXRlRnJvbTogc3RyaW5nOyBkYXRlVG86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jaGFydE9wdGlvbiQgPSB0aGlzLmNvbmZpZ0NoYW5nZWRTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkQWxhcm1zQW5kRXZlbnRzKCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCgpKSxcbiAgICAgIHN3aXRjaE1hcCgoZGF0YXBvaW50c1dpdGhWYWx1ZXM6IERwV2l0aFZhbHVlc1tdKSA9PiB7XG4gICAgICAgIGlmIChkYXRhcG9pbnRzV2l0aFZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZT8uY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLmdldERlZmF1bHRDaGFydE9wdGlvbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZWRUaW1lUmFuZ2UgPSB7IC4uLnRoaXMuZ2V0VGltZVJhbmdlKCkgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hhcnRPcHRpb25zKGRhdGFwb2ludHNXaXRoVmFsdWVzKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKHYgPT4ge1xuICAgICAgICBpZiAodlsnZW1wdHknXSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYXJ0UmVhbHRpbWVTZXJ2aWNlLnN0b3BSZWFsdGltZSgpO1xuICAgICAgICB0aGlzLnN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWNoYXJ0c0luc3RhbmNlKSB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogKiBTZXQgdGhlIGNoYXJ0IG9wdGlvbnNcbiAgICAgICAgICAgKiBGaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG9wdGlvbnMgdG8gc2V0XG4gICAgICAgICAgICogU2Vjb25kIHBhcmFtZXRlciBpcyBhIGJvb2xlYW4gdG8gaW5kaWNhdGUgdGhhdCB0aGUgY2hhcnQgc2hvdWxkIGJlIHJlLXJlbmRlcmVkIGFzIHdlIGRvIG5vdCB3YW50IHRvIG1lcmdlLlxuICAgICAgICAgICAqIFRoaXJkIHBhcmFtZXRlciBpcyBhIGJvb2xlYW4gdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRvIGxhenkgbG9hZCB0aGUgY2hhcnQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHYsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICAgICAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgICAgICAgaWYgKGRhdGFab29tLnN0YXJ0ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNsaWRlclpvb21Vc2VkID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRpbWVSYW5nZSA9IHRoaXMuZ2V0VGltZVJhbmdlKCk7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGltZSByYW5nZSBpcyB3aXRoaW4gdGhlIGxvYWRlZCB0aW1lIHJhbmdlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHVwZGF0ZXNcbiAgICBpZiAoXG4gICAgICB0aGlzLmxvYWRlZFRpbWVSYW5nZSAmJlxuICAgICAgbmV3IERhdGUoY3VycmVudFRpbWVSYW5nZS5kYXRlRnJvbSkgPj0gbmV3IERhdGUodGhpcy5sb2FkZWRUaW1lUmFuZ2UuZGF0ZUZyb20pICYmXG4gICAgICBuZXcgRGF0ZShjdXJyZW50VGltZVJhbmdlLmRhdGVUbykgPD0gbmV3IERhdGUodGhpcy5sb2FkZWRUaW1lUmFuZ2UuZGF0ZVRvKSAmJlxuICAgICAgY2hhbmdlcy5jb25maWcucHJldmlvdXNWYWx1ZT8uZGF0ZUZyb20gIT09IGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZS5kYXRlRnJvbSAmJlxuICAgICAgY2hhbmdlcy5jb25maWcucHJldmlvdXNWYWx1ZT8uZGF0ZVRvICE9PSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZVRvXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlnQ2hhbmdlZFN1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYWxlcnRzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydEdyb3VwRGlzbWlzc1N0cmF0ZWd5KFxuICAgICAgICAnd2FybmluZycsXG4gICAgICAgIERpc21pc3NBbGVydFN0cmF0ZWd5LlRFTVBPUkFSWV9PUl9QRVJNQU5FTlRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIG9uQ2hhcnRJbml0KGVjOiBFQ2hhcnRzKSB7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UgPSBlYztcbiAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5lY2hhcnRzSW5zdGFuY2UgPSB0aGlzLmVjaGFydHNJbnN0YW5jZTtcbiAgICB0aGlzLnN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk7XG5cbiAgICBjb25zdCBkYXRhWm9vbUhhbmRsZXIgPSAoZXZ0OiBFQ0FjdGlvbkV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZ0LmJhdGNoPy5bMF0/LnN0YXJ0ID09PSAwIHx8IGV2dFsnc3RhcnQnXSA9PT0gMCkge1xuICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICAgIGNvbnN0IGRhdGFab29tID0gb3B0aW9uc1snZGF0YVpvb20nXVswXTtcbiAgICAgIHRoaXMuc2xpZGVyWm9vbVVzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jb25maWdDaGFuZ2VPblpvb21PdXQuZW1pdCh7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZShkYXRhWm9vbVsnc3RhcnRWYWx1ZSddKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShkYXRhWm9vbVsnZW5kVmFsdWUnXSksXG4gICAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24ob3B0aW9ucyk7XG4gICAgICB0aGlzLmNoYXJ0UmVhbHRpbWVTZXJ2aWNlLnN0b3BSZWFsdGltZSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZWJvdW5jZWREYXRhWm9vbUhhbmRsZXIgPSB0aGlzLmNvbmZpZy5yZWFsdGltZVxuICAgICAgPyBkYXRhWm9vbUhhbmRsZXJcbiAgICAgIDogdGhpcy5kZWJvdW5jZShkYXRhWm9vbUhhbmRsZXIsIDEwMDApO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ2RhdGFab29tJywgZGVib3VuY2VkRGF0YVpvb21IYW5kbGVyKTtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5vbignY2xpY2snLCB0aGlzLm9uQ2hhcnRDbGljay5iaW5kKHRoaXMpKTtcblxuICAgIGxldCBvcmlnaW5hbEZvcm1hdHRlcjpcbiAgICAgIHwgVG9vbHRpcEZvcm1hdHRlckNhbGxiYWNrPFRvcExldmVsRm9ybWF0dGVyUGFyYW1zPlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgbnVsbFxuICAgICAgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ21vdXNlb3ZlcicsIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHBhcmFtcz8uY29tcG9uZW50VHlwZSAhPT0gJ21hcmtMaW5lJyAmJiBwYXJhbXM/LmNvbXBvbmVudFR5cGUgIT09ICdtYXJrUG9pbnQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpIGFzIEVDaGFydHNPcHRpb247XG4gICAgICBpZiAoIW9wdGlvbnMudG9vbHRpcCB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnRvb2x0aXApIHx8ICFvcHRpb25zLnRvb2x0aXBbMF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb3JpZ2luYWxGb3JtYXR0ZXIgPSBvcmlnaW5hbEZvcm1hdHRlciA/PyBvcHRpb25zWyd0b29sdGlwJ11bMF0uZm9ybWF0dGVyO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3B0aW9uczogUGFydGlhbDxTZXJpZXNPcHRpb24+ID0geyB0b29sdGlwOiBvcHRpb25zWyd0b29sdGlwJ11bMF0gfTtcblxuICAgICAgaWYgKCF1cGRhdGVkT3B0aW9ucy50b29sdGlwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRPcHRpb25zLnRvb2x0aXAuZm9ybWF0dGVyID0gKHRvb2x0aXBQYXJhbXM6IENhbGxiYWNrRGF0YVBhcmFtcykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0VG9vbHRpcEZvcm1hdHRlckZvckFsYXJtQW5kRXZlbnRzKFxuICAgICAgICAgIHRvb2x0aXBQYXJhbXMsXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIHRoaXMuZXZlbnRzLFxuICAgICAgICAgIHRoaXMuYWxhcm1zXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24odXBkYXRlZE9wdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpIGFzIEVjaGFydHNDdXN0b21PcHRpb25zO1xuICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0dGVyKSB7XG4gICAgICAgIG9wdGlvbnNbJ3Rvb2x0aXAnXVswXS5mb3JtYXR0ZXIgPSBvcmlnaW5hbEZvcm1hdHRlcjtcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25DaGFydENsaWNrKHBhcmFtczogeyBkYXRhOiB7IGl0ZW1UeXBlOiBzdHJpbmcgfSB9KTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpO1xuICAgIGlmICghdGhpcy5pc0FsYXJtQ2xpY2socGFyYW1zKSkge1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHtcbiAgICAgICAgdG9vbHRpcDogeyB0cmlnZ2VyT246ICdtb3VzZW1vdmUnIH0sXG4gICAgICAgIHNlcmllczogW3sgbWFya0FyZWE6IHsgZGF0YTogW10gfSwgbWFya0xpbmU6IHsgZGF0YTogW10gfSB9XVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2xpY2tlZEFsYXJtcyA9IHRoaXMuYWxhcm1zLmZpbHRlcihhbGFybSA9PiBhbGFybS50eXBlID09PSBwYXJhbXMuZGF0YS5pdGVtVHlwZSk7XG5cbiAgICB0aGlzLmlzTWFya2VkQXJlYUVuYWJsZWQuZW1pdCh0aGlzLmhhc01hcmtBcmVhKG9wdGlvbnMpKTtcbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9ICF0aGlzLmhhc01hcmtBcmVhKG9wdGlvbnMpXG4gICAgICA/IHtcbiAgICAgICAgICB0b29sdGlwOiB7IGVudGVyYWJsZTogdHJ1ZSwgdHJpZ2dlck9uOiAnY2xpY2snIH0sXG4gICAgICAgICAgc2VyaWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmtBcmVhOiB7IGxhYmVsOiB7IHNob3c6IGZhbHNlIH0sIGRhdGE6IHRoaXMuZ2V0TWFya2VkQXJlYURhdGEoY2xpY2tlZEFsYXJtcykgfSxcbiAgICAgICAgICAgICAgbWFya0xpbmU6IHtcbiAgICAgICAgICAgICAgICBzaG93U3ltYm9sOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN5bWJvbDogWydub25lJywgJ25vbmUnXSxcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLmdldE1hcmtlZExpbmVEYXRhKGNsaWNrZWRBbGFybXMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIDogLy8gaWYgbWFya0FyZWEgYWxyZWFkeSBleGlzdHMsIHJlbW92ZSBpdCBhbmQgcmVtb3ZlIGxhc3RVcGRhdGVkIGZyb20gbWFya0xpbmVcbiAgICAgICAge1xuICAgICAgICAgIHRvb2x0aXA6IHsgdHJpZ2dlck9uOiAnbW91c2Vtb3ZlJyB9LFxuICAgICAgICAgIHNlcmllczogW3sgbWFya0FyZWE6IHsgZGF0YTogW10gfSwgbWFya0xpbmU6IHsgZGF0YTogW10gfSB9XVxuICAgICAgICB9O1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHVwZGF0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIGlzQWxhcm1DbGljayhwYXJhbXM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsYXJtcy5zb21lKGFsYXJtID0+IGFsYXJtLnR5cGUgPT09IHBhcmFtcy5kYXRhLml0ZW1UeXBlKTtcbiAgfVxuXG4gIGhhc01hcmtBcmVhKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvcHRpb25zPy5zZXJpZXM/LlswXT8ubWFya0FyZWE/LmRhdGE/Lmxlbmd0aCA+IDA7XG4gIH1cblxuICBzYXZlQXNJbWFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24oeyBsZWdlbmQ6IHsgc2hvdzogdHJ1ZSB9IH0pO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldERhdGFVUkwoe1xuICAgICAgcGl4ZWxSYXRpbzogMixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgICAgdHlwZTogJ3BuZydcbiAgICB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gJ2RhdGFwb2ludHMtZ3JhcGgtc2NyZWVuc2hvdCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24oeyBsZWdlbmQ6IHsgc2hvdzogZmFsc2UgfSB9KTtcbiAgfVxuXG4gIGxvYWRNb3JlRGF0YSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VGltZVJhbmdlSW5NcyA9IHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmNhbGN1bGF0ZUV4dGVuZGVkSW50ZXJ2YWxJbk1zKFxuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgfHwgJ2N1c3RvbScsXG4gICAgICB7XG4gICAgICAgIGRhdGVUbzogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVUbyxcbiAgICAgICAgZGF0ZUZyb206IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlRnJvbVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UudXBkYXRlSW5pdGlhbFRpbWVSYW5nZSh7XG4gICAgICBkYXRlRnJvbTogbmV3IERhdGUoXG4gICAgICAgIG5ldyBEYXRlKHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlRnJvbSkudmFsdWVPZigpIC1cbiAgICAgICAgICBjdXJyZW50VGltZVJhbmdlSW5NcyAvIDRcbiAgICAgICkudG9JU09TdHJpbmcoKSxcbiAgICAgIGRhdGVUbzogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVUbyxcbiAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgIH0pO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgdGhpcy5jb25maWdDaGFuZ2VPblpvb21PdXQuZW1pdCh7XG4gICAgICBkYXRlRnJvbTogbmV3IERhdGUoZGF0YVpvb21bJ3N0YXJ0VmFsdWUnXSksXG4gICAgICBkYXRlVG86IG5ldyBEYXRlKGRhdGFab29tWydlbmRWYWx1ZSddKSxcbiAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgIH0pO1xuICAgIHRoaXMuc2hvd0xvYWRNb3JlID0gZmFsc2U7XG4gIH1cblxuICBkZWJvdW5jZTxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPihcbiAgICBmdW5jOiBULFxuICAgIHdhaXQ6IG51bWJlclxuICApOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCB7XG4gICAgbGV0IHRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICAgIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZnVuYyguLi5hcmdzKSwgd2FpdCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgc2VyaWVzIGluIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGF0YXBvaW50LlxuICAgKiBAcGFyYW0gZGF0YXBvaW50IC0gVGhlIGRhdGFwb2ludCB0byB0b2dnbGUgdmlzaWJpbGl0eSBmb3IuXG4gICAqL1xuICB0b2dnbGVEYXRhcG9pbnRTZXJpZXNWaXNpYmlsaXR5KGRhdGFwb2ludDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIGNvbnN0IHNlcmllcyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpLnNlcmllcyBhcyAoU2VyaWVzT3B0aW9uICZcbiAgICAgIFNlcmllc0RhdGFwb2ludEluZm8pW107XG4gICAgY29uc3Qgc2VyaWVzVG9VcGRhdGUgPSBzZXJpZXMuZmluZChzID0+IHMuZGF0YXBvaW50TGFiZWwgPT09IGRhdGFwb2ludC5sYWJlbCk7XG4gICAgaWYgKHNlcmllc1RvVXBkYXRlKSB7XG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5kaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6ICdsZWdlbmRUb2dnbGVTZWxlY3QnLFxuICAgICAgICBuYW1lOiBzZXJpZXNUb1VwZGF0ZS5uYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBhIHNlcmllcyBpbiB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFsYXJtIG9yIGV2ZW50LlxuICAgKiBAcGFyYW0gYWxhcm1PckV2ZW50IC0gVGhlIGFsYXJtIG9yIGV2ZW50IHRvIHRvZ2dsZSB2aXNpYmlsaXR5IGZvci5cbiAgICovXG4gIHRvZ2dsZUFsYXJtRXZlbnRTZXJpZXNWaXNpYmlsaXR5KFxuICAgIGFsYXJtT3JFdmVudDogQWxhcm1EZXRhaWxzRXh0ZW5kZWQgfCBFdmVudERldGFpbHNFeHRlbmRlZFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZXJpZXMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKS5zZXJpZXMgYXMgKFNlcmllc09wdGlvbiAmXG4gICAgICBTZXJpZXNEYXRhcG9pbnRJbmZvKVtdO1xuICAgIGNvbnN0IHNlcmllc1RvVXBkYXRlID0gc2VyaWVzLmZpbHRlcihcbiAgICAgIHMgPT5cbiAgICAgICAgcy5uYW1lID09PSBgJHthbGFybU9yRXZlbnQubGFiZWx9LW1hcmtQb2ludGAgfHwgcy5uYW1lID09PSBgJHthbGFybU9yRXZlbnQubGFiZWx9LW1hcmtMaW5lYFxuICAgICk7XG4gICAgaWYgKHNlcmllc1RvVXBkYXRlKSB7XG4gICAgICBzZXJpZXNUb1VwZGF0ZS5mb3JFYWNoKHMgPT4ge1xuICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5kaXNwYXRjaEFjdGlvbih7XG4gICAgICAgICAgdHlwZTogJ2xlZ2VuZFRvZ2dsZVNlbGVjdCcsXG4gICAgICAgICAgbmFtZTogcy5uYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q2hhcnRPcHRpb25zKCk6IEVDaGFydHNPcHRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZToge1xuICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdObyBkYXRhIGF2YWlsYWJsZS4nKSxcbiAgICAgICAgbGVmdDogJ2NlbnRlcicsXG4gICAgICAgIHRvcDogJ2NlbnRlcicsXG4gICAgICAgIHRleHRTdHlsZTogeyBmb250U2l6ZTogMzAgfVxuICAgICAgfSxcbiAgICAgIGVtcHR5OiB0cnVlLFxuICAgICAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JywgZGF0YTogW10gfSxcbiAgICAgIHlBeGlzOiB7IHR5cGU6ICd2YWx1ZScgfSxcbiAgICAgIHNlcmllczogW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXJrZWRBcmVhRGF0YShjbGlja2VkQWxhcm1zOiBJQWxhcm1bXSkge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHRoaXMuZ2V0VGltZVJhbmdlKCk7XG4gICAgY29uc3QgY2xlYXJlZEFsYXJtQ29sb3IgPSAncmdiYSgyMjEsMjU1LDIyMSwxLjAwKSc7XG4gICAgY29uc3QgYWN0aXZlQWxhcm1Db2xvciA9ICdyZ2JhKDI1NSwgMTczLCAxNzcsIDAuNCknO1xuXG4gICAgcmV0dXJuIGNsaWNrZWRBbGFybXMubWFwKGNsaWNrZWRBbGFybSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY2xpY2tlZEFsYXJtLnR5cGUsXG4gICAgICAgICAgeEF4aXM6IGNsaWNrZWRBbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgY2xpY2tlZEFsYXJtLnN0YXR1cyA9PT0gQWxhcm1TdGF0dXMuQ0xFQVJFRCA/IGNsZWFyZWRBbGFybUNvbG9yIDogYWN0aXZlQWxhcm1Db2xvclxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHhBeGlzOlxuICAgICAgICAgICAgY2xpY2tlZEFsYXJtWydsYXN0VXBkYXRlZCddID09PSBjbGlja2VkQWxhcm0uY3JlYXRpb25UaW1lIHx8XG4gICAgICAgICAgICBjbGlja2VkQWxhcm0uc3RhdHVzICE9PSBBbGFybVN0YXR1cy5DTEVBUkVEXG4gICAgICAgICAgICAgID8gdGltZVJhbmdlLmRhdGVUb1xuICAgICAgICAgICAgICA6IGNsaWNrZWRBbGFybVsnbGFzdFVwZGF0ZWQnXVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXJrZWRMaW5lRGF0YShjbGlja2VkQWxhcm1zOiBJQWxhcm1bXSkge1xuICAgIHJldHVybiBjbGlja2VkQWxhcm1zLnJlZHVjZTxNYXJrTGluZURhdGFbXT4oKGFjYywgYWxhcm0pID0+IHtcbiAgICAgIGNvbnN0IGlzQ2xpY2tlZEFsYXJtQ2xlYXJlZCA9IGFsYXJtLnN0YXR1cyA9PT0gQWxhcm1TdGF0dXMuQ0xFQVJFRDtcbiAgICAgIGlmIChpc0NsaWNrZWRBbGFybUNsZWFyZWQpIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHhBeGlzOiBhbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgICBpdGVtVHlwZTogYWxhcm0udHlwZSxcbiAgICAgICAgICAgIGxhYmVsOiB7IHNob3c6IGZhbHNlLCBmb3JtYXR0ZXI6ICgpID0+IGFsYXJtLnR5cGUgfSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogYWxhcm1bJ2NvbG9yJ10gfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeEF4aXM6IGFsYXJtWydsYXN0VXBkYXRlZCddLFxuICAgICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgICBpdGVtU3R5bGU6IHsgY29sb3I6IGFsYXJtWydjb2xvciddIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW1xuICAgICAgICB7XG4gICAgICAgICAgeEF4aXM6IGFsYXJtLmNyZWF0aW9uVGltZSxcbiAgICAgICAgICBpdGVtVHlwZTogYWxhcm0udHlwZSxcbiAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBhbGFybVsnY29sb3InXSB9XG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEFsYXJtc0FuZEV2ZW50cyhjdXN0b21UaW1lUmFuZ2U/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IHVwZGF0ZWRUaW1lUmFuZ2UgPSB7XG4gICAgICBsYXN0VXBkYXRlZEZyb206IGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZS5kYXRlRnJvbSA6IHRpbWVSYW5nZS5kYXRlRnJvbSxcbiAgICAgIGNyZWF0ZWRUbzogY3VzdG9tVGltZVJhbmdlID8gY3VzdG9tVGltZVJhbmdlLmRhdGVUbyA6IHRpbWVSYW5nZS5kYXRlVG9cbiAgICB9O1xuICAgIGlmICghdGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncykgcmV0dXJuO1xuICAgIGNvbnN0IHZpc2libGVBbGFybXNPckV2ZW50cyA9IHRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3M/LmZpbHRlcihcbiAgICAgIGFsYXJtT3JFdmVudCA9PiAhYWxhcm1PckV2ZW50Ll9faGlkZGVuICYmIGFsYXJtT3JFdmVudC5fX2FjdGl2ZVxuICAgICk7XG4gICAgY29uc3QgYWxhcm1zID0gdmlzaWJsZUFsYXJtc09yRXZlbnRzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gYWxhcm1PckV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0FMQVJNJ1xuICAgICkgYXMgQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXTtcbiAgICBjb25zdCBldmVudHMgPSB2aXNpYmxlQWxhcm1zT3JFdmVudHM/LmZpbHRlcihcbiAgICAgIGFsYXJtT3JFdmVudCA9PiBhbGFybU9yRXZlbnQudGltZWxpbmVUeXBlID09PSAnRVZFTlQnXG4gICAgKSBhcyBFdmVudERldGFpbHNFeHRlbmRlZFtdO1xuXG4gICAgY29uc3QgW2xpc3RlZEV2ZW50cywgbGlzdGVkQWxhcm1zXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuY2hhcnRFdmVudHNTZXJ2aWNlLmxpc3RFdmVudHModXBkYXRlZFRpbWVSYW5nZSwgZXZlbnRzKSxcbiAgICAgIHRoaXMuY2hhcnRBbGFybXNTZXJ2aWNlLmxpc3RBbGFybXModXBkYXRlZFRpbWVSYW5nZSwgYWxhcm1zKVxuICAgIF0pO1xuXG4gICAgdGhpcy5ldmVudHMgPSBsaXN0ZWRFdmVudHM7XG4gICAgdGhpcy5hbGFybXMgPSBsaXN0ZWRBbGFybXM7XG4gICAgYXdhaXQgdGhpcy5hZGRBY3RpdmVBbGFybXMoYWxhcm1zKTtcblxuICAgIHRoaXMudXBkYXRlQWxhcm1zQW5kRXZlbnRzLmVtaXQodGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHMgPSB0aGlzLmNvbmZpZz8uZGF0YXBvaW50cz8uZmlsdGVyKGRwID0+IGRwLl9fYWN0aXZlKTtcbiAgICBpZiAoYWN0aXZlRGF0YXBvaW50cyAmJiB0aGlzLmNvbmZpZy5yZWFsdGltZSAmJiB0aGlzLmVjaGFydHNJbnN0YW5jZSkge1xuICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdGFydFJlYWx0aW1lKFxuICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZSxcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50cyxcbiAgICAgICAgdGhpcy5nZXRUaW1lUmFuZ2UoKSxcbiAgICAgICAgZHAgPT4gdGhpcy5kYXRhcG9pbnRPdXRPZlN5bmMuZW1pdChkcCksXG4gICAgICAgIHRpbWVSYW5nZSA9PiB0aGlzLnRpbWVSYW5nZUNoYW5nZU9uUmVhbHRpbWUuZW1pdCh0aW1lUmFuZ2UpLFxuICAgICAgICB0aGlzLmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLFxuICAgICAgICB7XG4gICAgICAgICAgZGlzcGxheU1hcmtlZExpbmU6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRMaW5lIHx8IGZhbHNlLFxuICAgICAgICAgIGRpc3BsYXlNYXJrZWRQb2ludDogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZFBvaW50IHx8IGZhbHNlLFxuICAgICAgICAgIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBmb3JjZU1lcmdlRGF0YXBvaW50czogdGhpcy5jb25maWcuZm9yY2VNZXJnZURhdGFwb2ludHMgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd0xhYmVsQW5kVW5pdDogdGhpcy5jb25maWcuc2hvd0xhYmVsQW5kVW5pdCB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93U2xpZGVyOiB0aGlzLmNvbmZpZy5zaG93U2xpZGVyIHx8IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgVGhpcyBtZXRob2Qgc2hvdWxkIGNoZWNrIGFuZCBhZGQgYWN0aXZlIGFsYXJtcyBmcm9tIHRoZSBiZWdpbmluZyBvZiB0aW1lIHRvIHRoZSBhbGFybSBhcnJheVxuICAqL1xuICBwcml2YXRlIGFzeW5jIGFkZEFjdGl2ZUFsYXJtcyhhbGFybXM6IEFsYXJtRGV0YWlsc0V4dGVuZGVkW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGRhdGVGcm9tOiAnMTk3MC0wMS0wMVQwMTowMDowMCswMTowMCcsXG4gICAgICBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG8sXG4gICAgICBzdGF0dXM6IEFsYXJtU3RhdHVzLkFDVElWRVxuICAgIH07XG5cbiAgICBjb25zdCBhY3RpdmVBbGFybXMgPSBhd2FpdCB0aGlzLmNoYXJ0QWxhcm1zU2VydmljZS5saXN0QWxhcm1zKHBhcmFtcywgYWxhcm1zKTtcbiAgICB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSA9IFtdO1xuICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYWN0aXZlQWxhcm1zIGFuZCBjaGVjayBpZiB0aGUgYWxhcm0gaXMgaW4gdGhlIGFsYXJtcyBhcnJheSwgaWYgbm90IHVwZGF0ZSB0aGUgY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlIHByb3BcbiAgICBhY3RpdmVBbGFybXMuZm9yRWFjaChhY3RpdmVBbGFybSA9PiB7XG4gICAgICBjb25zdCBhbGFybVR5cGUgPSBhY3RpdmVBbGFybS50eXBlO1xuICAgICAgY29uc3QgYWxhcm0gPSB0aGlzLmFsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLnR5cGUgPT09IGFsYXJtVHlwZSk7XG4gICAgICBpZiAoIWFsYXJtICYmIHRoaXMuY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlLnB1c2goYWxhcm1UeXBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2hhcnRPcHRpb25zKGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSk6IFByb21pc2U8RUNoYXJ0c09wdGlvbj4ge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHsgLi4udGhpcy5nZXRUaW1lUmFuZ2UoKSwgaW50ZXJ2YWw6IHRoaXMuY29uZmlnLmludGVydmFsIH07XG4gICAgaWYgKCF0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkpIHtcbiAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLnVwZGF0ZUluaXRpYWxUaW1lUmFuZ2UodGltZVJhbmdlKTtcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWREYXRhcG9pbnRzID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5mZXRjaFNlcmllc0ZvckRhdGFwb2ludHMkKHtcbiAgICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUoXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZUZyb20pLnZhbHVlT2YoKSAtXG4gICAgICAgICAgICAgIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmNhbGN1bGF0ZUV4dGVuZGVkSW50ZXJ2YWxJbk1zKFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgIHsgZGF0ZUZyb206IHRpbWVSYW5nZS5kYXRlRnJvbSwgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG9cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0Q2hhcnRPcHRpb25zKFxuICAgICAgICBkYXRhcG9pbnRzV2l0aFZhbHVlcyxcbiAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICB7XG4gICAgICAgICAgWUF4aXM6IHRoaXMuY29uZmlnLnlBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZSxcbiAgICAgICAgICBYQXhpczogdGhpcy5jb25maWcueEF4aXNTcGxpdExpbmVzIHx8IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZXZlbnRzLFxuICAgICAgICB0aGlzLmFsYXJtcyxcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXlNYXJrZWRMaW5lOiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkTGluZSB8fCBmYWxzZSxcbiAgICAgICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRQb2ludCB8fCBmYWxzZSxcbiAgICAgICAgICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogdGhpcy5jb25maWcubWVyZ2VNYXRjaGluZ0RhdGFwb2ludHMgfHwgZmFsc2UsXG4gICAgICAgICAgZm9yY2VNZXJnZURhdGFwb2ludHM6IHRoaXMuY29uZmlnLmZvcmNlTWVyZ2VEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IHRoaXMuY29uZmlnLnNob3dMYWJlbEFuZFVuaXQgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd1NsaWRlcjogdGhpcy5jb25maWcuc2hvd1NsaWRlciB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRlRnJvbTogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tLFxuICAgICAgICAgICAgICAgICAgZGF0ZVRvOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGRhdGVUbzogbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIGZvcmNlTWVyZ2VEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5mb3JjZU1lcmdlRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93TGFiZWxBbmRVbml0OiB0aGlzLmNvbmZpZy5zaG93TGFiZWxBbmRVbml0IHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dTbGlkZXI6IHRoaXMuY29uZmlnLnNob3dTbGlkZXIgfHwgZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICBhZ2dyZWdhdGVkRGF0YXBvaW50cyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZldGNoU2VyaWVzRm9yRGF0YXBvaW50cyQoY3VzdG9tVGltZVJhbmdlPzogYW55KTogT2JzZXJ2YWJsZTxEcFdpdGhWYWx1ZXNbXT4ge1xuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHMgPSB0aGlzLmNvbmZpZz8uZGF0YXBvaW50cz8uZmlsdGVyKGRwID0+IGRwLl9fYWN0aXZlKTtcbiAgICBpZiAoIWFjdGl2ZURhdGFwb2ludHMgfHwgYWN0aXZlRGF0YXBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHM6IE9ic2VydmFibGU8RHBXaXRoVmFsdWVzPltdID0gW107XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoNjBfMDAwKTtcbiAgICBmb3IgKGNvbnN0IGRwIG9mIGFjdGl2ZURhdGFwb2ludHMpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLm1lYXN1cmVtZW50U2VydmljZVxuICAgICAgICAubGlzdFNlcmllcyQoe1xuICAgICAgICAgIC4uLihjdXN0b21UaW1lUmFuZ2UgPyBjdXN0b21UaW1lUmFuZ2UgOiB0aW1lUmFuZ2UpLFxuICAgICAgICAgIHNvdXJjZTogZHAuX190YXJnZXQ/LmlkIHx8ICcnLFxuICAgICAgICAgIHNlcmllczogW2Ake2RwLmZyYWdtZW50fS4ke2RwLnNlcmllc31gXSxcbiAgICAgICAgICAuLi4odGhpcy5jb25maWcuYWdncmVnYXRpb24gfHwgY3VzdG9tVGltZVJhbmdlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvblR5cGU6IGN1c3RvbVRpbWVSYW5nZSA/IGFnZ3JlZ2F0aW9uVHlwZS5IT1VSTFkgOiB0aGlzLmNvbmZpZy5hZ2dyZWdhdGlvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHJlcy5kYXRhLnZhbHVlcztcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YS50cnVuY2F0ZWQgJiYgdGhpcy5jb25maWcuZGF0ZUZyb20pIHtcbiAgICAgICAgICAgICAgdmFsdWVzW25ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tKS50b0lTT1N0cmluZygpXSA9IFt7IG1pbjogbnVsbCwgbWF4OiBudWxsIH1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWxlcnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydHMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uZHAsIHZhbHVlcywgdHJ1bmNhdGVkOiByZXMuZGF0YS50cnVuY2F0ZWQgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICBkYXRhcG9pbnRzV2l0aFZhbHVlc1JlcXVlc3RzLnB1c2gocmVxdWVzdCk7XG4gICAgfVxuICAgIHJldHVybiBmb3JrSm9pbihkYXRhcG9pbnRzV2l0aFZhbHVlc1JlcXVlc3RzKS5waXBlKFxuICAgICAgdGFwKChkcHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSkgPT4ge1xuICAgICAgICBpZiAoZHBzV2l0aFZhbHVlcy5zb21lKGRwID0+IGRwWyd0cnVuY2F0ZWQnXSkpIHtcbiAgICAgICAgICB0aGlzLmFkZFRydW5jYXRlZERhdGFBbGVydCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRydW5jYXRlZERhdGFBbGVydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGVydHM/LmFsZXJ0R3JvdXBzLmZpbmQoYSA9PiBhLnR5cGUgPT09ICd3YXJuaW5nJyk/LnZhbHVlPy5hbGVydHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhbGVydCA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnVHJ1bmNhdGVkIGRhdGEuIENoYW5nZSBhZ2dyZWdhdGlvbiBvciBzZWxlY3Qgc2hvcnRlciBkYXRlIHJhbmdlLicpXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsZXJ0cz8uYWRkQWxlcnRzKGFsZXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGltZVJhbmdlKGFkZGl0aW9uYWxQYWRkaW5nPzogbnVtYmVyKTogeyBkYXRlRnJvbTogc3RyaW5nOyBkYXRlVG86IHN0cmluZyB9IHtcbiAgICBsZXQgdGltZVJhbmdlOiB7IGRhdGVGcm9tOiBEYXRlOyBkYXRlVG86IERhdGUgfTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0IHx8XG4gICAgICAodGhpcy5jb25maWcuaW50ZXJ2YWwgPT09ICdjdXN0b20nICYmICF0aGlzLmNvbmZpZy5yZWFsdGltZSlcbiAgICApIHtcbiAgICAgIHRpbWVSYW5nZSA9IHtcbiAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tIGFzIERhdGUpLFxuICAgICAgICBkYXRlVG86IG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVUbyBhcyBEYXRlKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRpbWVSYW5nZUluTXMgPSAwO1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmludGVydmFsICYmIHRoaXMuY29uZmlnLmludGVydmFsICE9PSAnY3VzdG9tJykge1xuICAgICAgICB0aW1lUmFuZ2VJbk1zID0gSU5URVJWQUxTLmZpbmQoaSA9PiBpLmlkID09PSB0aGlzLmNvbmZpZy5pbnRlcnZhbCk/LnRpbWVzcGFuSW5NcyB8fCAwO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5yZWFsdGltZSkge1xuICAgICAgICB0aW1lUmFuZ2VJbk1zID1cbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlVG8gYXMgRGF0ZSkudmFsdWVPZigpIC1cbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlRnJvbSBhcyBEYXRlKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGltZVJhbmdlID0geyBkYXRlRnJvbTogbmV3IERhdGUobm93LnZhbHVlT2YoKSAtIHRpbWVSYW5nZUluTXMpLCBkYXRlVG86IG5vdyB9O1xuICAgIH1cbiAgICBpZiAoYWRkaXRpb25hbFBhZGRpbmcpIHtcbiAgICAgIHRpbWVSYW5nZS5kYXRlRnJvbSA9IG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlRnJvbS52YWx1ZU9mKCkgLSBhZGRpdGlvbmFsUGFkZGluZyk7XG4gICAgICB0aW1lUmFuZ2UuZGF0ZVRvID0gbmV3IERhdGUodGltZVJhbmdlLmRhdGVUby52YWx1ZU9mKCkgKyBhZGRpdGlvbmFsUGFkZGluZyk7XG4gICAgfVxuICAgIHJldHVybiB7IGRhdGVGcm9tOiB0aW1lUmFuZ2UuZGF0ZUZyb20udG9JU09TdHJpbmcoKSwgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvLnRvSVNPU3RyaW5nKCkgfTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInAtcmVsYXRpdmUgZml0LWggY2hhcnQtY29udGFpbmVyXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZml0LXcgZml0LWhcIlxuICAgICNjaGFydFxuICAgIGVjaGFydHNcbiAgICBbb3B0aW9uc109XCJjaGFydE9wdGlvbiQgfCBhc3luY1wiXG4gICAgKGNoYXJ0SW5pdCk9XCJvbkNoYXJ0SW5pdCgkZXZlbnQpXCJcbiAgPjwvZGl2PlxuXG4gIDxjOHktY2hhcnQtYWxlcnRzIFthbGVydHNdPVwiYWxlcnRzXCI+PC9jOHktY2hhcnQtYWxlcnRzPlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93TG9hZE1vcmVcIiBjbGFzcz1cImNoYXJ0LWxvYWQtbW9yZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBidG4tYmxvY2tcIlxuICAgICAgKGNsaWNrKT1cImxvYWRNb3JlRGF0YSgpXCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwicmVzdG9yZVwiPjwvaT5cbiAgICAgIHt7ICdMb2FkIG1vcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
553
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2VjaGFydC9jaGFydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZWNoYXJ0L2NoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQVl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBTXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxh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bnkgKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRUNoYXJ0cywgRUNoYXJ0c09wdGlvbiwgU2VyaWVzT3B0aW9uIH0gZnJvbSAnZWNoYXJ0cyc7XG5pbXBvcnQge1xuICBBbGFybURldGFpbHNFeHRlbmRlZCxcbiAgQWxhcm1PckV2ZW50RXh0ZW5kZWQsXG4gIERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMsXG4gIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyxcbiAgRHBXaXRoVmFsdWVzLFxuICBFdmVudERldGFpbHNFeHRlbmRlZCxcbiAgTWFya0xpbmVEYXRhLFxuICBTZXJpZXNEYXRhcG9pbnRJbmZvXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3VzdG9tTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20tbWVhc3VyZW1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWxhcm1SZWFsdGltZVNlcnZpY2UsXG4gIENvcmVNb2R1bGUsXG4gIERpc21pc3NBbGVydFN0cmF0ZWd5LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSxcbiAgV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lY2hhcnRzLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFJlYWx0aW1lU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtcmVhbHRpbWUuc2VydmljZSc7XG5pbXBvcnQgdHlwZSB7XG4gIENhbGxiYWNrRGF0YVBhcmFtcyxcbiAgRUNBY3Rpb25FdmVudCxcbiAgVG9vbHRpcEZvcm1hdHRlckNhbGxiYWNrXG59IGZyb20gJ2VjaGFydHMvdHlwZXMvc3JjL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgQ2hhcnRUeXBlc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NoYXJ0LXR5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5HWF9FQ0hBUlRTX0NPTkZJRywgTmd4RWNoYXJ0c01vZHVsZSB9IGZyb20gJ25neC1lY2hhcnRzJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBZQXhpc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ktYXhpcy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0QWxlcnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1hbGVydHMvY2hhcnQtYWxlcnRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUsIEFsYXJtU3RhdHVzLCBJQWxhcm0sIElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IENoYXJ0RXZlbnRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRBbGFybXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1hbGFybXMuc2VydmljZSc7XG5pbXBvcnQgeyBFY2hhcnRzQ3VzdG9tT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL2NoYXJ0Lm1vZGVsJztcbmltcG9ydCB7IFRvcExldmVsRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29tcG9uZW50L3Rvb2x0aXAvVG9vbHRpcE1vZGVsJztcbmltcG9ydCB7XG4gIEFsYXJtU2V2ZXJpdHlUb0ljb25QaXBlLFxuICBBbGFybVNldmVyaXR5VG9MYWJlbFBpcGUsXG4gIEFsYXJtc01vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQgeyBJbnRlcnZhbCwgSU5URVJWQUxTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY2hhcnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdYX0VDSEFSVFNfQ09ORklHLCB1c2VGYWN0b3J5OiAoKSA9PiAoeyBlY2hhcnRzOiAoKSA9PiBpbXBvcnQoJ2VjaGFydHMnKSB9KSB9LFxuICAgIENoYXJ0UmVhbHRpbWVTZXJ2aWNlLFxuICAgIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIENoYXJ0VHlwZXNTZXJ2aWNlLFxuICAgIEVjaGFydHNPcHRpb25zU2VydmljZSxcbiAgICBDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UsXG4gICAgWUF4aXNTZXJ2aWNlLFxuICAgIEFsYXJtU2V2ZXJpdHlUb0ljb25QaXBlLFxuICAgIEFsYXJtU2V2ZXJpdHlUb0xhYmVsUGlwZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgTmd4RWNoYXJ0c01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgQ2hhcnRBbGVydHNDb21wb25lbnQsXG4gICAgQWxhcm1zTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNoYXJ0T3B0aW9uJDogT2JzZXJ2YWJsZTxFQ2hhcnRzT3B0aW9uPjtcbiAgZWNoYXJ0c0luc3RhbmNlITogRUNoYXJ0cztcbiAgc2hvd0xvYWRNb3JlID0gZmFsc2U7XG4gIGFsYXJtczogSUFsYXJtW10gPSBbXTtcbiAgZXZlbnRzOiBJRXZlbnRbXSA9IFtdO1xuICBzbGlkZXJab29tVXNlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb25maWchOiBEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWc7XG4gIEBJbnB1dCgpIGFsZXJ0cyE6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3I7XG4gIEBPdXRwdXQoKSBjb25maWdDaGFuZ2VPblpvb21PdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBkYXRlRnJvbTogRGF0ZTtcbiAgICBkYXRlVG86IERhdGU7XG4gICAgaW50ZXJ2YWw/OiBJbnRlcnZhbFsnaWQnXTtcbiAgfT4oKTtcbiAgQE91dHB1dCgpIHRpbWVSYW5nZUNoYW5nZU9uUmVhbHRpbWUgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFBpY2s8RGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLCAnZGF0ZUZyb20nIHwgJ2RhdGVUbyc+XG4gID4oKTtcbiAgQE91dHB1dCgpIGRhdGFwb2ludE91dE9mU3luYyA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscz4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFsYXJtc0FuZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8QWxhcm1PckV2ZW50RXh0ZW5kZWRbXT4oKTtcbiAgQE91dHB1dCgpIGlzTWFya2VkQXJlYUVuYWJsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JykgY2hhcnQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY29uZmlnQ2hhbmdlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1lYXN1cmVtZW50U2VydmljZSA9IGluamVjdChDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVjaGFydHNPcHRpb25zU2VydmljZSA9IGluamVjdChFY2hhcnRzT3B0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0UmVhbHRpbWVTZXJ2aWNlID0gaW5qZWN0KENoYXJ0UmVhbHRpbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydEV2ZW50c1NlcnZpY2UgPSBpbmplY3QoQ2hhcnRFdmVudHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydEFsYXJtc1NlcnZpY2UgPSBpbmplY3QoQ2hhcnRBbGFybXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UgPSBpbmplY3QoV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2FkZWRUaW1lUmFuZ2U6IHsgZGF0ZUZyb206IHN0cmluZzsgZGF0ZVRvOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2hhcnRPcHRpb24kID0gdGhpcy5jb25maWdDaGFuZ2VkU3ViamVjdC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZEFsYXJtc0FuZEV2ZW50cygpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZldGNoU2VyaWVzRm9yRGF0YXBvaW50cyQoKSksXG4gICAgICBzd2l0Y2hNYXAoKGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSkgPT4ge1xuICAgICAgICBpZiAoZGF0YXBvaW50c1dpdGhWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2U/LmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy5nZXREZWZhdWx0Q2hhcnRPcHRpb25zKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVkVGltZVJhbmdlID0geyAuLi50aGlzLmdldFRpbWVSYW5nZSgpIH07XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoYXJ0T3B0aW9ucyhkYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgaWYgKHZbJ2VtcHR5J10pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgICAgICAgdGhpcy5zdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmVjaGFydHNJbnN0YW5jZSkge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqICogU2V0IHRoZSBjaGFydCBvcHRpb25zXG4gICAgICAgICAgICogRmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBvcHRpb25zIHRvIHNldFxuICAgICAgICAgICAqIFNlY29uZCBwYXJhbWV0ZXIgaXMgYSBib29sZWFuIHRvIGluZGljYXRlIHRoYXQgdGhlIGNoYXJ0IHNob3VsZCBiZSByZS1yZW5kZXJlZCBhcyB3ZSBkbyBub3Qgd2FudCB0byBtZXJnZS5cbiAgICAgICAgICAgKiBUaGlyZCBwYXJhbWV0ZXIgaXMgYSBib29sZWFuIHRvIGluZGljYXRlIHRoYXQgd2Ugd2FudCB0byBsYXp5IGxvYWQgdGhlIGNoYXJ0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih2LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgICAgICAgY29uc3QgZGF0YVpvb20gPSBvcHRpb25zWydkYXRhWm9vbSddWzBdO1xuICAgICAgICAgIGlmIChkYXRhWm9vbS5zdGFydCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zbGlkZXJab29tVXNlZCA9IGZhbHNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHRpbWUgcmFuZ2UgaXMgd2l0aGluIHRoZSBsb2FkZWQgdGltZSByYW5nZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB1cGRhdGVzXG4gICAgaWYgKFxuICAgICAgdGhpcy5sb2FkZWRUaW1lUmFuZ2UgJiZcbiAgICAgIG5ldyBEYXRlKGN1cnJlbnRUaW1lUmFuZ2UuZGF0ZUZyb20pID49IG5ldyBEYXRlKHRoaXMubG9hZGVkVGltZVJhbmdlLmRhdGVGcm9tKSAmJlxuICAgICAgbmV3IERhdGUoY3VycmVudFRpbWVSYW5nZS5kYXRlVG8pIDw9IG5ldyBEYXRlKHRoaXMubG9hZGVkVGltZVJhbmdlLmRhdGVUbykgJiZcbiAgICAgIGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/LmRhdGVGcm9tICE9PSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZUZyb20gJiZcbiAgICAgIGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/LmRhdGVUbyAhPT0gY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlLmRhdGVUb1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ0NoYW5nZWRTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmFsZXJ0cykge1xuICAgICAgdGhpcy5hbGVydHMuc2V0QWxlcnRHcm91cERpc21pc3NTdHJhdGVneShcbiAgICAgICAgJ3dhcm5pbmcnLFxuICAgICAgICBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUllfT1JfUEVSTUFORU5UXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2hhcnRSZWFsdGltZVNlcnZpY2Uuc3RvcFJlYWx0aW1lKCk7XG4gIH1cblxuICBvbkNoYXJ0SW5pdChlYzogRUNoYXJ0cykge1xuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlID0gZWM7XG4gICAgdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZWNoYXJ0c0luc3RhbmNlID0gdGhpcy5lY2hhcnRzSW5zdGFuY2U7XG4gICAgdGhpcy5zdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpO1xuXG4gICAgY29uc3QgZGF0YVpvb21IYW5kbGVyID0gKGV2dDogRUNBY3Rpb25FdmVudCkgPT4ge1xuICAgICAgaWYgKGV2dC5iYXRjaD8uWzBdPy5zdGFydCA9PT0gMCB8fCBldnRbJ3N0YXJ0J10gPT09IDApIHtcbiAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgICB0aGlzLnNsaWRlclpvb21Vc2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29uZmlnQ2hhbmdlT25ab29tT3V0LmVtaXQoe1xuICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUoZGF0YVpvb21bJ3N0YXJ0VmFsdWUnXSksXG4gICAgICAgIGRhdGVUbzogbmV3IERhdGUoZGF0YVpvb21bJ2VuZFZhbHVlJ10pLFxuICAgICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKG9wdGlvbnMpO1xuICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVib3VuY2VkRGF0YVpvb21IYW5kbGVyID0gdGhpcy5jb25maWcucmVhbHRpbWVcbiAgICAgID8gZGF0YVpvb21IYW5kbGVyXG4gICAgICA6IHRoaXMuZGVib3VuY2UoZGF0YVpvb21IYW5kbGVyLCAxMDAwKTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdkYXRhWm9vbScsIGRlYm91bmNlZERhdGFab29tSGFuZGxlcik7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ2NsaWNrJywgdGhpcy5vbkNoYXJ0Q2xpY2suYmluZCh0aGlzKSk7XG5cbiAgICBsZXQgb3JpZ2luYWxGb3JtYXR0ZXI6XG4gICAgICB8IFRvb2x0aXBGb3JtYXR0ZXJDYWxsYmFjazxUb3BMZXZlbEZvcm1hdHRlclBhcmFtcz5cbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IG51bGxcbiAgICAgIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdtb3VzZW92ZXInLCAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgIGlmIChwYXJhbXM/LmNvbXBvbmVudFR5cGUgIT09ICdtYXJrTGluZScgJiYgcGFyYW1zPy5jb21wb25lbnRUeXBlICE9PSAnbWFya1BvaW50Jykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKSBhcyBFQ2hhcnRzT3B0aW9uO1xuICAgICAgaWYgKCFvcHRpb25zLnRvb2x0aXAgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy50b29sdGlwKSB8fCAhb3B0aW9ucy50b29sdGlwWzBdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9yaWdpbmFsRm9ybWF0dGVyID0gb3JpZ2luYWxGb3JtYXR0ZXIgPz8gb3B0aW9uc1sndG9vbHRpcCddWzBdLmZvcm1hdHRlcjtcblxuICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnM6IFBhcnRpYWw8U2VyaWVzT3B0aW9uPiA9IHsgdG9vbHRpcDogb3B0aW9uc1sndG9vbHRpcCddWzBdIH07XG5cbiAgICAgIGlmICghdXBkYXRlZE9wdGlvbnMudG9vbHRpcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1cGRhdGVkT3B0aW9ucy50b29sdGlwLmZvcm1hdHRlciA9ICh0b29sdGlwUGFyYW1zOiBDYWxsYmFja0RhdGFQYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldFRvb2x0aXBGb3JtYXR0ZXJGb3JBbGFybUFuZEV2ZW50cyhcbiAgICAgICAgICB0b29sdGlwUGFyYW1zLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgICB0aGlzLmFsYXJtc1xuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHVwZGF0ZWRPcHRpb25zKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKSBhcyBFY2hhcnRzQ3VzdG9tT3B0aW9ucztcbiAgICAgIGlmIChvcmlnaW5hbEZvcm1hdHRlcikge1xuICAgICAgICBvcHRpb25zWyd0b29sdGlwJ11bMF0uZm9ybWF0dGVyID0gb3JpZ2luYWxGb3JtYXR0ZXI7XG4gICAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbihvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2hhcnRDbGljayhwYXJhbXM6IHsgZGF0YTogeyBpdGVtVHlwZTogc3RyaW5nIH0gfSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNBbGFybUNsaWNrKHBhcmFtcykpIHtcbiAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih7XG4gICAgICAgIHRvb2x0aXA6IHsgdHJpZ2dlck9uOiAnbW91c2Vtb3ZlJyB9LFxuICAgICAgICBzZXJpZXM6IFt7IG1hcmtBcmVhOiB7IGRhdGE6IFtdIH0sIG1hcmtMaW5lOiB7IGRhdGE6IFtdIH0gfV1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrZWRBbGFybXMgPSB0aGlzLmFsYXJtcy5maWx0ZXIoYWxhcm0gPT4gYWxhcm0udHlwZSA9PT0gcGFyYW1zLmRhdGEuaXRlbVR5cGUpO1xuXG4gICAgdGhpcy5pc01hcmtlZEFyZWFFbmFibGVkLmVtaXQodGhpcy5oYXNNYXJrQXJlYShvcHRpb25zKSk7XG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSAhdGhpcy5oYXNNYXJrQXJlYShvcHRpb25zKVxuICAgICAgPyB7XG4gICAgICAgICAgdG9vbHRpcDogeyBlbnRlcmFibGU6IHRydWUsIHRyaWdnZXJPbjogJ2NsaWNrJyB9LFxuICAgICAgICAgIHNlcmllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJrQXJlYTogeyBsYWJlbDogeyBzaG93OiBmYWxzZSB9LCBkYXRhOiB0aGlzLmdldE1hcmtlZEFyZWFEYXRhKGNsaWNrZWRBbGFybXMpIH0sXG4gICAgICAgICAgICAgIG1hcmtMaW5lOiB7XG4gICAgICAgICAgICAgICAgc2hvd1N5bWJvbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzeW1ib2w6IFsnbm9uZScsICdub25lJ10sXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5nZXRNYXJrZWRMaW5lRGF0YShjbGlja2VkQWxhcm1zKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICA6IC8vIGlmIG1hcmtBcmVhIGFscmVhZHkgZXhpc3RzLCByZW1vdmUgaXQgYW5kIHJlbW92ZSBsYXN0VXBkYXRlZCBmcm9tIG1hcmtMaW5lXG4gICAgICAgIHtcbiAgICAgICAgICB0b29sdGlwOiB7IHRyaWdnZXJPbjogJ21vdXNlbW92ZScgfSxcbiAgICAgICAgICBzZXJpZXM6IFt7IG1hcmtBcmVhOiB7IGRhdGE6IFtdIH0sIG1hcmtMaW5lOiB7IGRhdGE6IFtdIH0gfV1cbiAgICAgICAgfTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih1cGRhdGVkT3B0aW9ucyk7XG4gIH1cblxuICBpc0FsYXJtQ2xpY2socGFyYW1zOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGFybXMuc29tZShhbGFybSA9PiBhbGFybS50eXBlID09PSBwYXJhbXMuZGF0YS5pdGVtVHlwZSk7XG4gIH1cblxuICBoYXNNYXJrQXJlYShvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uc2VyaWVzPy5bMF0/Lm1hcmtBcmVhPy5kYXRhPy5sZW5ndGggPiAwO1xuICB9XG5cbiAgc2F2ZUFzSW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHsgbGVnZW5kOiB7IHNob3c6IHRydWUgfSB9KTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXREYXRhVVJMKHtcbiAgICAgIHBpeGVsUmF0aW86IDIsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICAgIHR5cGU6ICdwbmcnXG4gICAgfSk7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgbGluay5kb3dubG9hZCA9ICdkYXRhcG9pbnRzLWdyYXBoLXNjcmVlbnNob3QnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHsgbGVnZW5kOiB7IHNob3c6IGZhbHNlIH0gfSk7XG4gIH1cblxuICBsb2FkTW9yZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRpbWVSYW5nZUluTXMgPSB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAge1xuICAgICAgICBkYXRlVG86IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlVG8sXG4gICAgICAgIGRhdGVGcm9tOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZUZyb21cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLnVwZGF0ZUluaXRpYWxUaW1lUmFuZ2Uoe1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICBuZXcgRGF0ZSh0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZUZyb20pLnZhbHVlT2YoKSAtXG4gICAgICAgICAgY3VycmVudFRpbWVSYW5nZUluTXMgLyA0XG4gICAgICApLnRvSVNPU3RyaW5nKCksXG4gICAgICBkYXRlVG86IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlVG8sXG4gICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICB9KTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgY29uc3QgZGF0YVpvb20gPSBvcHRpb25zWydkYXRhWm9vbSddWzBdO1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlT25ab29tT3V0LmVtaXQoe1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKGRhdGFab29tWydzdGFydFZhbHVlJ10pLFxuICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShkYXRhWm9vbVsnZW5kVmFsdWUnXSksXG4gICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICB9KTtcbiAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVib3VuY2U8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4oXG4gICAgZnVuYzogVCxcbiAgICB3YWl0OiBudW1iZXJcbiAgKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHZvaWQge1xuICAgIGxldCB0aW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZ1bmMoLi4uYXJncyksIHdhaXQpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBhIHNlcmllcyBpbiB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGRhdGFwb2ludC5cbiAgICogQHBhcmFtIGRhdGFwb2ludCAtIFRoZSBkYXRhcG9pbnQgdG8gdG9nZ2xlIHZpc2liaWxpdHkgZm9yLlxuICAgKi9cbiAgdG9nZ2xlRGF0YXBvaW50U2VyaWVzVmlzaWJpbGl0eShkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBjb25zdCBzZXJpZXMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKS5zZXJpZXMgYXMgKFNlcmllc09wdGlvbiAmXG4gICAgICBTZXJpZXNEYXRhcG9pbnRJbmZvKVtdO1xuICAgIGNvbnN0IHNlcmllc1RvVXBkYXRlID0gc2VyaWVzLmZpbmQocyA9PiBzLmRhdGFwb2ludExhYmVsID09PSBkYXRhcG9pbnQubGFiZWwpO1xuICAgIGlmIChzZXJpZXNUb1VwZGF0ZSkge1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UuZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiAnbGVnZW5kVG9nZ2xlU2VsZWN0JyxcbiAgICAgICAgbmFtZTogc2VyaWVzVG9VcGRhdGUubmFtZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBzZXJpZXMgaW4gdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhbGFybSBvciBldmVudC5cbiAgICogQHBhcmFtIGFsYXJtT3JFdmVudCAtIFRoZSBhbGFybSBvciBldmVudCB0byB0b2dnbGUgdmlzaWJpbGl0eSBmb3IuXG4gICAqL1xuICB0b2dnbGVBbGFybUV2ZW50U2VyaWVzVmlzaWJpbGl0eShcbiAgICBhbGFybU9yRXZlbnQ6IEFsYXJtRGV0YWlsc0V4dGVuZGVkIHwgRXZlbnREZXRhaWxzRXh0ZW5kZWRcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2VyaWVzID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCkuc2VyaWVzIGFzIChTZXJpZXNPcHRpb24gJlxuICAgICAgU2VyaWVzRGF0YXBvaW50SW5mbylbXTtcbiAgICBjb25zdCBzZXJpZXNUb1VwZGF0ZSA9IHNlcmllcy5maWx0ZXIoXG4gICAgICBzID0+XG4gICAgICAgIHMubmFtZSA9PT0gYCR7YWxhcm1PckV2ZW50LmxhYmVsfS1tYXJrUG9pbnRgIHx8IHMubmFtZSA9PT0gYCR7YWxhcm1PckV2ZW50LmxhYmVsfS1tYXJrTGluZWBcbiAgICApO1xuICAgIGlmIChzZXJpZXNUb1VwZGF0ZSkge1xuICAgICAgc2VyaWVzVG9VcGRhdGUuZm9yRWFjaChzID0+IHtcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UuZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICAgIHR5cGU6ICdsZWdlbmRUb2dnbGVTZWxlY3QnLFxuICAgICAgICAgIG5hbWU6IHMubmFtZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENoYXJ0T3B0aW9ucygpOiBFQ2hhcnRzT3B0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgdGV4dDogZ2V0dGV4dCgnTm8gZGF0YSBhdmFpbGFibGUuJyksXG4gICAgICAgIGxlZnQ6ICdjZW50ZXInLFxuICAgICAgICB0b3A6ICdjZW50ZXInLFxuICAgICAgICB0ZXh0U3R5bGU6IHsgZm9udFNpemU6IDMwIH1cbiAgICAgIH0sXG4gICAgICBlbXB0eTogdHJ1ZSxcbiAgICAgIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScsIGRhdGE6IFtdIH0sXG4gICAgICB5QXhpczogeyB0eXBlOiAndmFsdWUnIH0sXG4gICAgICBzZXJpZXM6IFtdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFya2VkQXJlYURhdGEoY2xpY2tlZEFsYXJtczogSUFsYXJtW10pIHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IGNsZWFyZWRBbGFybUNvbG9yID0gJ3JnYmEoMjIxLDI1NSwyMjEsMS4wMCknO1xuICAgIGNvbnN0IGFjdGl2ZUFsYXJtQ29sb3IgPSAncmdiYSgyNTUsIDE3MywgMTc3LCAwLjQpJztcblxuICAgIHJldHVybiBjbGlja2VkQWxhcm1zLm1hcChjbGlja2VkQWxhcm0gPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGNsaWNrZWRBbGFybS50eXBlLFxuICAgICAgICAgIHhBeGlzOiBjbGlja2VkQWxhcm0uY3JlYXRpb25UaW1lLFxuICAgICAgICAgIGl0ZW1TdHlsZToge1xuICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgIGNsaWNrZWRBbGFybS5zdGF0dXMgPT09IEFsYXJtU3RhdHVzLkNMRUFSRUQgPyBjbGVhcmVkQWxhcm1Db2xvciA6IGFjdGl2ZUFsYXJtQ29sb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB4QXhpczpcbiAgICAgICAgICAgIGNsaWNrZWRBbGFybVsnbGFzdFVwZGF0ZWQnXSA9PT0gY2xpY2tlZEFsYXJtLmNyZWF0aW9uVGltZSB8fFxuICAgICAgICAgICAgY2xpY2tlZEFsYXJtLnN0YXR1cyAhPT0gQWxhcm1TdGF0dXMuQ0xFQVJFRFxuICAgICAgICAgICAgICA/IHRpbWVSYW5nZS5kYXRlVG9cbiAgICAgICAgICAgICAgOiBjbGlja2VkQWxhcm1bJ2xhc3RVcGRhdGVkJ11cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFya2VkTGluZURhdGEoY2xpY2tlZEFsYXJtczogSUFsYXJtW10pIHtcbiAgICByZXR1cm4gY2xpY2tlZEFsYXJtcy5yZWR1Y2U8TWFya0xpbmVEYXRhW10+KChhY2MsIGFsYXJtKSA9PiB7XG4gICAgICBjb25zdCBpc0NsaWNrZWRBbGFybUNsZWFyZWQgPSBhbGFybS5zdGF0dXMgPT09IEFsYXJtU3RhdHVzLkNMRUFSRUQ7XG4gICAgICBpZiAoaXNDbGlja2VkQWxhcm1DbGVhcmVkKSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4QXhpczogYWxhcm0uY3JlYXRpb25UaW1lLFxuICAgICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgICBpdGVtU3R5bGU6IHsgY29sb3I6IGFsYXJtWydjb2xvciddIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHhBeGlzOiBhbGFybVsnbGFzdFVwZGF0ZWQnXSxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBhbGFybS50eXBlLFxuICAgICAgICAgICAgbGFiZWw6IHsgc2hvdzogZmFsc2UsIGZvcm1hdHRlcjogKCkgPT4gYWxhcm0udHlwZSB9LFxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBhbGFybVsnY29sb3InXSB9XG4gICAgICAgICAgfVxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2MuY29uY2F0KFtcbiAgICAgICAge1xuICAgICAgICAgIHhBeGlzOiBhbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgbGFiZWw6IHsgc2hvdzogZmFsc2UsIGZvcm1hdHRlcjogKCkgPT4gYWxhcm0udHlwZSB9LFxuICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogYWxhcm1bJ2NvbG9yJ10gfVxuICAgICAgICB9XG4gICAgICBdKTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRBbGFybXNBbmRFdmVudHMoY3VzdG9tVGltZVJhbmdlPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoKTtcbiAgICBjb25zdCB1cGRhdGVkVGltZVJhbmdlID0ge1xuICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBjdXN0b21UaW1lUmFuZ2UgPyBjdXN0b21UaW1lUmFuZ2UuZGF0ZUZyb20gOiB0aW1lUmFuZ2UuZGF0ZUZyb20sXG4gICAgICBjcmVhdGVkVG86IGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZS5kYXRlVG8gOiB0aW1lUmFuZ2UuZGF0ZVRvXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3MpIHJldHVybjtcbiAgICBjb25zdCB2aXNpYmxlQWxhcm1zT3JFdmVudHMgPSB0aGlzLmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gIWFsYXJtT3JFdmVudC5fX2hpZGRlbiAmJiBhbGFybU9yRXZlbnQuX19hY3RpdmVcbiAgICApO1xuICAgIGNvbnN0IGFsYXJtcyA9IHZpc2libGVBbGFybXNPckV2ZW50cz8uZmlsdGVyKFxuICAgICAgYWxhcm1PckV2ZW50ID0+IGFsYXJtT3JFdmVudC50aW1lbGluZVR5cGUgPT09ICdBTEFSTSdcbiAgICApIGFzIEFsYXJtRGV0YWlsc0V4dGVuZGVkW107XG4gICAgY29uc3QgZXZlbnRzID0gdmlzaWJsZUFsYXJtc09yRXZlbnRzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gYWxhcm1PckV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0VWRU5UJ1xuICAgICkgYXMgRXZlbnREZXRhaWxzRXh0ZW5kZWRbXTtcblxuICAgIGNvbnN0IFtsaXN0ZWRFdmVudHMsIGxpc3RlZEFsYXJtc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmNoYXJ0RXZlbnRzU2VydmljZS5saXN0RXZlbnRzKHVwZGF0ZWRUaW1lUmFuZ2UsIGV2ZW50cyksXG4gICAgICB0aGlzLmNoYXJ0QWxhcm1zU2VydmljZS5saXN0QWxhcm1zKHVwZGF0ZWRUaW1lUmFuZ2UsIGFsYXJtcylcbiAgICBdKTtcblxuICAgIHRoaXMuZXZlbnRzID0gbGlzdGVkRXZlbnRzO1xuICAgIHRoaXMuYWxhcm1zID0gbGlzdGVkQWxhcm1zO1xuICAgIGF3YWl0IHRoaXMuYWRkQWN0aXZlQWxhcm1zKGFsYXJtcyk7XG5cbiAgICB0aGlzLnVwZGF0ZUFsYXJtc0FuZEV2ZW50cy5lbWl0KHRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzID0gdGhpcy5jb25maWc/LmRhdGFwb2ludHM/LmZpbHRlcihkcCA9PiBkcC5fX2FjdGl2ZSk7XG4gICAgaWYgKGFjdGl2ZURhdGFwb2ludHMgJiYgdGhpcy5jb25maWcucmVhbHRpbWUgJiYgdGhpcy5lY2hhcnRzSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuY2hhcnRSZWFsdGltZVNlcnZpY2Uuc3RhcnRSZWFsdGltZShcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UsXG4gICAgICAgIGFjdGl2ZURhdGFwb2ludHMsXG4gICAgICAgIHRoaXMuZ2V0VGltZVJhbmdlKCksXG4gICAgICAgIGRwID0+IHRoaXMuZGF0YXBvaW50T3V0T2ZTeW5jLmVtaXQoZHApLFxuICAgICAgICB0aW1lUmFuZ2UgPT4gdGhpcy50aW1lUmFuZ2VDaGFuZ2VPblJlYWx0aW1lLmVtaXQodGltZVJhbmdlKSxcbiAgICAgICAgdGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncyxcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXlNYXJrZWRMaW5lOiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkTGluZSB8fCBmYWxzZSxcbiAgICAgICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRQb2ludCB8fCBmYWxzZSxcbiAgICAgICAgICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogdGhpcy5jb25maWcubWVyZ2VNYXRjaGluZ0RhdGFwb2ludHMgfHwgZmFsc2UsXG4gICAgICAgICAgZm9yY2VNZXJnZURhdGFwb2ludHM6IHRoaXMuY29uZmlnLmZvcmNlTWVyZ2VEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IHRoaXMuY29uZmlnLnNob3dMYWJlbEFuZFVuaXQgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd1NsaWRlcjogdGhpcy5jb25maWcuc2hvd1NsaWRlciB8fCBmYWxzZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFRoaXMgbWV0aG9kIHNob3VsZCBjaGVjayBhbmQgYWRkIGFjdGl2ZSBhbGFybXMgZnJvbSB0aGUgYmVnaW5pbmcgb2YgdGltZSB0byB0aGUgYWxhcm0gYXJyYXlcbiAgKi9cbiAgcHJpdmF0ZSBhc3luYyBhZGRBY3RpdmVBbGFybXMoYWxhcm1zOiBBbGFybURldGFpbHNFeHRlbmRlZFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBkYXRlRnJvbTogJzE5NzAtMDEtMDFUMDE6MDA6MDArMDE6MDAnLFxuICAgICAgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvLFxuICAgICAgc3RhdHVzOiBBbGFybVN0YXR1cy5BQ1RJVkVcbiAgICB9O1xuXG4gICAgY29uc3QgYWN0aXZlQWxhcm1zID0gYXdhaXQgdGhpcy5jaGFydEFsYXJtc1NlcnZpY2UubGlzdEFsYXJtcyhwYXJhbXMsIGFsYXJtcyk7XG4gICAgdGhpcy5jb25maWcuYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2UgPSBbXTtcbiAgICAvLyBpdGVyYXRlIHRocm91Z2ggdGhlIGFjdGl2ZUFsYXJtcyBhbmQgY2hlY2sgaWYgdGhlIGFsYXJtIGlzIGluIHRoZSBhbGFybXMgYXJyYXksIGlmIG5vdCB1cGRhdGUgdGhlIGNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSBwcm9wXG4gICAgYWN0aXZlQWxhcm1zLmZvckVhY2goYWN0aXZlQWxhcm0gPT4ge1xuICAgICAgY29uc3QgYWxhcm1UeXBlID0gYWN0aXZlQWxhcm0udHlwZTtcbiAgICAgIGNvbnN0IGFsYXJtID0gdGhpcy5hbGFybXMuZmluZChhbGFybSA9PiBhbGFybS50eXBlID09PSBhbGFybVR5cGUpO1xuICAgICAgaWYgKCFhbGFybSAmJiB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZS5wdXNoKGFsYXJtVHlwZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENoYXJ0T3B0aW9ucyhkYXRhcG9pbnRzV2l0aFZhbHVlczogRHBXaXRoVmFsdWVzW10pOiBQcm9taXNlPEVDaGFydHNPcHRpb24+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB7IC4uLnRoaXMuZ2V0VGltZVJhbmdlKCksIGludGVydmFsOiB0aGlzLmNvbmZpZy5pbnRlcnZhbCB9O1xuICAgIGlmICghdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpKSB7XG4gICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS51cGRhdGVJbml0aWFsVGltZVJhbmdlKHRpbWVSYW5nZSk7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGltZVJhbmdlLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7IGRhdGVGcm9tOiB0aW1lUmFuZ2UuZGF0ZUZyb20sIGRhdGVUbzogdGltZVJhbmdlLmRhdGVUbyB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRpbWVSYW5nZSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIGZvcmNlTWVyZ2VEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5mb3JjZU1lcmdlRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93TGFiZWxBbmRVbml0OiB0aGlzLmNvbmZpZy5zaG93TGFiZWxBbmRVbml0IHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dTbGlkZXI6IHRoaXMuY29uZmlnLnNob3dTbGlkZXIgfHwgZmFsc2UsXG4gICAgICAgICAgbnVtYmVyT2ZEZWNpbWFsUGxhY2VzOiB0aGlzLmNvbmZpZy5udW1iZXJPZkRlY2ltYWxQbGFjZXMgPz8gMlxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRlRnJvbTogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tLFxuICAgICAgICAgICAgICAgICAgZGF0ZVRvOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGRhdGVUbzogbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIGZvcmNlTWVyZ2VEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5mb3JjZU1lcmdlRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93TGFiZWxBbmRVbml0OiB0aGlzLmNvbmZpZy5zaG93TGFiZWxBbmRVbml0IHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dTbGlkZXI6IHRoaXMuY29uZmlnLnNob3dTbGlkZXIgfHwgZmFsc2UsXG4gICAgICAgICAgbnVtYmVyT2ZEZWNpbWFsUGxhY2VzOiB0aGlzLmNvbmZpZy5udW1iZXJPZkRlY2ltYWxQbGFjZXMgPz8gMlxuICAgICAgICB9LFxuICAgICAgICB0aW1lUmFuZ2UsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJChjdXN0b21UaW1lUmFuZ2U/OiBhbnkpOiBPYnNlcnZhYmxlPERwV2l0aFZhbHVlc1tdPiB7XG4gICAgY29uc3QgYWN0aXZlRGF0YXBvaW50cyA9IHRoaXMuY29uZmlnPy5kYXRhcG9pbnRzPy5maWx0ZXIoZHAgPT4gZHAuX19hY3RpdmUpO1xuICAgIGlmICghYWN0aXZlRGF0YXBvaW50cyB8fCBhY3RpdmVEYXRhcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhWYWx1ZXNSZXF1ZXN0czogT2JzZXJ2YWJsZTxEcFdpdGhWYWx1ZXM+W10gPSBbXTtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSg2MF8wMDApO1xuICAgIGZvciAoY29uc3QgZHAgb2YgYWN0aXZlRGF0YXBvaW50cykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlXG4gICAgICAgIC5saXN0U2VyaWVzJCh7XG4gICAgICAgICAgLi4uKGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZSA6IHRpbWVSYW5nZSksXG4gICAgICAgICAgc291cmNlOiBkcC5fX3RhcmdldD8uaWQgfHwgJycsXG4gICAgICAgICAgc2VyaWVzOiBbYCR7ZHAuZnJhZ21lbnR9LiR7ZHAuc2VyaWVzfWBdLFxuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5hZ2dyZWdhdGlvbiB8fCBjdXN0b21UaW1lUmFuZ2VcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogY3VzdG9tVGltZVJhbmdlID8gYWdncmVnYXRpb25UeXBlLkhPVVJMWSA6IHRoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcmVzLmRhdGEudmFsdWVzO1xuICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnRydW5jYXRlZCAmJiB0aGlzLmNvbmZpZy5kYXRlRnJvbSkge1xuICAgICAgICAgICAgICB2YWx1ZXNbbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZUZyb20pLnRvSVNPU3RyaW5nKCldID0gW3sgbWluOiBudWxsLCBtYXg6IG51bGwgfV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGhpcy5hbGVydHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0cy5jbGVhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyAuLi5kcCwgdmFsdWVzLCB0cnVuY2F0ZWQ6IHJlcy5kYXRhLnRydW5jYXRlZCB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcmtKb2luKGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHMpLnBpcGUoXG4gICAgICB0YXAoKGRwc1dpdGhWYWx1ZXM6IERwV2l0aFZhbHVlc1tdKSA9PiB7XG4gICAgICAgIGlmIChkcHNXaXRoVmFsdWVzLnNvbWUoZHAgPT4gZHBbJ3RydW5jYXRlZCddKSkge1xuICAgICAgICAgIHRoaXMuYWRkVHJ1bmNhdGVkRGF0YUFsZXJ0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJ1bmNhdGVkRGF0YUFsZXJ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsZXJ0cz8uYWxlcnRHcm91cHMuZmluZChhID0+IGEudHlwZSA9PT0gJ3dhcm5pbmcnKT8udmFsdWU/LmFsZXJ0cz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFsZXJ0ID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdUcnVuY2F0ZWQgZGF0YS4gQ2hhbmdlIGFnZ3JlZ2F0aW9uIG9yIHNlbGVjdCBzaG9ydGVyIGRhdGUgcmFuZ2UuJylcbiAgICB9KTtcblxuICAgIHRoaXMuYWxlcnRzPy5hZGRBbGVydHMoYWxlcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaW1lUmFuZ2UoYWRkaXRpb25hbFBhZGRpbmc/OiBudW1iZXIpOiB7IGRhdGVGcm9tOiBzdHJpbmc7IGRhdGVUbzogc3RyaW5nIH0ge1xuICAgIGxldCB0aW1lUmFuZ2U6IHsgZGF0ZUZyb206IERhdGU7IGRhdGVUbzogRGF0ZSB9O1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQgfHxcbiAgICAgICh0aGlzLmNvbmZpZy5pbnRlcnZhbCA9PT0gJ2N1c3RvbScgJiYgIXRoaXMuY29uZmlnLnJlYWx0aW1lKVxuICAgICkge1xuICAgICAgdGltZVJhbmdlID0ge1xuICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZUZyb20gYXMgRGF0ZSksXG4gICAgICAgIGRhdGVUbzogbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZVRvIGFzIERhdGUpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGltZVJhbmdlSW5NcyA9IDA7XG4gICAgICBpZiAodGhpcy5jb25maWcuaW50ZXJ2YWwgJiYgdGhpcy5jb25maWcuaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICAgIHRpbWVSYW5nZUluTXMgPSBJTlRFUlZBTFMuZmluZChpID0+IGkuaWQgPT09IHRoaXMuY29uZmlnLmludGVydmFsKT8udGltZXNwYW5Jbk1zIHx8IDA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICAgIHRpbWVSYW5nZUluTXMgPVxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVUbyBhcyBEYXRlKS52YWx1ZU9mKCkgLVxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tIGFzIERhdGUpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICB0aW1lUmFuZ2UgPSB7IGRhdGVGcm9tOiBuZXcgRGF0ZShub3cudmFsdWVPZigpIC0gdGltZVJhbmdlSW5NcyksIGRhdGVUbzogbm93IH07XG4gICAgfVxuICAgIGlmIChhZGRpdGlvbmFsUGFkZGluZykge1xuICAgICAgdGltZVJhbmdlLmRhdGVGcm9tID0gbmV3IERhdGUodGltZVJhbmdlLmRhdGVGcm9tLnZhbHVlT2YoKSAtIGFkZGl0aW9uYWxQYWRkaW5nKTtcbiAgICAgIHRpbWVSYW5nZS5kYXRlVG8gPSBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZVRvLnZhbHVlT2YoKSArIGFkZGl0aW9uYWxQYWRkaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0ZUZyb206IHRpbWVSYW5nZS5kYXRlRnJvbS50b0lTT1N0cmluZygpLCBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG8udG9JU09TdHJpbmcoKSB9O1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicC1yZWxhdGl2ZSBmaXQtaCBjaGFydC1jb250YWluZXJcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaXQtdyBmaXQtaFwiXG4gICAgI2NoYXJ0XG4gICAgZWNoYXJ0c1xuICAgIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uJCB8IGFzeW5jXCJcbiAgICAoY2hhcnRJbml0KT1cIm9uQ2hhcnRJbml0KCRldmVudClcIlxuICA+PC9kaXY+XG5cbiAgPGM4eS1jaGFydC1hbGVydHMgW2FsZXJ0c109XCJhbGVydHNcIj48L2M4eS1jaGFydC1hbGVydHM+XG5cbiAgPGRpdiAqbmdJZj1cInNob3dMb2FkTW9yZVwiIGNsYXNzPVwiY2hhcnQtbG9hZC1tb3JlXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGJ0bi1ibG9ja1wiXG4gICAgICAoY2xpY2spPVwibG9hZE1vcmVEYXRhKClcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJyZXN0b3JlXCI+PC9pPlxuICAgICAge3sgJ0xvYWQgbW9yZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -14,4 +14,4 @@ export const SEVERITY_LABELS = {
14
14
  MINOR: gettext('Minor`alarm`'),
15
15
  WARNING: gettext('Warning`alarm`')
16
16
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1ncmFwaC13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY2hhcnQvbW9kZWxzL2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBbUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFpRS9ELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsNENBQWlCLENBQUE7SUFDakIsa0VBQXVDLENBQUE7QUFDekMsQ0FBQyxFQUhXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFHbEM7QUFvREQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztDQUM5QixDQUFDO0FBdUJYLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFlO0lBQ2xELEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQWM7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYSVNfVFlQRVMsXG4gIENIQVJUX0xJTkVfVFlQRVMsXG4gIENIQVJUX1JFTkRFUl9UWVBFUyxcbiAgS1BJRGV0YWlsc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBEYXRlVGltZUNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSwgQWxhcm1TdGF0dXNUeXBlLCBJTWVhc3VyZW1lbnQsIElTZXJpZXMsIFNldmVyaXR5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBCYXJTZXJpZXNPcHRpb24sIExpbmVTZXJpZXNPcHRpb24sIFNjYXR0ZXJTZXJpZXNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscywgRXZlbnREZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hbGFybS1ldmVudC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2sgfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy91dGlsL3R5cGVzJztcbmltcG9ydCB7IFRvcExldmVsRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29tcG9uZW50L3Rvb2x0aXAvVG9vbHRpcE1vZGVsJztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzID0gS1BJRGV0YWlscyAmIHtcbiAgbGluZVR5cGU/OiBEYXRhcG9pbnRMaW5lVHlwZTtcbiAgcmVuZGVyVHlwZT86IERhdGFwb2ludENoYXJ0UmVuZGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyA9IHtcbiAgYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2U/OiBzdHJpbmdbXTtcbiAgYWdncmVnYXRpb24/OiBhZ2dyZWdhdGlvblR5cGUgfCBudWxsO1xuICBhbGFybXNFdmVudHNDb25maWdzPzogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXTtcbiAgZGF0YXBvaW50cz86IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHNbXSB8IG51bGw7XG4gIGRhdGU/OiBEYXRlVGltZUNvbnRleHQ7XG4gIGRhdGVGcm9tPzogRGF0ZSB8IG51bGw7XG4gIGRhdGVUbz86IERhdGUgfCBudWxsO1xuICBkaXNwbGF5QWdncmVnYXRpb25TZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheURhdGVTZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheU1hcmtlZExpbmU/OiBib29sZWFuO1xuICBkaXNwbGF5TWFya2VkUG9pbnQ/OiBib29sZWFuO1xuICBpbnRlcnZhbD86IEludGVydmFsWydpZCddIHwgbnVsbDtcbiAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM/OiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50cz86IGJvb2xlYW47XG4gIHJlYWx0aW1lPzogYm9vbGVhbiB8IG51bGw7XG4gIHNob3dMYWJlbEFuZFVuaXQ/OiBib29sZWFuO1xuICBzaG93U2xpZGVyPzogYm9vbGVhbiB8IG51bGw7XG4gIHNsaWRlckNoYW5nZT86IGJvb2xlYW4gfCBudWxsO1xuICB3aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0PzogYm9vbGVhbiB8IG51bGw7XG4gIHhBeGlzU3BsaXRMaW5lcz86IGJvb2xlYW4gfCBudWxsO1xuICB5QXhpc1NwbGl0TGluZXM/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEdyYXBoRGlzcGxheU9wdGlvbnMgPSB7XG4gIGRpc3BsYXlNYXJrZWRMaW5lOiBib29sZWFuO1xuICBkaXNwbGF5TWFya2VkUG9pbnQ6IGJvb2xlYW47XG4gIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgc2hvd0xhYmVsQW5kVW5pdDogYm9vbGVhbjtcbiAgc2hvd1NsaWRlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFsYXJtRGV0YWlsc0V4dGVuZGVkID0gQWxhcm1EZXRhaWxzICYge1xuICBfX2hpZGRlbj86IGJvb2xlYW47XG4gIF9fc2V2ZXJpdHk/OiBTZXZlcml0eVR5cGVbXTtcbiAgX19zdGF0dXM/OiBBbGFybVN0YXR1c1R5cGVbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEV2ZW50RGV0YWlsc0V4dGVuZGVkID0gRXZlbnREZXRhaWxzICYge1xuICBfX2hpZGRlbj86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjogRXh0ZW5kZWQgQWxhcm1PckV2ZW50IHR5cGUgd2hpY2ggaW5jbHVkZXMgcHJvcGVydGllcyBmcm9tIHRoZSBpbmNvbWluZyBhbGFybXMvZXZlbnRzLiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB3aGVuIHRoZSBleHBlY3RlZCBkYXRhIGNhbiBiZSBlaXRoZXIgZXZlbnRzIG9yIGFsYXJtcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWxhcm1PckV2ZW50RXh0ZW5kZWQgPSBBbGFybURldGFpbHNFeHRlbmRlZCB8IEV2ZW50RGV0YWlsc0V4dGVuZGVkO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMgPSBQYXJ0aWFsPFxuICBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2ludGVydmFsJyB8ICdkYXRlRnJvbScgfCAnZGF0ZVRvJyB8ICdhZ2dyZWdhdGlvbicgfCAncmVhbHRpbWUnPlxuPjtcblxuZXhwb3J0IGVudW0gREFURV9TRUxFQ1RJT05fRVhURU5ERUQge1xuICBDT05GSUcgPSAnY29uZmlnJyxcbiAgREFTSEJPQVJEX0NPTlRFWFQgPSAnZGFzaGJvYXJkX2NvbnRleHQnXG59XG5cbnR5cGUgRGF0YXBvaW50QXBpVmFsdWVzID0gSVNlcmllc1sndmFsdWVzJ107XG5leHBvcnQgaW50ZXJmYWNlIERwV2l0aFZhbHVlcyBleHRlbmRzIERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMge1xuICB2YWx1ZXM6IERhdGFwb2ludEFwaVZhbHVlcztcbn1cblxudHlwZSBEYXRhUG9pbnRWYWx1ZXMgPSB7XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBEcFZhbHVlc0l0ZW0gPSB7XG4gIHRpbWU6IG51bWJlcjtcbiAgdmFsdWVzOiBEYXRhUG9pbnRWYWx1ZXNbXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya1BvaW50RGF0YSB7XG4gIGNvb3JkOiBbc3RyaW5nLCBudW1iZXIgfCBEYXRhUG9pbnRWYWx1ZXMgfCBudWxsXTtcbiAgbmFtZTogc3RyaW5nO1xuICBpdGVtVHlwZTogc3RyaW5nO1xuICBpdGVtU3R5bGU6IHsgY29sb3I6IHN0cmluZyB9O1xuICBzeW1ib2w/OiBzdHJpbmc7IC8vIFN5bWJvbCB0byBkaXNwbGF5IGZvciB0aGUgbWFyayBwb2ludCAocmVmZXJlbmNlIHRvIElDT05TX01BUClcbiAgc3ltYm9sU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXJrTGluZURhdGEge1xuICB4QXhpczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpdGVtVHlwZTogc3RyaW5nO1xuICBsYWJlbDoge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgZm9ybWF0dGVyOiBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2s8VG9wTGV2ZWxGb3JtYXR0ZXJQYXJhbXM+IHwgc3RyaW5nO1xuICB9O1xuICBpdGVtU3R5bGU6IHsgY29sb3I6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDb250ZXh0UHJvcHMge1xuICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZT86IHN0cmluZztcbiAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlPzogc3RyaW5nO1xuICBjdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZT86IHN0cmluZztcbiAgY3VycmVudERhdGVDb250ZXh0VG9EYXRlPzogc3RyaW5nO1xuICByZWFsdGltZT86IGJvb2xlYW47XG4gIGN1cnJlbnREYXRlQ29udGV4dEludGVydmFsPzogJ21pbnV0ZXMnIHwgJ2hvdXJzJyB8ICdkYXlzJyB8ICd3ZWVrcycgfCAnbW9udGhzJyB8ICdjdXN0b20nO1xuICBhZ2dyZWdhdGlvbj86IGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludExpbmVUeXBlID0gKHR5cGVvZiBDSEFSVF9MSU5FX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcbmV4cG9ydCB0eXBlIEVjaGFydHNTZXJpZXNPcHRpb25zID0gTGluZVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24gfCBCYXJTZXJpZXNPcHRpb247XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludEF4aXNUeXBlID0gKHR5cGVvZiBBWElTX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50Q2hhcnRSZW5kZXJUeXBlID0gKHR5cGVvZiBDSEFSVF9SRU5ERVJfVFlQRVMpW251bWJlcl1bJ3ZhbCddO1xuXG5leHBvcnQgY29uc3QgUkVBTFRJTUVfVEVYVFMgPSB7XG4gIEFDVElWRTogZ2V0dGV4dCgnUmVhbHRpbWUgYWN0aXZlJyksXG4gIElOQUNUSVZFOiBnZXR0ZXh0KCdSZWFsdGltZSBpbmFjdGl2ZScpXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBEYXRlU3RyaW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgU2VyaWVzVmFsdWUgPSBbRGF0ZVN0cmluZywgbnVtYmVyXTtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50UmVhbHRpbWVNZWFzdXJlbWVudHMgPSB7XG4gIG1lYXN1cmVtZW50OiBJTWVhc3VyZW1lbnQ7XG4gIGRhdGFwb2ludDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscztcbn07XG5cbmV4cG9ydCB0eXBlIFlBeGlzT3B0aW9ucyA9IHtcbiAgc2hvd1NwbGl0TGluZXM6IGJvb2xlYW47XG4gIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgc2hvd0xhYmVsQW5kVW5pdDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWVzRGF0YXBvaW50SW5mbyB7XG4gIGRhdGFwb2ludElkPzogc3RyaW5nO1xuICBkYXRhcG9pbnRMYWJlbD86IHN0cmluZztcbiAgZGF0YXBvaW50VW5pdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNFVkVSSVRZX0xBQkVMUyA9IHtcbiAgQ1JJVElDQUw6IGdldHRleHQoJ0NyaXRpY2FsYGFsYXJtYCcpIGFzICdDUklUSUNBTCcsXG4gIE1BSk9SOiBnZXR0ZXh0KCdNYWpvcmBhbGFybWAnKSBhcyAnTUFKT1InLFxuICBNSU5PUjogZ2V0dGV4dCgnTWlub3JgYWxhcm1gJykgYXMgJ01JTk9SJyxcbiAgV0FSTklORzogZ2V0dGV4dCgnV2FybmluZ2BhbGFybWAnKSBhcyAnV0FSTklORydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNldmVyaXR5VHlwZSA9IGtleW9mIHR5cGVvZiBTZXZlcml0eTtcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1ncmFwaC13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY2hhcnQvbW9kZWxzL2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBbUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFtRS9ELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsNENBQWlCLENBQUE7SUFDakIsa0VBQXVDLENBQUE7QUFDekMsQ0FBQyxFQUhXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFHbEM7QUFvREQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztDQUM5QixDQUFDO0FBdUJYLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFlO0lBQ2xELEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQWM7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYSVNfVFlQRVMsXG4gIENIQVJUX0xJTkVfVFlQRVMsXG4gIENIQVJUX1JFTkRFUl9UWVBFUyxcbiAgS1BJRGV0YWlsc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBEYXRlVGltZUNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSwgQWxhcm1TdGF0dXNUeXBlLCBJTWVhc3VyZW1lbnQsIElTZXJpZXMsIFNldmVyaXR5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBCYXJTZXJpZXNPcHRpb24sIExpbmVTZXJpZXNPcHRpb24sIFNjYXR0ZXJTZXJpZXNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscywgRXZlbnREZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hbGFybS1ldmVudC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2sgfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy91dGlsL3R5cGVzJztcbmltcG9ydCB7IFRvcExldmVsRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29tcG9uZW50L3Rvb2x0aXAvVG9vbHRpcE1vZGVsJztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzID0gS1BJRGV0YWlscyAmIHtcbiAgbGluZVR5cGU/OiBEYXRhcG9pbnRMaW5lVHlwZTtcbiAgcmVuZGVyVHlwZT86IERhdGFwb2ludENoYXJ0UmVuZGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyA9IHtcbiAgYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2U/OiBzdHJpbmdbXTtcbiAgYWdncmVnYXRpb24/OiBhZ2dyZWdhdGlvblR5cGUgfCBudWxsO1xuICBhbGFybXNFdmVudHNDb25maWdzPzogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXTtcbiAgZGF0YXBvaW50cz86IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHNbXSB8IG51bGw7XG4gIGRhdGU/OiBEYXRlVGltZUNvbnRleHQ7XG4gIGRhdGVGcm9tPzogRGF0ZSB8IG51bGw7XG4gIGRhdGVUbz86IERhdGUgfCBudWxsO1xuICBkaXNwbGF5QWdncmVnYXRpb25TZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheURhdGVTZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheU1hcmtlZExpbmU/OiBib29sZWFuO1xuICBkaXNwbGF5TWFya2VkUG9pbnQ/OiBib29sZWFuO1xuICBpbnRlcnZhbD86IEludGVydmFsWydpZCddIHwgbnVsbDtcbiAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM/OiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50cz86IGJvb2xlYW47XG4gIHJlYWx0aW1lPzogYm9vbGVhbiB8IG51bGw7XG4gIHNob3dMYWJlbEFuZFVuaXQ/OiBib29sZWFuO1xuICBzaG93U2xpZGVyPzogYm9vbGVhbiB8IG51bGw7XG4gIHNsaWRlckNoYW5nZT86IGJvb2xlYW4gfCBudWxsO1xuICB3aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0PzogYm9vbGVhbiB8IG51bGw7XG4gIHhBeGlzU3BsaXRMaW5lcz86IGJvb2xlYW4gfCBudWxsO1xuICB5QXhpc1NwbGl0TGluZXM/OiBib29sZWFuIHwgbnVsbDtcbiAgbnVtYmVyT2ZEZWNpbWFsUGxhY2VzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgR3JhcGhEaXNwbGF5T3B0aW9ucyA9IHtcbiAgZGlzcGxheU1hcmtlZExpbmU6IGJvb2xlYW47XG4gIGRpc3BsYXlNYXJrZWRQb2ludDogYm9vbGVhbjtcbiAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IGJvb2xlYW47XG4gIGZvcmNlTWVyZ2VEYXRhcG9pbnRzOiBib29sZWFuO1xuICBzaG93TGFiZWxBbmRVbml0OiBib29sZWFuO1xuICBzaG93U2xpZGVyOiBib29sZWFuO1xuICBudW1iZXJPZkRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBbGFybURldGFpbHNFeHRlbmRlZCA9IEFsYXJtRGV0YWlscyAmIHtcbiAgX19oaWRkZW4/OiBib29sZWFuO1xuICBfX3NldmVyaXR5PzogU2V2ZXJpdHlUeXBlW107XG4gIF9fc3RhdHVzPzogQWxhcm1TdGF0dXNUeXBlW107XG59O1xuXG5leHBvcnQgdHlwZSBFdmVudERldGFpbHNFeHRlbmRlZCA9IEV2ZW50RGV0YWlscyAmIHtcbiAgX19oaWRkZW4/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb246IEV4dGVuZGVkIEFsYXJtT3JFdmVudCB0eXBlIHdoaWNoIGluY2x1ZGVzIHByb3BlcnRpZXMgZnJvbSB0aGUgaW5jb21pbmcgYWxhcm1zL2V2ZW50cy4gVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgd2hlbiB0aGUgZXhwZWN0ZWQgZGF0YSBjYW4gYmUgZWl0aGVyIGV2ZW50cyBvciBhbGFybXMuXG4gKi9cbmV4cG9ydCB0eXBlIEFsYXJtT3JFdmVudEV4dGVuZGVkID0gQWxhcm1EZXRhaWxzRXh0ZW5kZWQgfCBFdmVudERldGFpbHNFeHRlbmRlZDtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50c0dyYXBoV2lkZ2V0VGltZVByb3BzID0gUGFydGlhbDxcbiAgUGljazxEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWcsICdpbnRlcnZhbCcgfCAnZGF0ZUZyb20nIHwgJ2RhdGVUbycgfCAnYWdncmVnYXRpb24nIHwgJ3JlYWx0aW1lJz5cbj47XG5cbmV4cG9ydCBlbnVtIERBVEVfU0VMRUNUSU9OX0VYVEVOREVEIHtcbiAgQ09ORklHID0gJ2NvbmZpZycsXG4gIERBU0hCT0FSRF9DT05URVhUID0gJ2Rhc2hib2FyZF9jb250ZXh0J1xufVxuXG50eXBlIERhdGFwb2ludEFwaVZhbHVlcyA9IElTZXJpZXNbJ3ZhbHVlcyddO1xuZXhwb3J0IGludGVyZmFjZSBEcFdpdGhWYWx1ZXMgZXh0ZW5kcyBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzIHtcbiAgdmFsdWVzOiBEYXRhcG9pbnRBcGlWYWx1ZXM7XG59XG5cbnR5cGUgRGF0YVBvaW50VmFsdWVzID0ge1xuICBtaW46IG51bWJlcjtcbiAgbWF4OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgRHBWYWx1ZXNJdGVtID0ge1xuICB0aW1lOiBudW1iZXI7XG4gIHZhbHVlczogRGF0YVBvaW50VmFsdWVzW107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtQb2ludERhdGEge1xuICBjb29yZDogW3N0cmluZywgbnVtYmVyIHwgRGF0YVBvaW50VmFsdWVzIHwgbnVsbF07XG4gIG5hbWU6IHN0cmluZztcbiAgaXRlbVR5cGU6IHN0cmluZztcbiAgaXRlbVN0eWxlOiB7IGNvbG9yOiBzdHJpbmcgfTtcbiAgc3ltYm9sPzogc3RyaW5nOyAvLyBTeW1ib2wgdG8gZGlzcGxheSBmb3IgdGhlIG1hcmsgcG9pbnQgKHJlZmVyZW5jZSB0byBJQ09OU19NQVApXG4gIHN5bWJvbFNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya0xpbmVEYXRhIHtcbiAgeEF4aXM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaXRlbVR5cGU6IHN0cmluZztcbiAgbGFiZWw6IHtcbiAgICBzaG93OiBib29sZWFuO1xuICAgIGZvcm1hdHRlcjogVG9vbHRpcEZvcm1hdHRlckNhbGxiYWNrPFRvcExldmVsRm9ybWF0dGVyUGFyYW1zPiB8IHN0cmluZztcbiAgfTtcbiAgaXRlbVN0eWxlOiB7IGNvbG9yOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ29udGV4dFByb3BzIHtcbiAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkRnJvbURhdGU/OiBzdHJpbmc7XG4gIHRlbXBvcmFyeVVzZXJTZWxlY3RlZFRvRGF0ZT86IHN0cmluZztcbiAgY3VycmVudERhdGVDb250ZXh0RnJvbURhdGU/OiBzdHJpbmc7XG4gIGN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZT86IHN0cmluZztcbiAgcmVhbHRpbWU/OiBib29sZWFuO1xuICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbD86ICdtaW51dGVzJyB8ICdob3VycycgfCAnZGF5cycgfCAnd2Vla3MnIHwgJ21vbnRocycgfCAnY3VzdG9tJztcbiAgYWdncmVnYXRpb24/OiBhZ2dyZWdhdGlvblR5cGUgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRMaW5lVHlwZSA9ICh0eXBlb2YgQ0hBUlRfTElORV9UWVBFUylbbnVtYmVyXVsndmFsJ107XG5leHBvcnQgdHlwZSBFY2hhcnRzU2VyaWVzT3B0aW9ucyA9IExpbmVTZXJpZXNPcHRpb24gfCBTY2F0dGVyU2VyaWVzT3B0aW9uIHwgQmFyU2VyaWVzT3B0aW9uO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRBeGlzVHlwZSA9ICh0eXBlb2YgQVhJU19UWVBFUylbbnVtYmVyXVsndmFsJ107XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludENoYXJ0UmVuZGVyVHlwZSA9ICh0eXBlb2YgQ0hBUlRfUkVOREVSX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcblxuZXhwb3J0IGNvbnN0IFJFQUxUSU1FX1RFWFRTID0ge1xuICBBQ1RJVkU6IGdldHRleHQoJ1JlYWx0aW1lIGFjdGl2ZScpLFxuICBJTkFDVElWRTogZ2V0dGV4dCgnUmVhbHRpbWUgaW5hY3RpdmUnKVxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRGF0ZVN0cmluZyA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFNlcmllc1ZhbHVlID0gW0RhdGVTdHJpbmcsIG51bWJlcl07XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludFJlYWx0aW1lTWVhc3VyZW1lbnRzID0ge1xuICBtZWFzdXJlbWVudDogSU1lYXN1cmVtZW50O1xuICBkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHM7XG59O1xuXG5leHBvcnQgdHlwZSBZQXhpc09wdGlvbnMgPSB7XG4gIHNob3dTcGxpdExpbmVzOiBib29sZWFuO1xuICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogYm9vbGVhbjtcbiAgZm9yY2VNZXJnZURhdGFwb2ludHM6IGJvb2xlYW47XG4gIHNob3dMYWJlbEFuZFVuaXQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmllc0RhdGFwb2ludEluZm8ge1xuICBkYXRhcG9pbnRJZD86IHN0cmluZztcbiAgZGF0YXBvaW50TGFiZWw/OiBzdHJpbmc7XG4gIGRhdGFwb2ludFVuaXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTRVZFUklUWV9MQUJFTFMgPSB7XG4gIENSSVRJQ0FMOiBnZXR0ZXh0KCdDcml0aWNhbGBhbGFybWAnKSBhcyAnQ1JJVElDQUwnLFxuICBNQUpPUjogZ2V0dGV4dCgnTWFqb3JgYWxhcm1gJykgYXMgJ01BSk9SJyxcbiAgTUlOT1I6IGdldHRleHQoJ01pbm9yYGFsYXJtYCcpIGFzICdNSU5PUicsXG4gIFdBUk5JTkc6IGdldHRleHQoJ1dhcm5pbmdgYWxhcm1gJykgYXMgJ1dBUk5JTkcnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTZXZlcml0eVR5cGUgPSBrZXlvZiB0eXBlb2YgU2V2ZXJpdHk7XG4iXX0=