@c8y/ngx-components 1021.62.9 → 1021.64.0

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 (99) hide show
  1. package/core/bottom-drawer/bottom-drawer-ref.d.ts +4 -0
  2. package/core/bottom-drawer/bottom-drawer-ref.d.ts.map +1 -1
  3. package/core/plugins/plugins.model.d.ts +1 -0
  4. package/core/plugins/plugins.model.d.ts.map +1 -1
  5. package/core/plugins/plugins.service.d.ts +5 -2
  6. package/core/plugins/plugins.service.d.ts.map +1 -1
  7. package/echart/services/echarts-options.service.d.ts +3 -1
  8. package/echart/services/echarts-options.service.d.ts.map +1 -1
  9. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +15 -0
  10. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -0
  11. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -2
  12. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  13. package/ecosystem/application-plugins/application-plugins.module.d.ts +4 -3
  14. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  15. package/ecosystem/application-plugins/install-plugin.component.d.ts +8 -4
  16. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  17. package/ecosystem/application-plugins/plugin-list.component.d.ts +10 -26
  18. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  19. package/ecosystem/application-plugins/plugin-list.service.d.ts +27 -0
  20. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -0
  21. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -9
  22. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  23. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
  24. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  25. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +6 -3
  26. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  27. package/ecosystem/packages/package-versions/packages-versions.component.d.ts +9 -2
  28. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  29. package/esm2022/alarms/alarm-details.component.mjs +3 -3
  30. package/esm2022/alarms/alarms-filter.component.mjs +3 -3
  31. package/esm2022/alarms/alarms-icon.component.mjs +3 -3
  32. package/esm2022/alarms/alarms-interval-refresh.component.mjs +3 -3
  33. package/esm2022/alarms/alarms-list.component.mjs +3 -3
  34. package/esm2022/alarms/alarms.component.mjs +3 -3
  35. package/esm2022/auth-configuration/sso-configuration/sso-configuration.component.mjs +3 -3
  36. package/esm2022/core/bottom-drawer/bottom-drawer-ref.mjs +9 -3
  37. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  38. package/esm2022/core/plugins/plugins.model.mjs +1 -1
  39. package/esm2022/core/plugins/plugins.service.mjs +25 -5
  40. package/esm2022/echart/services/echarts-options.service.mjs +28 -12
  41. package/esm2022/ecosystem/application-plugins/application-plugin-readme.component.mjs +26 -0
  42. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +26 -11
  43. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +6 -3
  44. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +21 -15
  45. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +3 -3
  46. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +26 -202
  47. package/esm2022/ecosystem/application-plugins/plugin-list.service.mjs +200 -0
  48. package/esm2022/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +1 -1
  49. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +25 -44
  50. package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +14 -4
  51. package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +13 -6
  52. package/esm2022/ecosystem/packages/package-versions/packages-versions.component.mjs +22 -8
  53. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
  54. package/esm2022/register-device/device-registration-view.component.mjs +39 -9
  55. package/esm2022/register-device/general/general-device-registration-button.component.mjs +13 -14
  56. package/esm2022/register-device/general/general-device-registration.component.mjs +19 -5
  57. package/esm2022/register-device/general/general-device-registration.service.mjs +30 -0
  58. package/esm2022/register-device/index.mjs +2 -1
  59. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +3 -3
  60. package/fesm2022/c8y-ngx-components-alarms.mjs +12 -12
  61. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  62. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -2
  63. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-echart.mjs +26 -11
  65. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +205 -138
  67. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -2
  69. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-ecosystem.mjs +257 -176
  71. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  72. package/fesm2022/c8y-ngx-components-register-device.mjs +86 -19
  73. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  74. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -2
  75. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  76. package/fesm2022/c8y-ngx-components.mjs +33 -7
  77. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  78. package/locales/de.po +3 -0
  79. package/locales/es.po +3 -0
  80. package/locales/fr.po +3 -0
  81. package/locales/ja_JP.po +3 -0
  82. package/locales/ko.po +3 -0
  83. package/locales/locales.pot +36 -6
  84. package/locales/nl.po +3 -0
  85. package/locales/pl.po +3 -0
  86. package/locales/pt_BR.po +3 -0
  87. package/locales/zh_CN.po +3 -0
  88. package/locales/zh_TW.po +3 -0
  89. package/package.json +1 -1
  90. package/register-device/device-registration-view.component.d.ts +6 -1
  91. package/register-device/device-registration-view.component.d.ts.map +1 -1
  92. package/register-device/general/general-device-registration-button.component.d.ts +3 -3
  93. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  94. package/register-device/general/general-device-registration.component.d.ts +5 -0
  95. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  96. package/register-device/general/general-device-registration.service.d.ts +9 -0
  97. package/register-device/general/general-device-registration.service.d.ts.map +1 -0
  98. package/register-device/index.d.ts +1 -0
  99. package/register-device/index.d.ts.map +1 -1
@@ -18,7 +18,7 @@ export class BottomDrawerRef {
18
18
  this.options = options;
19
19
  this.closedSubject$ = new Subject();
20
20
  this.closedObs$ = this.closedSubject$.asObservable().pipe(shareReplay());
21
- this.attachDrawerToView(component);
21
+ this.instance = this.attachDrawerToView(component);
22
22
  }
23
23
  /**
24
24
  * Closes the bottom drawer behind the reference.
@@ -45,6 +45,7 @@ export class BottomDrawerRef {
45
45
  assign(contentComponentRef.instance, this.options?.initialState);
46
46
  this.drawerComponentRef.changeDetectorRef.detectChanges();
47
47
  this.handleNavigation();
48
+ return contentComponentRef.instance;
48
49
  }
49
50
  detachDrawerFromView() {
50
51
  this.drawerComponentRef.instance.hide();
@@ -60,9 +61,14 @@ export class BottomDrawerRef {
60
61
  handleNavigation() {
61
62
  if (!this.options || !(this.options.closeOnNavigation === false)) {
62
63
  this.router.events
63
- .pipe(filter(event => event instanceof NavigationStart), take(1), takeUntil(this.onClosed$))
64
+ .pipe(filter(event => event instanceof NavigationStart), filter(({ url: targetUrl }) => {
65
+ const currentUrlWithoutParams = this.router.url.split('?')[0];
66
+ const targetUrlWithoutParams = targetUrl.split('?')[0];
67
+ // this check is not to close the drawer when the query params change, e.g. when filter is applied to the list
68
+ return currentUrlWithoutParams !== targetUrlWithoutParams;
69
+ }), take(1), takeUntil(this.onClosed$))
64
70
  .subscribe(() => this.close());
65
71
  }
66
72
  }
67
73
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLWRyYXdlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JvdHRvbS1kcmF3ZXIvYm90dG9tLWRyYXdlci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFFZixRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFPRCxZQUNFLFNBQWtCLEVBQ1YsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE9BQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFQNUIsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFRNUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWtCO1FBQzNDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDdEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFO1lBQy9ELG1CQUFtQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTtZQUNqRCxlQUFlO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xGLFdBQVcsQ0FBQyxNQUFNLENBQXNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BELE1BQU0sbUJBQW1CLEdBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sOEJBQThCO1FBQ3BDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtpQkFDZixJQUFJLENBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsQ0FBQyxFQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBjcmVhdGVDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSW5qZWN0b3IsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQm90dG9tRHJhd2VyQ29tcG9uZW50IH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcmF3ZXJPcHRpb25zIH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERSQVdFUl9BTklNQVRJT05fVElNRSA9IDQwMDtcbmV4cG9ydCBjbGFzcyBCb3R0b21EcmF3ZXJSZWY8Qz4ge1xuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgYm90dG9tIGRyYXdlciBiZWhpbmQgdGhlIHJlZmVyZW5jZSBpcyBjbG9zZWQuXG4gICAqL1xuICBnZXQgb25DbG9zZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlZE9icyQ7XG4gIH1cblxuICBwcml2YXRlIGRyYXdlckNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEJvdHRvbURyYXdlckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBjbG9zZWRTdWJqZWN0JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgY2xvc2VkT2JzJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuY2xvc2VkU3ViamVjdCQuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG9wdGlvbnM/OiBEcmF3ZXJPcHRpb25zPEM+XG4gICkge1xuICAgIHRoaXMuYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBib3R0b20gZHJhd2VyIGJlaGluZCB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJGcm9tVmlldygpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQubmV4dCgpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudDogVHlwZTxDPikge1xuICAgIGNvbnN0IGVsZW1lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEJvdHRvbURyYXdlclJlZiwgdXNlVmFsdWU6IHRoaXMgfV1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KEJvdHRvbURyYXdlckNvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBsaWNhdGlvblJlZi5pbmplY3RvcixcbiAgICAgIGVsZW1lbnRJbmplY3RvclxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5vcHRpb25zPy5ob3N0ID8/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLWNvbnRlbnQnKTtcbiAgICBob3N0RWxlbWVudC5hcHBlbmQoKDxFbWJlZGRlZFZpZXdSZWY8Qz4+dGhpcy5kcmF3ZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpLnJvb3ROb2Rlc1swXSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNsZWFyKCk7XG4gICAgY29uc3QgY29udGVudENvbXBvbmVudFJlZiA9XG4gICAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGFzc2lnbihjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlLCB0aGlzLm9wdGlvbnM/LmluaXRpYWxTdGF0ZSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoRHJhd2VyRnJvbVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5kcmF3ZXJDb21wb25lbnRSZWYuaW5zdGFuY2UuaGlkZSgpO1xuICAgIHRoaXMuZGV0YWNoRHJhd2VyV2l0aEFuaW1hdGlvbkRlbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGRldGFjaERyYXdlcldpdGhBbmltYXRpb25EZWxheSgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgfSwgRFJBV0VSX0FOSU1BVElPTl9USU1FKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTmF2aWdhdGlvbigpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhKHRoaXMub3B0aW9ucy5jbG9zZU9uTmF2aWdhdGlvbiA9PT0gZmFsc2UpKSB7XG4gICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uQ2xvc2VkJClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLWRyYXdlci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2JvdHRvbS1kcmF3ZXIvYm90dG9tLWRyYXdlci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGVBQWUsRUFFZixRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHbEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBQ3pDLE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFZRCxZQUNFLFNBQWtCLEVBQ1YsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLE9BQTBCO1FBRjFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFQNUIsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFRNUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVE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QVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXZELDhHQUE4RztnQkFDOUcsT0FBTyx1QkFBdUIsS0FBSyxzQkFBc0IsQ0FBQztZQUM1RCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBjcmVhdGVDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSW5qZWN0b3IsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQm90dG9tRHJhd2VyQ29tcG9uZW50IH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEcmF3ZXJPcHRpb25zIH0gZnJvbSAnLi9ib3R0b20tZHJhd2VyLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IERSQVdFUl9BTklNQVRJT05fVElNRSA9IDQwMDtcbmV4cG9ydCBjbGFzcyBCb3R0b21EcmF3ZXJSZWY8Qz4ge1xuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgYm90dG9tIGRyYXdlciBiZWhpbmQgdGhlIHJlZmVyZW5jZSBpcyBjbG9zZWQuXG4gICAqL1xuICBnZXQgb25DbG9zZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlZE9icyQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQgY3JlYXRlZC5cbiAgICovXG4gIGluc3RhbmNlOiBDO1xuXG4gIHByaXZhdGUgZHJhd2VyQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Qm90dG9tRHJhd2VyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGNsb3NlZFN1YmplY3QkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBjbG9zZWRPYnMkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gdGhpcy5jbG9zZWRTdWJqZWN0JC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbXBvbmVudDogVHlwZTxDPixcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgb3B0aW9ucz86IERyYXdlck9wdGlvbnM8Qz5cbiAgKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBib3R0b20gZHJhd2VyIGJlaGluZCB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJGcm9tVmlldygpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQubmV4dCgpO1xuICAgIHRoaXMuY2xvc2VkU3ViamVjdCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRHJhd2VyVG9WaWV3KGNvbXBvbmVudDogVHlwZTxDPikge1xuICAgIGNvbnN0IGVsZW1lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEJvdHRvbURyYXdlclJlZiwgdXNlVmFsdWU6IHRoaXMgfV1cbiAgICB9KTtcblxuICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KEJvdHRvbURyYXdlckNvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBsaWNhdGlvblJlZi5pbmplY3RvcixcbiAgICAgIGVsZW1lbnRJbmplY3RvclxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5vcHRpb25zPy5ob3N0ID8/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLWNvbnRlbnQnKTtcbiAgICBob3N0RWxlbWVudC5hcHBlbmQoKDxFbWJlZGRlZFZpZXdSZWY8Qz4+dGhpcy5kcmF3ZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpLnJvb3ROb2Rlc1swXSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNsZWFyKCk7XG4gICAgY29uc3QgY29udGVudENvbXBvbmVudFJlZiA9XG4gICAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5kcmF3ZXJIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIGFzc2lnbihjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlLCB0aGlzLm9wdGlvbnM/LmluaXRpYWxTdGF0ZSk7XG5cbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb24oKTtcblxuICAgIHJldHVybiBjb250ZW50Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hEcmF3ZXJGcm9tVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLmRyYXdlckNvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlKCk7XG4gICAgdGhpcy5kZXRhY2hEcmF3ZXJXaXRoQW5pbWF0aW9uRGVsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoRHJhd2VyV2l0aEFuaW1hdGlvbkRlbGF5KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZHJhd2VyQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICB9LCBEUkFXRVJfQU5JTUFUSU9OX1RJTUUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOYXZpZ2F0aW9uKCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICEodGhpcy5vcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uID09PSBmYWxzZSkpIHtcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgICAgIGZpbHRlcigoeyB1cmw6IHRhcmdldFVybCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsV2l0aG91dFBhcmFtcyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0VXJsV2l0aG91dFBhcmFtcyA9IHRhcmdldFVybC5zcGxpdCgnPycpWzBdO1xuXG4gICAgICAgICAgICAvLyB0aGlzIGNoZWNrIGlzIG5vdCB0byBjbG9zZSB0aGUgZHJhd2VyIHdoZW4gdGhlIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UsIGUuZy4gd2hlbiBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRVcmxXaXRob3V0UGFyYW1zICE9PSB0YXJnZXRVcmxXaXRob3V0UGFyYW1zO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25DbG9zZWQkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -110,14 +110,14 @@ export class CountdownIntervalComponent {
110
110
  });
111
111
  }
112
112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountdownIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: { countdownInterval: "countdownInterval" }, outputs: { countdownEnded: "countdownEnded" }, ngImport: i0, template: "<div\n class=\"time-elapsed\"\n data-cy=\"c8y-countdown-interval--countdown\"\n [style.--timescope]=\"countdownInterval + 'ms'\"\n [title]=\"'{{ secondsLeft }} s / {{ interval }} s' | translate: { secondsLeft: secondsUntilRefresh$ | async, interval: countdownInterval / 1000 }\"\n>\n <svg\n [ngClass]=\"{ 'time-on': runSpinner$ | async }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"20\"\n cy=\"20\"\n r=\"15.8\"\n stroke=\"var(--c8y-brand-primary)\"\n stroke-width=\"6\"\n />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: { countdownInterval: "countdownInterval" }, outputs: { countdownEnded: "countdownEnded" }, ngImport: i0, template: "<div\n class=\"time-elapsed\"\n data-cy=\"c8y-countdown-interval--countdown\"\n [style.--timescope]=\"countdownInterval + 'ms'\"\n [title]=\"'{{ secondsLeft }} s / {{ interval }} s' | translate: { secondsLeft: secondsUntilRefresh$ | async, interval: countdownInterval / 1000 }\"\n>\n <svg\n [ngClass]=\"{ 'time-on': runSpinner$ | async }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"20\"\n cy=\"20\"\n r=\"15.8\"\n stroke=\"var(--c8y-brand-primary)\"\n stroke-width=\"6\"\n />\n </svg>\n\n <span data-cy=\"c8y-countdown-interval--seconds\">{{ secondsUntilRefresh$ | async }}</span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountdownIntervalComponent, decorators: [{
116
116
  type: Component,
117
- args: [{ selector: 'c8y-countdown-interval', template: "<div\n class=\"time-elapsed\"\n data-cy=\"c8y-countdown-interval--countdown\"\n [style.--timescope]=\"countdownInterval + 'ms'\"\n [title]=\"'{{ secondsLeft }} s / {{ interval }} s' | translate: { secondsLeft: secondsUntilRefresh$ | async, interval: countdownInterval / 1000 }\"\n>\n <svg\n [ngClass]=\"{ 'time-on': runSpinner$ | async }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"20\"\n cy=\"20\"\n r=\"15.8\"\n stroke=\"var(--c8y-brand-primary)\"\n stroke-width=\"6\"\n />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n</div>\n" }]
117
+ args: [{ selector: 'c8y-countdown-interval', template: "<div\n class=\"time-elapsed\"\n data-cy=\"c8y-countdown-interval--countdown\"\n [style.--timescope]=\"countdownInterval + 'ms'\"\n [title]=\"'{{ secondsLeft }} s / {{ interval }} s' | translate: { secondsLeft: secondsUntilRefresh$ | async, interval: countdownInterval / 1000 }\"\n>\n <svg\n [ngClass]=\"{ 'time-on': runSpinner$ | async }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"20\"\n cy=\"20\"\n r=\"15.8\"\n stroke=\"var(--c8y-brand-primary)\"\n stroke-width=\"6\"\n />\n </svg>\n\n <span data-cy=\"c8y-countdown-interval--seconds\">{{ secondsUntilRefresh$ | async }}</span>\n</div>\n" }]
118
118
  }], propDecorators: { countdownInterval: [{
119
119
  type: Input
120
120
  }], countdownEnded: [{
121
121
  type: Output
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLWludGVydmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY291bnRkb3duLWludGVydmFsL2NvdW50ZG93bi1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2NvdW50ZG93bi1pbnRlcnZhbC9jb3VudGRvd24taW50ZXJ2YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUUvRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBZUU7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlqQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDZCQUE2QjtRQUN6RCxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQTZHaEM7SUFuSUM7O09BRUc7SUFDSCxJQUFhLGlCQUFpQixDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0Is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IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QsIG1hcFRvLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBjb3VudCBkb3duIHNwZWNpZmljIHRpbWUgaW50ZXJ2YWwsIHRoZW4gZW1pdCB3aGVuIGNvdW50ZG93biBlbmRzLlxuICogTmV4dCBjb3VudGRvd24gaXMgc3RhcnRlZCByaWdodCBhZnRlciBwcmV2aW91cyBvbmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb3VudGRvd24taW50ZXJ2YWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRkb3duLWludGVydmFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGNvdW50IGRvd24gZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBjb3VudGRvd25JbnRlcnZhbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY291bnRkb3duSW50ZXJ2YWwgPSBNYXRoLm1heCh2YWx1ZSwgdGhpcy5NSU5JTVVNX0lOVEVSVkFMKTtcbiAgfVxuXG4gIGdldCBjb3VudGRvd25JbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudGRvd25JbnRlcnZhbCB8fCB0aGlzLk1JTklNVU1fSU5URVJWQUw7XG4gIH1cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY291bnRkb3duIGVuZHMuXG4gICAqL1xuICBAT3V0cHV0KCkgY291bnRkb3duRW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcnVuU3Bpbm5lciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgc2Vjb25kc1VudGlsUmVmcmVzaCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuXG4gIHByaXZhdGUgX2NvdW50ZG93bkludGVydmFsOiBudW1iZXI7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTklNVU1fSU5URVJWQUwgPSA1XzAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBPTkVfU0VDT05EID0gMTAwMDsgLy8gT25lIHNlY29uZCBpbiBtaWxsaXNlY29uZHNcbiAgcHJpdmF0ZSBzdGFydCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGNvdW50ZG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGAke01hdGguZmxvb3IodGhpcy5jb3VudGRvd25JbnRlcnZhbCAvIDEwMDApfWApO1xuICAgIHRoaXMuc3RhcnQkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRpYWxpemVDb3VudGRvd25JbnRlcnZhbCgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3RhcnQkLm5leHQobnVsbCk7XG4gIH1cblxuICBzdG9wKHN0b3BBdFplcm8gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucnVuU3Bpbm5lciQubmV4dChmYWxzZSk7XG4gICAgaWYgKHN0b3BBdFplcm8pIHtcbiAgICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQubmV4dCgnMCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlY29uZHNVbnRpbFJlZnJlc2gkLm5leHQoYCR7TWF0aC5mbG9vcih0aGlzLmNvdW50ZG93bkludGVydmFsIC8gMTAwMCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqIEtpY2tzIG9mZiB0aGUgdGltZXIgbG9naWMgYW5kIGFjdGl2YXRlcyBhbnkgYXNzb2NpYXRlZCBVSSBlbGVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvdW50ZG93bkludGVydmFsKCk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWVyU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBjb25zdCBkb2N1bWVudEhpZGRlbkV2ZW50JCA9IHRoaXMuY3JlYXRlRG9jdW1lbnRIaWRkZW5FdmVudFN0cmVhbSgpO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwkID0gdGhpcy5jcmVhdGVJbnRlcnZhbFN0cmVhbSh0aW1lclN0YXJ0JCwgZG9jdW1lbnRIaWRkZW5FdmVudCQpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVUb0ludGVydmFsKGludGVydmFsJCk7XG5cbiAgICB0aW1lclN0YXJ0JC5uZXh0KCk7XG4gICAgdGhpcy5ydW5TcGlubmVyJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gT2JzZXJ2YWJsZSBzdHJlYW0gdGhhdCBlbWl0cyBldmVudHMgd2hlbiB0aGUgZG9jdW1lbnQncyB2aXNpYmlsaXR5IGNoYW5nZXMuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgYG51bGxgIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBkb2N1bWVudCBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEb2N1bWVudEhpZGRlbkV2ZW50U3RyZWFtKCk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiBmcm9tRXZlbnQ8bnVsbD4oZG9jdW1lbnQsICd2aXNpYmlsaXR5Y2hhbmdlJykucGlwZShcbiAgICAgIG1hcFRvKG51bGwpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBtYWluIGludGVydmFsIE9ic2VydmFibGUgZm9yIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqIEBwYXJhbSB0aW1lclN0YXJ0JCAtIEEgU3ViamVjdCB0byBzaWduYWwgdGhlIHN0YXJ0IG9mIHRoZSB0aW1lci5cbiAgICogQHBhcmFtIGRvY3VtZW50SGlkZGVuRXZlbnQkIC0gQW4gT2JzZXJ2YWJsZSBmb3IgZG9jdW1lbnQgdmlzaWJpbGl0eSBjaGFuZ2VzLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgb3JjaGVzdHJhdGVzIHRoZSB0aW1lciBsb2dpYy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW50ZXJ2YWxTdHJlYW0oXG4gICAgdGltZXJTdGFydCQ6IFN1YmplY3Q8dm9pZD4sXG4gICAgZG9jdW1lbnRIaWRkZW5FdmVudCQ6IE9ic2VydmFibGU8bnVsbD5cbiAgKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRpbWVyU3RhcnQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jcmVhdGVUaW1lcigpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiAoZG9jdW1lbnQuaGlkZGVuID8gZG9jdW1lbnRIaWRkZW5FdmVudCQgOiBvZihudWxsKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGltZXIgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZXJ5IHNlY29uZC5cbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGEgbnVtYmVyIGV2ZXJ5IHNlY29uZCwgc3RhcnRpbmcgZnJvbSAwLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVUaW1lcigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aW1lcigwLCB0aGlzLk9ORV9TRUNPTkQpLnBpcGUoXG4gICAgICB0YXAodmFsdWUgPT4gdGhpcy51cGRhdGVSZW1haW5pbmdUaW1lKHZhbHVlKSksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gdmFsdWUgPj0gdGhpcy5jb3VudGRvd25JbnRlcnZhbCAvIHRoaXMuT05FX1NFQ09ORCksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByZW1haW5pbmcgdGltZSBpbiB0aGUgY291bnRkb3duLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgY3VycmVudCB0aW1lciB2YWx1ZSBpbiBzZWNvbmRzLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVSZW1haW5pbmdUaW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcih0aGlzLmNvdW50ZG93bkludGVydmFsIC8gdGhpcy5PTkVfU0VDT05EIC0gdmFsdWUpO1xuICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQubmV4dChgJHtyZW1haW5pbmdTZWNvbmRzfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIGludGVydmFsIE9ic2VydmFibGUgYW5kIHNldHMgdXAgdGhlIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY291bnRkb3duLlxuICAgKiBAcGFyYW0gaW50ZXJ2YWwkIC0gVGhlIGNvdW50ZG93biBpbnRlcnZhbCBPYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9JbnRlcnZhbChpbnRlcnZhbCQ6IE9ic2VydmFibGU8bnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbiA9IGludGVydmFsJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY291bnRkb3duRW5kZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGltZS1lbGFwc2VkXCJcbiAgZGF0YS1jeT1cImM4eS1jb3VudGRvd24taW50ZXJ2YWwtLWNvdW50ZG93blwiXG4gIFtzdHlsZS4tLXRpbWVzY29wZV09XCJjb3VudGRvd25JbnRlcnZhbCArICdtcydcIlxuICBbdGl0bGVdPVwiJ3t7IHNlY29uZHNMZWZ0IH19IHMgLyB7eyBpbnRlcnZhbCB9fSBzJyB8IHRyYW5zbGF0ZTogeyBzZWNvbmRzTGVmdDogc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYywgaW50ZXJ2YWw6IGNvdW50ZG93bkludGVydmFsIC8gMTAwMCB9XCJcbj5cbiAgPHN2Z1xuICAgIFtuZ0NsYXNzXT1cInsgJ3RpbWUtb24nOiBydW5TcGlubmVyJCB8IGFzeW5jIH1cIlxuICAgIHZpZXdCb3g9XCIwIDAgNDAgNDBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxjaXJjbGVcbiAgICAgIGN4PVwiMjBcIlxuICAgICAgY3k9XCIyMFwiXG4gICAgICByPVwiMTUuOFwiXG4gICAgICBzdHJva2U9XCJ2YXIoLS1jOHktYnJhbmQtcHJpbWFyeSlcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiXG4gICAgLz5cbiAgPC9zdmc+XG5cbiAgPHNwYW4+e3sgc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYyB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLWludGVydmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY291bnRkb3duLWludGVydmFsL2NvdW50ZG93bi1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2NvdW50ZG93bi1pbnRlcnZhbC9jb3VudGRvd24taW50ZXJ2YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUUvRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBZUU7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlqQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDZCQUE2QjtRQUN6RCxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQTZHaEM7SUFuSUM7O09BRUc7SUFDSCxJQUFhLGlCQUFpQixDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0Is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IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QsIG1hcFRvLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBjb3VudCBkb3duIHNwZWNpZmljIHRpbWUgaW50ZXJ2YWwsIHRoZW4gZW1pdCB3aGVuIGNvdW50ZG93biBlbmRzLlxuICogTmV4dCBjb3VudGRvd24gaXMgc3RhcnRlZCByaWdodCBhZnRlciBwcmV2aW91cyBvbmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb3VudGRvd24taW50ZXJ2YWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRkb3duLWludGVydmFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGNvdW50IGRvd24gZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBjb3VudGRvd25JbnRlcnZhbCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY291bnRkb3duSW50ZXJ2YWwgPSBNYXRoLm1heCh2YWx1ZSwgdGhpcy5NSU5JTVVNX0lOVEVSVkFMKTtcbiAgfVxuXG4gIGdldCBjb3VudGRvd25JbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb3VudGRvd25JbnRlcnZhbCB8fCB0aGlzLk1JTklNVU1fSU5URVJWQUw7XG4gIH1cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY291bnRkb3duIGVuZHMuXG4gICAqL1xuICBAT3V0cHV0KCkgY291bnRkb3duRW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcnVuU3Bpbm5lciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgc2Vjb25kc1VudGlsUmVmcmVzaCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuXG4gIHByaXZhdGUgX2NvdW50ZG93bkludGVydmFsOiBudW1iZXI7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTklNVU1fSU5URVJWQUwgPSA1XzAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBPTkVfU0VDT05EID0gMTAwMDsgLy8gT25lIHNlY29uZCBpbiBtaWxsaXNlY29uZHNcbiAgcHJpdmF0ZSBzdGFydCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGNvdW50ZG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGAke01hdGguZmxvb3IodGhpcy5jb3VudGRvd25JbnRlcnZhbCAvIDEwMDApfWApO1xuICAgIHRoaXMuc3RhcnQkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRpYWxpemVDb3VudGRvd25JbnRlcnZhbCgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3RhcnQkLm5leHQobnVsbCk7XG4gIH1cblxuICBzdG9wKHN0b3BBdFplcm8gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucnVuU3Bpbm5lciQubmV4dChmYWxzZSk7XG4gICAgaWYgKHN0b3BBdFplcm8pIHtcbiAgICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQubmV4dCgnMCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlY29uZHNVbnRpbFJlZnJlc2gkLm5leHQoYCR7TWF0aC5mbG9vcih0aGlzLmNvdW50ZG93bkludGVydmFsIC8gMTAwMCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqIEtpY2tzIG9mZiB0aGUgdGltZXIgbG9naWMgYW5kIGFjdGl2YXRlcyBhbnkgYXNzb2NpYXRlZCBVSSBlbGVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvdW50ZG93bkludGVydmFsKCk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWVyU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBjb25zdCBkb2N1bWVudEhpZGRlbkV2ZW50JCA9IHRoaXMuY3JlYXRlRG9jdW1lbnRIaWRkZW5FdmVudFN0cmVhbSgpO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwkID0gdGhpcy5jcmVhdGVJbnRlcnZhbFN0cmVhbSh0aW1lclN0YXJ0JCwgZG9jdW1lbnRIaWRkZW5FdmVudCQpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVUb0ludGVydmFsKGludGVydmFsJCk7XG5cbiAgICB0aW1lclN0YXJ0JC5uZXh0KCk7XG4gICAgdGhpcy5ydW5TcGlubmVyJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gT2JzZXJ2YWJsZSBzdHJlYW0gdGhhdCBlbWl0cyBldmVudHMgd2hlbiB0aGUgZG9jdW1lbnQncyB2aXNpYmlsaXR5IGNoYW5nZXMuXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgYG51bGxgIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBkb2N1bWVudCBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEb2N1bWVudEhpZGRlbkV2ZW50U3RyZWFtKCk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiBmcm9tRXZlbnQ8bnVsbD4oZG9jdW1lbnQsICd2aXNpYmlsaXR5Y2hhbmdlJykucGlwZShcbiAgICAgIG1hcFRvKG51bGwpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBtYWluIGludGVydmFsIE9ic2VydmFibGUgZm9yIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqIEBwYXJhbSB0aW1lclN0YXJ0JCAtIEEgU3ViamVjdCB0byBzaWduYWwgdGhlIHN0YXJ0IG9mIHRoZSB0aW1lci5cbiAgICogQHBhcmFtIGRvY3VtZW50SGlkZGVuRXZlbnQkIC0gQW4gT2JzZXJ2YWJsZSBmb3IgZG9jdW1lbnQgdmlzaWJpbGl0eSBjaGFuZ2VzLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgb3JjaGVzdHJhdGVzIHRoZSB0aW1lciBsb2dpYy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW50ZXJ2YWxTdHJlYW0oXG4gICAgdGltZXJTdGFydCQ6IFN1YmplY3Q8dm9pZD4sXG4gICAgZG9jdW1lbnRIaWRkZW5FdmVudCQ6IE9ic2VydmFibGU8bnVsbD5cbiAgKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRpbWVyU3RhcnQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jcmVhdGVUaW1lcigpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiAoZG9jdW1lbnQuaGlkZGVuID8gZG9jdW1lbnRIaWRkZW5FdmVudCQgOiBvZihudWxsKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGltZXIgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZXJ5IHNlY29uZC5cbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGEgbnVtYmVyIGV2ZXJ5IHNlY29uZCwgc3RhcnRpbmcgZnJvbSAwLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVUaW1lcigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aW1lcigwLCB0aGlzLk9ORV9TRUNPTkQpLnBpcGUoXG4gICAgICB0YXAodmFsdWUgPT4gdGhpcy51cGRhdGVSZW1haW5pbmdUaW1lKHZhbHVlKSksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gdmFsdWUgPj0gdGhpcy5jb3VudGRvd25JbnRlcnZhbCAvIHRoaXMuT05FX1NFQ09ORCksXG4gICAgICBmaXJzdCgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByZW1haW5pbmcgdGltZSBpbiB0aGUgY291bnRkb3duLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgY3VycmVudCB0aW1lciB2YWx1ZSBpbiBzZWNvbmRzLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVSZW1haW5pbmdUaW1lKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcih0aGlzLmNvdW50ZG93bkludGVydmFsIC8gdGhpcy5PTkVfU0VDT05EIC0gdmFsdWUpO1xuICAgIHRoaXMuc2Vjb25kc1VudGlsUmVmcmVzaCQubmV4dChgJHtyZW1haW5pbmdTZWNvbmRzfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIGludGVydmFsIE9ic2VydmFibGUgYW5kIHNldHMgdXAgdGhlIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY291bnRkb3duLlxuICAgKiBAcGFyYW0gaW50ZXJ2YWwkIC0gVGhlIGNvdW50ZG93biBpbnRlcnZhbCBPYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9JbnRlcnZhbChpbnRlcnZhbCQ6IE9ic2VydmFibGU8bnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbiA9IGludGVydmFsJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY291bnRkb3duRW5kZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGltZS1lbGFwc2VkXCJcbiAgZGF0YS1jeT1cImM4eS1jb3VudGRvd24taW50ZXJ2YWwtLWNvdW50ZG93blwiXG4gIFtzdHlsZS4tLXRpbWVzY29wZV09XCJjb3VudGRvd25JbnRlcnZhbCArICdtcydcIlxuICBbdGl0bGVdPVwiJ3t7IHNlY29uZHNMZWZ0IH19IHMgLyB7eyBpbnRlcnZhbCB9fSBzJyB8IHRyYW5zbGF0ZTogeyBzZWNvbmRzTGVmdDogc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYywgaW50ZXJ2YWw6IGNvdW50ZG93bkludGVydmFsIC8gMTAwMCB9XCJcbj5cbiAgPHN2Z1xuICAgIFtuZ0NsYXNzXT1cInsgJ3RpbWUtb24nOiBydW5TcGlubmVyJCB8IGFzeW5jIH1cIlxuICAgIHZpZXdCb3g9XCIwIDAgNDAgNDBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxjaXJjbGVcbiAgICAgIGN4PVwiMjBcIlxuICAgICAgY3k9XCIyMFwiXG4gICAgICByPVwiMTUuOFwiXG4gICAgICBzdHJva2U9XCJ2YXIoLS1jOHktYnJhbmQtcHJpbWFyeSlcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiXG4gICAgLz5cbiAgPC9zdmc+XG5cbiAgPHNwYW4gZGF0YS1jeT1cImM4eS1jb3VudGRvd24taW50ZXJ2YWwtLXNlY29uZHNcIj57eyBzZWNvbmRzVW50aWxSZWZyZXNoJCB8IGFzeW5jIH19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -29,4 +29,4 @@ export var PackageType;
29
29
  */
30
30
  PackageType["ARCHIVED"] = "ARCHIVED";
31
31
  })(PackageType || (PackageType = {}));
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcGx1Z2lucy9wbHVnaW5zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBTixJQUFZLHVCQU1YO0FBTkQsV0FBWSx1QkFBdUI7SUFDakMsZ0RBQXFCLENBQUE7SUFDckIsNENBQWlCLENBQUE7SUFDakIsZ0RBQXFCLENBQUE7SUFDckIsOENBQW1CLENBQUE7SUFDbkIsd0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFOVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBTWxDO0FBRUQsTUFBTSxDQUFOLElBQVksV0FxQlg7QUFyQkQsV0FBWSxXQUFXO0lBQ3JCOztPQUVHO0lBQ0gsb0NBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILGtDQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsZ0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBckJXLFdBQVcsS0FBWCxXQUFXLFFBcUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgSUFwcGxpY2F0aW9uLCBWZXJzaW9uaW5nTWF0cml4IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5zRXhwb3J0U2NvcGVzIH0gZnJvbSAnLi4vY29tbW9uL0FwcGxpY2F0aW9uT3B0aW9ucyc7XG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbnNDb25maWcge1xuICByZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM7XG4gIGV4Y2x1ZGVkUmVtb3Rlcz86IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucztcbn1cblxuZXhwb3J0IGVudW0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMge1xuICBPUlBIQU5FRCA9ICdPUlBIQU5FRCcsXG4gIExBVEVTVCA9ICdMQVRFU1QnLFxuICBPVVREQVRFRCA9ICdPVVREQVRFRCcsXG4gIFJFVk9LRUQgPSAnUkVWT0tFRCcsXG4gIEFVVE8gPSAnQVVUTydcbn1cblxuZXhwb3J0IGVudW0gUGFja2FnZVR5cGUge1xuICAvKipcbiAgICogQSBwYWNrYWdlIGNvbWluZyBmcm9tIHRoZSBvZmZpY2lhbCBTb2Z0d2FyZSBBRyBnaXRodWIgZW50ZXJwcmlzZS5cbiAgICovXG4gIE9GRklDSUFMID0gJ09GRklDSUFMJyxcbiAgLyoqXG4gICAqIEEgcGFja2FnZSBjb21pbmcgZnJvbSBhbnkgY29ubmVjdGVkIHBhcnRuZXIgcmVwb3NpdG9yeS5cbiAgICovXG4gIENPTU1VTklUWSA9ICdDT01NVU5JVFknLFxuICAvKipcbiAgICogQSBwYWNrYWdlIHdoZXJlIHRoZSBvcmlnaW4gaXMgdW5rbm93biAoZS5nLiB1cGxvYWRlZCB0byBtYW5hZ2VtZW50IHdpdGggYW4gdW5rbm93biBsYWJlbClcbiAgICovXG4gIFVOS05PV04gPSAnVU5LTk9XTicsXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBwYWNrYWdlIGUuZy4gdXBsb2FkZWQgdG8gdGhlIHRlbmFudCBieSBhIHVzZXJcbiAgICovXG4gIENVU1RPTSA9ICdDVVNUT00nLFxuICAvKipcbiAgICogQSBwYWNrYWdlIHRoYXQgd2FzIGFyY2hpdmVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICBBUkNISVZFRCA9ICdBUkNISVZFRCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvblBsdWdpbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGlkTGF0ZXN0OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBzY29wZT86IFBsdWdpbnNFeHBvcnRTY29wZXM7XG4gIGluc3RhbGxlZD86IGJvb2xlYW47XG4gIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuICBzdGF0dXM/OiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cztcbiAgdGFncz86IHN0cmluZ1tdO1xuICBsaWNlbnNlPzogc3RyaW5nO1xuICB0eXBlPzogUGFja2FnZVR5cGU7XG4gIHZlcnNpb25pbmdNYXRyaXg/OiBWZXJzaW9uaW5nTWF0cml4O1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIG9yaWdpbkFwcD86IElBcHBsaWNhdGlvbjtcbiAgaW5zdGFsbGVkVmlhVGFnPzogc3RyaW5nIHwgZmFsc2U7XG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcGx1Z2lucy9wbHVnaW5zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBTixJQUFZLHVCQU1YO0FBTkQsV0FBWSx1QkFBdUI7SUFDakMsZ0RBQXFCLENBQUE7SUFDckIsNENBQWlCLENBQUE7SUFDakIsZ0RBQXFCLENBQUE7SUFDckIsOENBQW1CLENBQUE7SUFDbkIsd0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFOVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBTWxDO0FBRUQsTUFBTSxDQUFOLElBQVksV0FxQlg7QUFyQkQsV0FBWSxXQUFXO0lBQ3JCOztPQUVHO0lBQ0gsb0NBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCxzQ0FBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILGtDQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsZ0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBckJXLFdBQVcsS0FBWCxXQUFXLFFBcUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgSUFwcGxpY2F0aW9uLCBWZXJzaW9uaW5nTWF0cml4IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5zRXhwb3J0U2NvcGVzIH0gZnJvbSAnLi4vY29tbW9uL0FwcGxpY2F0aW9uT3B0aW9ucyc7XG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbnNDb25maWcge1xuICByZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM7XG4gIGV4Y2x1ZGVkUmVtb3Rlcz86IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucztcbn1cblxuZXhwb3J0IGVudW0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMge1xuICBPUlBIQU5FRCA9ICdPUlBIQU5FRCcsXG4gIExBVEVTVCA9ICdMQVRFU1QnLFxuICBPVVREQVRFRCA9ICdPVVREQVRFRCcsXG4gIFJFVk9LRUQgPSAnUkVWT0tFRCcsXG4gIEFVVE8gPSAnQVVUTydcbn1cblxuZXhwb3J0IGVudW0gUGFja2FnZVR5cGUge1xuICAvKipcbiAgICogQSBwYWNrYWdlIGNvbWluZyBmcm9tIHRoZSBvZmZpY2lhbCBTb2Z0d2FyZSBBRyBnaXRodWIgZW50ZXJwcmlzZS5cbiAgICovXG4gIE9GRklDSUFMID0gJ09GRklDSUFMJyxcbiAgLyoqXG4gICAqIEEgcGFja2FnZSBjb21pbmcgZnJvbSBhbnkgY29ubmVjdGVkIHBhcnRuZXIgcmVwb3NpdG9yeS5cbiAgICovXG4gIENPTU1VTklUWSA9ICdDT01NVU5JVFknLFxuICAvKipcbiAgICogQSBwYWNrYWdlIHdoZXJlIHRoZSBvcmlnaW4gaXMgdW5rbm93biAoZS5nLiB1cGxvYWRlZCB0byBtYW5hZ2VtZW50IHdpdGggYW4gdW5rbm93biBsYWJlbClcbiAgICovXG4gIFVOS05PV04gPSAnVU5LTk9XTicsXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBwYWNrYWdlIGUuZy4gdXBsb2FkZWQgdG8gdGhlIHRlbmFudCBieSBhIHVzZXJcbiAgICovXG4gIENVU1RPTSA9ICdDVVNUT00nLFxuICAvKipcbiAgICogQSBwYWNrYWdlIHRoYXQgd2FzIGFyY2hpdmVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICBBUkNISVZFRCA9ICdBUkNISVZFRCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvblBsdWdpbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGlkTGF0ZXN0OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBzY29wZT86IFBsdWdpbnNFeHBvcnRTY29wZXM7XG4gIGluc3RhbGxlZD86IGJvb2xlYW47XG4gIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuICBzdGF0dXM/OiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cztcbiAgdGFncz86IHN0cmluZ1tdO1xuICBsaWNlbnNlPzogc3RyaW5nO1xuICB0eXBlPzogUGFja2FnZVR5cGU7XG4gIHZlcnNpb25pbmdNYXRyaXg/OiBWZXJzaW9uaW5nTWF0cml4O1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIG9yaWdpbkFwcD86IElBcHBsaWNhdGlvbjtcbiAgaW5zdGFsbGVkVmlhVGFnPzogc3RyaW5nIHwgZmFsc2U7XG4gIHJlYWRtZVBhdGg/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { ApplicationAvailability } from '@c8y/client';
2
+ import { ApplicationAvailability, FetchClient } from '@c8y/client';
3
3
  import { ApplicationService } from '@c8y/client';
4
4
  import { cloneDeep, get, uniqBy } from 'lodash-es';
5
5
  import { coerce, compare } from 'semver';
@@ -31,9 +31,10 @@ export class PluginsService {
31
31
  }
32
32
  return `${contextPath}@${version}/${moduleName}`;
33
33
  }
34
- constructor(applicationService, appStateService) {
34
+ constructor(applicationService, appStateService, client) {
35
35
  this.applicationService = applicationService;
36
36
  this.appStateService = appStateService;
37
+ this.client = client;
37
38
  }
38
39
  /**
39
40
  * Fetches a list of available packages.
@@ -280,6 +281,25 @@ export class PluginsService {
280
281
  }));
281
282
  return extendedPlugins;
282
283
  }
284
+ async getReadmeFileContent(baseUrl) {
285
+ const readmeFile = await this.getReadmeFile(baseUrl);
286
+ if (readmeFile.status === 200) {
287
+ return await readmeFile.text();
288
+ }
289
+ return '';
290
+ }
291
+ async getReadmeFile(baseUrl) {
292
+ let result;
293
+ const options = {
294
+ method: 'GET',
295
+ headers: { 'Content-Type': 'text/markdown' }
296
+ };
297
+ result = await this.client.fetch(`${baseUrl}README.md`, options);
298
+ if (result && result.status === 404) {
299
+ result = await this.client.fetch(`${baseUrl}readme.md`, options);
300
+ }
301
+ return result;
302
+ }
283
303
  isSelfScopedPlugin(plugin, contextPath) {
284
304
  return (plugin.scope === PluginsExportScopes.SELF &&
285
305
  (!contextPath || plugin.contextPath === contextPath));
@@ -393,10 +413,10 @@ export class PluginsService {
393
413
  const [contextPath, moduleName] = id.split('/');
394
414
  return { contextPath, moduleName };
395
415
  }
396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PluginsService, deps: [{ token: i1.ApplicationService }, { token: i2.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
416
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PluginsService, deps: [{ token: i1.ApplicationService }, { token: i2.AppStateService }, { token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
397
417
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PluginsService }); }
398
418
  }
399
419
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PluginsService, decorators: [{
400
420
  type: Injectable
401
- }], ctorParameters: () => [{ type: i1.ApplicationService }, { type: i2.AppStateService }] });
402
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9wbHVnaW5zL3BsdWdpbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFLeEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQXFCLFdBQVcsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUdsRSxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsNEJBQTRCLENBQUMsT0FBaUM7UUFDbkUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9DLE9B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QUNsRSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELE9BQU87WUFDVCxDQUFDO1lBQ0QsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDbEYsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxFQUFVO1FBQzlCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7K0dBL2ZVLGNBQWM7bUhBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LFxuICBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMsXG4gIElBcHBsaWNhdGlvbixcbiAgSUFwcGxpY2F0aW9uVmVyc2lvbixcbiAgSU1hbmlmZXN0XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCB1bmlxQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29lcmNlLCBjb21wYXJlIH0gZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25QbHVnaW4sIFBhY2thZ2VUeXBlLCBQbHVnaW5zQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW5zLm1vZGVsJztcbmltcG9ydCB7IFBsdWdpbnNFeHBvcnRTY29wZXMgfSBmcm9tICcuLi9jb21tb24vQXBwbGljYXRpb25PcHRpb25zJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4vcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xuICBzdGF0aWMgY29udmVydEluc3RhbGxlZFJlbW90ZXNUb0lkcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGltcG9ydENvbnRleHRQYXRocyA9IE9iamVjdC5rZXlzKHJlbW90ZXMpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSBbXTtcbiAgICBpbXBvcnRDb250ZXh0UGF0aHMuZm9yRWFjaChjb250ZXh0UGF0aCA9PiB7XG4gICAgICBjb25zdCBtb2R1bGVOYW1lcyA9IHJlbW90ZXNbY29udGV4dFBhdGhdIHx8IFtdO1xuICAgICAgcGx1Z2lucy5wdXNoKFxuICAgICAgICAuLi5tb2R1bGVOYW1lcy5tYXAobW9kdWxlID0+IFBsdWdpbnNTZXJ2aWNlLmNyZWF0ZVBsdWdpbklkKGNvbnRleHRQYXRoLCBtb2R1bGUsICcnLCB0cnVlKSlcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBsdWdpbnM7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGx1Z2luSWQoXG4gICAgY29udGV4dFBhdGg6IHN0cmluZyxcbiAgICBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luIHwgc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICB1c2VMYXRlc3QgPSBmYWxzZVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0eXBlb2YgcGx1Z2luID09PSAnc3RyaW5nJyA/IHBsdWdpbiA6IHBsdWdpbi5tb2R1bGU7XG4gICAgaWYgKHVzZUxhdGVzdCkge1xuICAgICAgcmV0dXJuIGAke2NvbnRleHRQYXRofS8ke21vZHVsZU5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbnRleHRQYXRofUAke3ZlcnNpb259LyR7bW9kdWxlTmFtZX1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHBhY2thZ2VzLlxuICAgKiBAcGFyYW0gcGFyYW1zIEFkZGl0aW9uYWwgcXVlcnkgcGFyYW1ldGVycy5cbiAgICogQHJldHVybnMgUmV0dXJucyBhIGxpc3Qgb2YgcGFja2FnZXMuXG4gICAqL1xuICBhc3luYyBsaXN0UGFja2FnZXMocGFyYW1zOiBhbnkgPSB7fSk6IFByb21pc2U8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5saXN0QXBwbGljYXRpb25zQnlDdXJyZW50VGVuYW50KHBhcmFtcyk7XG4gICAgY29uc3Qgd2ViQXBwcyA9IGFwcHMuZmlsdGVyKGFwcCA9PiB0aGlzLmlzUGFja2FnZShhcHApKTtcbiAgICBjb25zdCB1bmlxdWVXZWJBcHBzID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVzKHdlYkFwcHMsICdjb250ZXh0UGF0aCcpO1xuICAgIHJldHVybiB1bmlxdWVXZWJBcHBzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbiBhcHBsaWNhdGlvbiBpcyBhIHBhY2thZ2UuXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiBBcHBsaWNhdGlvbiBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhIHBhY2thZ2UuXG4gICAqL1xuICBpc1BhY2thZ2UoYXBwbGljYXRpb246IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcHBsaWNhdGlvbi5tYW5pZmVzdD8uaXNQYWNrYWdlID09PSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbW90ZXMgZmllbGQgaW4gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gYnkgYWRkaW5nIG5ldyBwbHVnaW5zLlxuICAgKiBJbXBvcnRhbnQ6IGlmIHRoZSByZW1vdGVzIG9iamVjdCBpcyBub3Qgc2V0IG9uIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCxcbiAgICogcmVtb3RlcyB3aWxsIG5vdCBiZSBhZGRlZC4gTWFrZSBzdXJlIHRoYXQgdGhpcyBvYmplY3QgZXhpc3RzIGluIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEBwYXJhbSBwbHVnaW5zIExpc3Qgb2YgcmVtb3RlcyB0byBiZSBhZGRlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB1cGRhdGVkIGFwcGxpY2F0aW9uIHJlbW90ZXMuXG4gICAqL1xuICBhc3luYyBhZGRSZW1vdGVzKFxuICAgIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24sXG4gICAgcGx1Z2luczogQXBwbGljYXRpb25QbHVnaW4gfCBBcHBsaWNhdGlvblBsdWdpbltdXG4gICk6IFByb21pc2U8UGx1Z2luc0NvbmZpZz4ge1xuICAgIGNvbnN0IHBsdWdpbnNBcnJheSA9IEFycmF5LmlzQXJyYXkocGx1Z2lucykgPyBwbHVnaW5zIDogW3BsdWdpbnNdO1xuICAgIGNvbnN0IG1hbmlmZXN0UmVtb3RlcyA9IGFwcGxpY2F0aW9uLm1hbmlmZXN0Py5yZW1vdGVzIHx8IHt9O1xuICAgIGNvbnN0IGFwcENvbmZpZzogUGx1Z2luc0NvbmZpZyB8IHVuZGVmaW5lZCA9IGFwcGxpY2F0aW9uPy5jb25maWcgYXMgUGx1Z2luc0NvbmZpZztcbiAgICBjb25zdCBhcHBDb25maWdSZW1vdGVzID0gYXBwQ29uZmlnPy5yZW1vdGVzIHx8IG1hbmlmZXN0UmVtb3RlcztcbiAgICBjb25zdCBhcHBDb25maWdFeGNsdWRlZFJlbW90ZXMgPSBhcHBDb25maWc/LmV4Y2x1ZGVkUmVtb3RlcyB8fCB7fTtcbiAgICAvLyBvbmx5IG5vcm1hbCBhbmQgc2VsZiBvcHRpb25hbCBzY29wZWQgcGx1Z2lucyBzaG91bGQgYmUgYWRkZWQgdG8gcmVtb3Rlc1xuICAgIC8vIHNlbGYgc2NvcGVkIHBsdWdpbnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkXG4gICAgY29uc3QgYWxsUGx1Z2luc0V4Y2VwdFNlbGZTY29wZWQgPSB0aGlzLmdldEFsbFBsdWdpbnNFeGNlcHRTZWxmU2NvcGVkKFxuICAgICAgcGx1Z2luc0FycmF5LFxuICAgICAgYXBwbGljYXRpb24uY29udGV4dFBhdGhcbiAgICApO1xuICAgIGNvbnN0IG5ld1JlbW90ZXMgPSB0aGlzLmFkZFBsdWdpblRvUmVtb3Rlc0NvbmZpZyhhcHBDb25maWdSZW1vdGVzLCBhbGxQbHVnaW5zRXhjZXB0U2VsZlNjb3BlZCk7XG4gICAgLy8gc2hvdWxkIGJlIHVucHJvYmxlbWF0aWMgdG8gcmVtb3ZlIGFsbCBjYXRlZ29yaWVzIG9mIHBsdWdpbnMgZnJvbSBleGNsdWRlZCByZW1vdGVzXG4gICAgY29uc3QgbmV3RXhjbHVkZWRSZW1vdGVzID0gdGhpcy5yZW1vdmVQbHVnaW5zRnJvbVJlbW90ZXNDb25maWcoXG4gICAgICBhcHBDb25maWdFeGNsdWRlZFJlbW90ZXMsXG4gICAgICBwbHVnaW5zXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGVSZW1vdGVzSW5BcHBDb25maWcoYXBwbGljYXRpb24sIG5ld1JlbW90ZXMsIG5ld0V4Y2x1ZGVkUmVtb3Rlcyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVtb3RlcyBmaWVsZCBpbiB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBieSByZW1vdmluZyBwbHVnaW5zLlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEBwYXJhbSBwbHVnaW5zIExpc3Qgb2YgcmVtb3RlcyB0byBiZSByZW1vdmVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHVwZGF0ZWQgYXBwbGljYXRpb24gcmVtb3Rlcy5cbiAgICovXG4gIGFzeW5jIHJlbW92ZVJlbW90ZXMoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBwbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbiB8IEFwcGxpY2F0aW9uUGx1Z2luW11cbiAgKTogUHJvbWlzZTxQbHVnaW5zQ29uZmlnPiB7XG4gICAgY29uc3QgcGx1Z2luc0FycmF5ID0gQXJyYXkuaXNBcnJheShwbHVnaW5zKSA/IHBsdWdpbnMgOiBbcGx1Z2luc107XG4gICAgY29uc3QgbWFuaWZlc3RSZW1vdGVzID0gYXBwbGljYXRpb24ubWFuaWZlc3Q/LnJlbW90ZXMgfHwge307XG4gICAgY29uc3QgYXBwQ29uZmlnOiBQbHVnaW5zQ29uZmlnIHwgdW5kZWZpbmVkID0gYXBwbGljYXRpb24/LmNvbmZpZyBhcyBQbHVnaW5zQ29uZmlnO1xuICAgIGNvbnN0IGFwcENvbmZpZ1JlbW90ZXMgPSBhcHBDb25maWc/LnJlbW90ZXMgfHwgbWFuaWZlc3RSZW1vdGVzO1xuICAgIGNvbnN0IGFwcENvbmZpZ0V4Y2x1ZGVkUmVtb3RlcyA9IGFwcENvbmZpZz8uZXhjbHVkZWRSZW1vdGVzIHx8IHt9O1xuICAgIC8vIGFwcCBwbHVnaW5zIG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHJlbW90ZXNcbiAgICBjb25zdCBuZXdSZW1vdGVzID0gdGhpcy5yZW1vdmVQbHVnaW5zRnJvbVJlbW90ZXNDb25maWcoYXBwQ29uZmlnUmVtb3RlcywgcGx1Z2lucyk7XG4gICAgLy8gc2VsZiBzY29wZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFkZGVkIHRvIGV4Y2x1ZGVkIHJlbW90ZXNcbiAgICAvLyBhcyB0aGV5IHdvdWxkIGJlIG90aGVyd2lzZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHJlbW90ZXNcbiAgICBjb25zdCBzZWxmU2NvcGVkUGx1Z2lucyA9IHRoaXMuZ2V0U2VsZlNjb3BlZFBsdWdpbnMocGx1Z2luc0FycmF5LCBhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCk7XG4gICAgY29uc3QgbmV3RXhjbHVkZWRSZW1vdGVzID0gdGhpcy5hZGRQbHVnaW5Ub1JlbW90ZXNDb25maWcoXG4gICAgICBhcHBDb25maWdFeGNsdWRlZFJlbW90ZXMsXG4gICAgICBzZWxmU2NvcGVkUGx1Z2luc1xuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlUmVtb3Rlc0luQXBwQ29uZmlnKGFwcGxpY2F0aW9uLCBuZXdSZW1vdGVzLCBuZXdFeGNsdWRlZFJlbW90ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbW90ZXMgZmllbGQgaW4gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiBBcHBsaWNhdGlvbiBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHBhcmFtIHBsdWdpbnMgTGlzdCBvZiByZW1vdGVzIHRvIGJlIGFkZGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHVwZGF0ZWQgYXBwbGljYXRpb24gcmVtb3Rlcy5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZVJlbW90ZXNJbkFwcENvbmZpZyhcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICBleGNsdWRlZFJlbW90ZXM/OiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNcbiAgKTogUHJvbWlzZTxQbHVnaW5zQ29uZmlnPiB7XG4gICAgY29uc3QgdXBkYXRlZEFwcFdpdGhDb25maWcgPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS51cGRhdGVBcHBsaWNhdGlvbkNvbmZpZyhcbiAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAge1xuICAgICAgICByZW1vdGVzOiBwbHVnaW5zLFxuICAgICAgICBleGNsdWRlZFJlbW90ZXM6IGV4Y2x1ZGVkUmVtb3RlcyB8fCB7fVxuICAgICAgfSBhcyBQbHVnaW5zQ29uZmlnXG4gICAgKTtcbiAgICByZXR1cm4gdXBkYXRlZEFwcFdpdGhDb25maWc/LmNvbmZpZyB8fCB7IHJlbW90ZXM6IHt9IH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiBBcHBsaWNhdGlvbiBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gICAqL1xuICBhc3luYyBnZXRDdW11bG9jaXR5SnNvbkZpbGUoYXBwbGljYXRpb246IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IGM4eUpzb24gPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRBcHBNYW5pZmVzdChhcHBsaWNhdGlvbik7XG4gICAgaWYgKCFjOHlKc29uLnJlbW90ZXMpIHtcbiAgICAgIGM4eUpzb24ucmVtb3RlcyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4gYzh5SnNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIHN0YXRlIG9mIHJlbW90ZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gKHdoZW4gaXQncyBtaXNzaW5nKSwgYmFzZWQgb24gdGhlIGxpc3Qgb2YgcmVtb3RlcyBiZWluZyBpbiB0aGUgYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiAgQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBsaXN0IG9mIHJlbW90ZXMgdGhhdCBoYXMgYmVlbiBhc3NpZ25lZCB0byB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqL1xuICBhc3luYyBzZXRJbml0aWFsUmVtb3RlcyhhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0OiBJTWFuaWZlc3QgPSBhd2FpdCB0aGlzLmdldEN1bXVsb2NpdHlKc29uRmlsZShhcHBsaWNhdGlvbik7XG4gICAgICBjb25zdCBtYW5pZmVzdFJlbW90ZXM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IG1hbmlmZXN0LnJlbW90ZXM7XG5cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZVJlbW90ZXNJbkFwcENvbmZpZyhhcHBsaWNhdGlvbiwgbWFuaWZlc3RSZW1vdGVzIHx8IHt9LCB7fSk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVzZXRSZW1vdGVzKGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlQXBwbGljYXRpb25Db25maWcoYXBwbGljYXRpb24sIHtcbiAgICAgIHJlbW90ZXM6IHVuZGVmaW5lZCxcbiAgICAgIGV4Y2x1ZGVkUmVtb3RlczogdW5kZWZpbmVkXG4gICAgfSBhcyBQbHVnaW5zQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0cyB2ZXJzaW9ucyBsaXN0IG9yIGxpc3Qgb2Ygb2JqZWN0cyBieSB2ZXJzaW9uIHByb3BlcnR5XG4gICAqIEByZXR1cm5zIGxpc3Qgb2YgdmVyc2lvbnMgYXMgYXJyYXkgb2Ygc3RyaW5ncyBvciBhcnJheSBvZiBvYmplY3RzIHNvcnRlZCBieSB2ZXJzaW9uIHByb3BlcnR5XG4gICAqXG4gICAqIEBwYXJhbSB7eyBsaXN0OiBUW107IHBhdGg6IHN0cmluZ1tdIH0gfCBzdHJpbmdbXX0gc291cmNlIGRhdGEgdG8gc29ydFxuICAgKiBAcGFyYW0geydhc2MnIHwgJ2Rlc2MnfSBvcmRlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciBvZiBzb3J0aW5nXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgZGF0YSA9IFsnMS41LjAnLCAnMi4wLjAnXTtcbiAgICogY29uc3Qgc29ydGVkRGF0YSA9IHBsdWdpbnNTZXJ2aWNlLnNvcnRWZXJzaW9ucyh2ZXJzaW9ucywgJ2Rlc2MnKTtcbiAgICogLy8gc29ydGVkRGF0YTpcbiAgICogLy8gWycyLjAuMCcsICcxLjUuMCddXG4gICAqIGBgYFxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGRhdGEgPSBbXG4gICAqICB7YXBwOiB7YXBwVmVyc2lvbjogJzEuNS4wJ319LFxuICAgKiAge2FwcDoge2FwcFZlcnNpb246ICcyLjAuMCd9fSxcbiAgICogXTtcbiAgICogY29uc3Qgc29ydGVkRGF0YSA9IHBsdWdpbnNTZXJ2aWNlLnNvcnRWZXJzaW9ucyh7bGlzdDogZGF0YSwgcGF0aDogWydhcHAnLCAnYXBwVmVyc2lvbiddfSwgJ2Rlc2MnKTtcbiAgICogLy8gc29ydGVkRGF0YTpcbiAgICogLy8gW1xuICAgKiAvLyAge2FwcDoge2FwcFZlcnNpb246ICcyLjAuMCd9fSxcbiAgICogLy8gIHthcHA6IHthcHBWZXJzaW9uOiAnMS41LjAnfX1cbiAgICogLy8gXVxuICAgKiBgYGBcbiAgICovXG4gIHNvcnRWZXJzaW9uczxUPihzb3VyY2U6IHsgbGlzdDogVFtdOyBwYXRoOiBzdHJpbmdbXSB9LCBvcmRlcjogJ2FzYycgfCAnZGVzYycpOiBUW107XG4gIHNvcnRWZXJzaW9ucyhzb3VyY2U6IHN0cmluZ1tdLCBvcmRlcjogJ2FzYycgfCAnZGVzYycpOiBzdHJpbmdbXTtcbiAgc29ydFZlcnNpb25zKHNvdXJjZTogYW55LCBvcmRlcjogJ2FzYycgfCAnZGVzYycpOiBhbnkge1xuICAgIGNvbnN0IHNvdXJjZUNvcHkgPSBjbG9uZURlZXAoc291cmNlKTtcbiAgICBpZiAoc291cmNlLmxpc3QgJiYgc291cmNlLnBhdGgpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBzb3VyY2VDb3B5LnBhdGguam9pbignLicpO1xuICAgICAgcmV0dXJuIHNvdXJjZUNvcHkubGlzdC5zb3J0KFxuICAgICAgICAoYSwgYikgPT4gY29tcGFyZShjb2VyY2UoZ2V0KGEsIHBhdGgpKSwgY29lcmNlKGdldChiLCBwYXRoKSkpICogKG9yZGVyID09PSAnYXNjJyA/IDEgOiAtMSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzb3VyY2VDb3B5LnNvcnQoKGEsIGIpID0+IGNvbXBhcmUoY29lcmNlKGEpLCBjb2VyY2UoYikpICogKG9yZGVyID09PSAnYXNjJyA/IDEgOiAtMSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhIGxpc3Qgb2YgZXhwb3J0ZWQgcGx1Z2lucyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiBBcHBsaWNhdGlvbiBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHBhcmFtIHVzZUxhdGVzdCBTZXQgdGhpcyB0byB0cnVlLCB0byBub3QgYmluZCB0aGUgcGx1Z2luIHRvIGFueSB2ZXJzaW9uLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgbGlzdCBvZiBleHBvcnRlZCBwbHVnaW5zLlxuICAgKi9cbiAgZ2V0TUZFeHBvcnRzKFxuICAgIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24sXG4gICAgZXhjbHVkZWRTY29wZXMgPSBbXG4gICAgICBQbHVnaW5zRXhwb3J0U2NvcGVzLlNFTEYsXG4gICAgICBQbHVnaW5zRXhwb3J0U2NvcGVzLlNFTEZfT1BUSU9OQUwsXG4gICAgICBQbHVnaW5zRXhwb3J0U2NvcGVzLkdMT0JBTFxuICAgIF0sXG4gICAgdXNlTGF0ZXN0ID0gZmFsc2VcbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgY29uc3QgbWFuaWZlc3Q6IFBhcnRpYWw8SU1hbmlmZXN0PiA9IGFwcGxpY2F0aW9uLm1hbmlmZXN0O1xuICAgIGlmICghbWFuaWZlc3QgfHwgIW1hbmlmZXN0LmV4cG9ydHMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kUGx1Z2luc0RldGFpbHMoXG4gICAgICBhcHBsaWNhdGlvbixcbiAgICAgIHtcbiAgICAgICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvbixcbiAgICAgICAgYmluYXJ5SWQ6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIHVzZUxhdGVzdFxuICAgICkuZmlsdGVyKHBsdWdpbiA9PiAhZXhjbHVkZWRTY29wZXMuaW5jbHVkZXMocGx1Z2luLnNjb3BlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYSBsaXN0IG9mIGV4cG9ydHMgZnJvbSBlYWNoIGF2YWlsYWJsZSBwYWNrYWdlLlxuICAgKiBAcGFyYW0gYWxsVmVyc2lvbnMgSWYgc2V0IHRvIHRydWUsIGFsbCBhbmQgbm90IG9ubHkgbGF0ZXN0IHZlcnNpb25zIGFyZSBpbmNsdWRlZC5cbiAgICogQHBhcmFtIGV4Y2x1ZGVkU2NvcGVzIERlZmluZXMgd2hpY2ggc2NvcGVzIHNob3VsZCBub3QgYmUgbG9hZGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgZXhwb3J0ZWQgcGx1Z2lucy5cbiAgICovXG4gIGFzeW5jIGdldEFsbE1GRXhwb3J0cyhcbiAgICBhbGxWZXJzaW9ucyA9IGZhbHNlLFxuICAgIGV4Y2x1ZGVkU2NvcGVzID0gW1xuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5TRUxGLFxuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5TRUxGX09QVElPTkFMLFxuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5HTE9CQUxcbiAgICBdXG4gICk6IFByb21pc2U8QXBwbGljYXRpb25QbHVnaW5bXT4ge1xuICAgIGNvbnN0IHBsdWdpbnMgPSBuZXcgQXJyYXk8QXBwbGljYXRpb25QbHVnaW4+KCk7XG4gICAgY29uc3QgcGFja2FnZXMgPSBhd2FpdCB0aGlzLmxpc3RQYWNrYWdlcygpO1xuICAgIGZvciAoY29uc3QgcGtnIG9mIHBhY2thZ2VzKSB7XG4gICAgICBpZiAoIXBrZz8ubWFuaWZlc3Q/LmV4cG9ydHMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoYWxsVmVyc2lvbnMgJiYgQXJyYXkuaXNBcnJheShwa2cuYXBwbGljYXRpb25WZXJzaW9ucykpIHtcbiAgICAgICAgcGtnLmFwcGxpY2F0aW9uVmVyc2lvbnMuZm9yRWFjaCh2ZXJzaW9uID0+IHtcbiAgICAgICAgICBwbHVnaW5zLnB1c2goLi4udGhpcy5leHRlbmRQbHVnaW5zRGV0YWlscyhwa2csIHZlcnNpb24pKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwbHVnaW5zLnB1c2goXG4gICAgICAgICAgLi4udGhpcy5leHRlbmRQbHVnaW5zRGV0YWlscyhwa2csIHtcbiAgICAgICAgICAgIHZlcnNpb246IHBrZy5tYW5pZmVzdC52ZXJzaW9uLFxuICAgICAgICAgICAgYmluYXJ5SWQ6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwbHVnaW5zLmZpbHRlcihwbHVnaW4gPT4gIWV4Y2x1ZGVkU2NvcGVzLmluY2x1ZGVzKHBsdWdpbi5zY29wZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGEgbGlzdCBvZiByZW1vdGVzIGZyb20gdGhlIGFwcGxpY2F0aW9uIG9iamVjdC5cbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uIEFwcGxpY2F0aW9uIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGxpc3Qgb2YgcmVtb3Rlcy5cbiAgICovXG4gIGdldE1GUmVtb3RlcyhhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGFwcGxpY2F0aW9uLm1hbmlmZXN0IHx8IHt9O1xuICAgIGNvbnN0IGNvbmZpZzogUGx1Z2luc0NvbmZpZyA9IGFwcGxpY2F0aW9uPy5jb25maWcgYXMgUGx1Z2luc0NvbmZpZztcbiAgICBsZXQgcmVtb3RlcyA9IGNvbmZpZz8ucmVtb3RlcyB8fCBtYW5pZmVzdC5yZW1vdGVzIHx8IHt9O1xuICAgIGNvbnN0IG1hbmlmZXN0RXhwb3J0cyA9IG1hbmlmZXN0LmV4cG9ydHMgfHwgbWFuaWZlc3QubWFuaWZlc3Q/LmV4cG9ydHMgfHwgW107XG4gICAgY29uc3Qgc2VsZlJlbW90ZXM6IHN0cmluZ1tdID0gbWFuaWZlc3RFeHBvcnRzXG4gICAgICAuZmlsdGVyKHBsdWdpbiA9PiBwbHVnaW4uc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRilcbiAgICAgIC5tYXAocGx1Z2luID0+IHBsdWdpbi5tb2R1bGUgfHwgcGx1Z2luLm5hbWUpO1xuXG4gICAgaWYgKHNlbGZSZW1vdGVzLmxlbmd0aCkge1xuICAgICAgcmVtb3RlcyA9IFBsdWdpbnNSZXNvbHZlU2VydmljZS5tZXJnZVJlbW90ZXMoW1xuICAgICAgICB7IFthcHBsaWNhdGlvbi5jb250ZXh0UGF0aF06IHNlbGZSZW1vdGVzIH0sXG4gICAgICAgIHJlbW90ZXNcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJlbW90ZXMgPSBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UucmVtb3ZlUmVtb3RlcyhyZW1vdGVzLCBjb25maWc/LmV4Y2x1ZGVkUmVtb3Rlcyk7XG4gICAgcmV0dXJuIHJlbW90ZXM7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBhIHBhY2thZ2UuXG4gICAqIEEgcGFja2FnZSBpcyBPRkZJQ0lBTCBpZiBpdCBjb21lcyBmcm9tIG1hbmFnZW1lbnQgdGVuYW50IGFuZCBoYXMgYSBsYWJlbCBhdHRhY2hlZCBjYWxsZWQgT0ZGSUNJQUwuXG4gICAqIEEgcGFja2FnZSBpcyBDT01NVU5JVFkgaWYgaXQgaGFzIGEgbGFiZWwgY2FsbGVkIENPTU1VTklUWS5cbiAgICogQSBwYWNrYWdlIGlzIENVU1RPTSBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBsYWJlbCBhdHRhY2hlZC5cbiAgICogQSBwYWNrYWdlIGlzIFVOS05PV04gaWYgaXQgaGFzIGEgbGFiZWwgYXR0YWNoZWQgYnV0IGl0IGRvZXMgbm90IG1hdGNoIENPTU1VTklUWSBvciBPRkZJQ0lBTC5cbiAgICpcbiAgICogTGFiZWxzIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBzdGF0dXMgb2YgYSBwYWNrYWdlLiBDb21tdW5pdHkgcGFja2FnZXMgYWx3YXlzIG5lZWRcbiAgICogYSBsaWNlbnNlIHZhbGlkYXRpb24uIFRoZSBsYWJlbCB3aWxsIGJlIHNob3duIG9uIHRoZSBhcHBsaWNhdGlvbiBjYXJkIHRvIHRlbGwgYSB1c2VyXG4gICAqIHdoZXRoZXIgdGhleSBhcmUgbG9va2luZyBpbnRvIGFuIG9mZmljaWFsIG9yIGNvbW11bml0eSBwYWNrYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFja2FnZUFwcGxpY2F0aW9uIFRoZSBwYWNrYWdlIGFwcGxpY2F0aW9uIG9iamVjdCB0byBjaGVjay5cbiAgICogQHJldHVybnMgVGhlIHBhY2thZ2UgdHlwZS5cbiAgICovXG4gIGdldFBhY2thZ2VUeXBlKHBhY2thZ2VBcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKTogUGFja2FnZVR5cGUge1xuICAgIGNvbnN0IGxhYmVsID0gcGFja2FnZUFwcGxpY2F0aW9uLmxhYmVsIHx8IHBhY2thZ2VBcHBsaWNhdGlvbi5tYW5pZmVzdD8ubGFiZWw7XG4gICAgaWYgKGxhYmVsID09PSBQYWNrYWdlVHlwZS5BUkNISVZFRCkge1xuICAgICAgcmV0dXJuIFBhY2thZ2VUeXBlLkFSQ0hJVkVEO1xuICAgIH1cbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICByZXR1cm4gUGFja2FnZVR5cGUuQ1VTVE9NO1xuICAgIH1cbiAgICBpZiAobGFiZWwgPT09IFBhY2thZ2VUeXBlLk9GRklDSUFMICYmIHRoaXMuaXNPd25lZEJ5TWFuYWdlbWVudChwYWNrYWdlQXBwbGljYXRpb24pKSB7XG4gICAgICByZXR1cm4gUGFja2FnZVR5cGUuT0ZGSUNJQUw7XG4gICAgfVxuICAgIGlmIChsYWJlbCA9PT0gUGFja2FnZVR5cGUuQ09NTVVOSVRZKSB7XG4gICAgICByZXR1cm4gUGFja2FnZVR5cGUuQ09NTVVOSVRZO1xuICAgIH1cbiAgICByZXR1cm4gUGFja2FnZVR5cGUuVU5LTk9XTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhbiBhcHBsaWNhdGlvbiBpcyBvd25lZCBieSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gdmVyaWZ5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIG93bmVkIGJ5IG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKi9cbiAgaXNPd25lZEJ5TWFuYWdlbWVudChhcHA6IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFwcE93bmVyID0gZ2V0KGFwcCwgJ293bmVyLnRlbmFudC5pZCcpO1xuICAgIHJldHVybiBhcHBPd25lciA9PT0gJ21hbmFnZW1lbnQnO1xuICB9XG5cbiAgcGx1Z2luc0Zyb21NYW5pZmVzdChtYW5pZmVzdDogSU1hbmlmZXN0KTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgY29uc3QgcGx1Z2luczogQXBwbGljYXRpb25QbHVnaW5bXSA9IG1hbmlmZXN0LmV4cG9ydHM7XG4gICAgY29uc3QgZXh0ZW5kZWRQbHVnaW5zID0gcGx1Z2luc1xuICAgICAgLmZpbHRlcihwID0+IHAuc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRilcbiAgICAgIC5tYXAocCA9PiAoe1xuICAgICAgICAuLi5wLFxuICAgICAgICBpZDogUGx1Z2luc1NlcnZpY2UuY3JlYXRlUGx1Z2luSWQobWFuaWZlc3QuY29udGV4dFBhdGgsIHAsIG1hbmlmZXN0LnZlcnNpb24pLFxuICAgICAgICBjb250ZXh0UGF0aDogbWFuaWZlc3QuY29udGV4dFBhdGgsXG4gICAgICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb24sXG4gICAgICAgIHZlcnNpb25pbmdNYXRyaXg6IG1hbmlmZXN0LnZlcnNpb25pbmdNYXRyaXgsXG4gICAgICAgIGxpY2Vuc2U6IG1hbmlmZXN0LmxpY2Vuc2UsXG4gICAgICAgIHR5cGU6IFBhY2thZ2VUeXBlLkNVU1RPTVxuICAgICAgfSkpO1xuICAgIHJldHVybiBleHRlbmRlZFBsdWdpbnM7XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZlNjb3BlZFBsdWdpbihwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLCBjb250ZXh0UGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBwbHVnaW4uc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRiAmJlxuICAgICAgKCFjb250ZXh0UGF0aCB8fCBwbHVnaW4uY29udGV4dFBhdGggPT09IGNvbnRleHRQYXRoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGZTY29wZWRQbHVnaW5zKFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgY29udGV4dFBhdGg/OiBzdHJpbmdcbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiB0aGlzLmlzU2VsZlNjb3BlZFBsdWdpbihwbHVnaW4sIGNvbnRleHRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbFBsdWdpbnNFeGNlcHRTZWxmU2NvcGVkKFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgY29udGV4dFBhdGg/OiBzdHJpbmdcbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiAhdGhpcy5pc1NlbGZTY29wZWRQbHVnaW4ocGx1Z2luLCBjb250ZXh0UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVzKGFwcHM6IElBcHBsaWNhdGlvbltdLCBrZXk6IHN0cmluZyk6IElBcHBsaWNhdGlvbltdIHtcbiAgICBjb25zdCB1bmlxdWVMaXN0OiBJQXBwbGljYXRpb25bXSA9IFtdO1xuICAgIGNvbnN0IGdyb3VwZWRBcHBzQnlLZXk6IFJlY29yZDxzdHJpbmcsIElBcHBsaWNhdGlvbltdPiA9IGdyb3VwQnkoYXBwcywga2V5KTtcbiAgICBjb25zdCBncm91cGVkQXBwczogSUFwcGxpY2F0aW9uW11bXSA9IE9iamVjdC5rZXlzKGdyb3VwZWRBcHBzQnlLZXkpLm1hcChcbiAgICAgIGtleSA9PiBncm91cGVkQXBwc0J5S2V5W2tleV1cbiAgICApO1xuICAgIGZvciAoY29uc3QgYXBwc0dyb3VwIG9mIGdyb3VwZWRBcHBzKSB7XG4gICAgICBpZiAoYXBwc0dyb3VwLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdW5pcXVlTGlzdC5wdXNoKC4uLmFwcHNHcm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhcHBGcm9tQ3VycmVudFRlbmFudCA9IGFwcHNHcm91cC5maW5kKGFwcCA9PiB0aGlzLmlzRnJvbUN1cnJlbnRUZW5hbnQoYXBwKSk7XG4gICAgICAgIGlmIChhcHBGcm9tQ3VycmVudFRlbmFudCkge1xuICAgICAgICAgIHVuaXF1ZUxpc3QucHVzaChhcHBGcm9tQ3VycmVudFRlbmFudCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwTm90T3duZWRCeU1hbmFnZW1lbnQgPSBhcHBzR3JvdXAuZmluZChhcHAgPT4gIXRoaXMuaXNPd25lZEJ5TWFuYWdlbWVudChhcHApKTtcbiAgICAgICAgdW5pcXVlTGlzdC5wdXNoKGFwcE5vdE93bmVkQnlNYW5hZ2VtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuaXF1ZUxpc3Q7XG4gIH1cblxuICBwcml2YXRlIGlzRnJvbUN1cnJlbnRUZW5hbnQoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwLm93bmVyLnRlbmFudC5pZCA9PT0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZS5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBsaXN0IG9mIHBsdWdpbnMgdG8gaGF2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgaWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZXh0ZW5kUGx1Z2luc0RldGFpbHMoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICB2ZXJzaW9uOiBJQXBwbGljYXRpb25WZXJzaW9uLFxuICAgIHVzZUxhdGVzdCA9IGZhbHNlXG4gICk6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIGNvbnN0IHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10gPSBhcHBsaWNhdGlvbi5tYW5pZmVzdC5leHBvcnRzO1xuICAgIGNvbnN0IGV4dGVuZGVkUGx1Z2luczogQXBwbGljYXRpb25QbHVnaW5bXSA9IHBsdWdpbnMubWFwKHAgPT4gKHtcbiAgICAgIC4uLnAsXG4gICAgICBpZDogUGx1Z2luc1NlcnZpY2UuY3JlYXRlUGx1Z2luSWQoYXBwbGljYXRpb24uY29udGV4dFBhdGgsIHAsIHZlcnNpb24udmVyc2lvbiwgdXNlTGF0ZXN0KSxcbiAgICAgIGlkTGF0ZXN0OiBQbHVnaW5zU2VydmljZS5jcmVhdGVQbHVnaW5JZChhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCwgcCwgdmVyc2lvbi52ZXJzaW9uLCB0cnVlKSxcbiAgICAgIGNvbnRleHRQYXRoOiBhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCxcbiAgICAgIHZlcnNpb246IHZlcnNpb24udmVyc2lvbixcbiAgICAgIHZlcnNpb25pbmdNYXRyaXg6IGFwcGxpY2F0aW9uLm1hbmlmZXN0LnZlcnNpb25pbmdNYXRyaXgsXG4gICAgICB0YWdzOiB1c2VMYXRlc3QgPyBbJ2xhdGVzdCddIDogdmVyc2lvbi50YWdzIHx8IFtdLFxuICAgICAgbGljZW5zZTogYXBwbGljYXRpb24ubWFuaWZlc3QubGljZW5zZSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0UGFja2FnZVR5cGUoYXBwbGljYXRpb24pLFxuICAgICAgb3JpZ2luQXBwOiBhcHBsaWNhdGlvblxuICAgIH0pKTtcbiAgICByZXR1cm4gZXh0ZW5kZWRQbHVnaW5zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsaXN0QXBwbGljYXRpb25zQnlDdXJyZW50VGVuYW50KHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ0hPU1RFRCcsXG4gICAgICAgIHBhZ2VTaXplOiAyMDAwLFxuICAgICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgY29uc3Qgc2hhcmVkRmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYXZhaWxhYmlsaXR5OiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5TSEFSRUQsXG4gICAgICAgIHR5cGU6ICdIT1NURUQnLFxuICAgICAgICBwYWdlU2l6ZTogMjAwMCxcbiAgICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICAgIH0sXG4gICAgICBwYXJhbXNcbiAgICApO1xuXG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWUubmFtZTtcbiAgICBjb25zdCBbcmVzdWx0QXBwc093bmVkQnlUZW5hbnQsIHJlc3VsdFNoYXJlZEFwcHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5VGVuYW50KHRlbmFudE5hbWUsIGZpbHRlciksXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0KHNoYXJlZEZpbHRlcilcbiAgICBdKTtcbiAgICBjb25zdCB7IGRhdGE6IGFwcHNPd25lZEJ5VGVuYW50IH0gPSByZXN1bHRBcHBzT3duZWRCeVRlbmFudDtcbiAgICBjb25zdCB7IGRhdGE6IHNoYXJlZEFwcHMgfSA9IHJlc3VsdFNoYXJlZEFwcHM7XG4gICAgY29uc3Qgd2ViQXBwcyA9IFsuLi5hcHBzT3duZWRCeVRlbmFudCwgLi4uc2hhcmVkQXBwc107XG4gICAgcmV0dXJuIHVuaXFCeSh3ZWJBcHBzLCAoYXBwOiBJQXBwbGljYXRpb24pID0+IGFwcC5pZCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFBsdWdpblRvUmVtb3Rlc0NvbmZpZyhcbiAgICByZW1vdGVzQ29uZmlnOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMsXG4gICAgcGx1Z2luczogQXBwbGljYXRpb25QbHVnaW4gfCBBcHBsaWNhdGlvblBsdWdpbltdXG4gICk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgaWYgKCFwbHVnaW5zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlbW90ZXNDb3B5ID0gY2xvbmVEZWVwKHJlbW90ZXNDb25maWcpO1xuICAgIGNvbnN0IHRlbXAgPSBBcnJheS5pc0FycmF5KHBsdWdpbnMpID8gcGx1Z2lucyA6IFtwbHVnaW5zXTtcblxuICAgIHRlbXAuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgY29uc3QgeyBjb250ZXh0UGF0aCwgbW9kdWxlTmFtZSB9ID0gdGhpcy5wYXJzZVBsdWdpbklkKHBsdWdpbi5pZCk7XG4gICAgICBpZiAoIWNvbnRleHRQYXRoIHx8ICFtb2R1bGVOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXT8ubGVuZ3RoID49IDBcbiAgICAgICAgPyByZW1vdGVzQ29weVtjb250ZXh0UGF0aF0ucHVzaChtb2R1bGVOYW1lKVxuICAgICAgICA6IChyZW1vdGVzQ29weVtjb250ZXh0UGF0aF0gPSBbXSkucHVzaChtb2R1bGVOYW1lKTtcbiAgICAgIHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXSA9IFsuLi5uZXcgU2V0KHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXSldO1xuICAgIH0pO1xuICAgIHJldHVybiByZW1vdGVzQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGx1Z2luc0Zyb21SZW1vdGVzQ29uZmlnKFxuICAgIHJlbW90ZXNDb25maWc6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICBwbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbiB8IEFwcGxpY2F0aW9uUGx1Z2luW11cbiAgKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCByZW1vdGVzQ29weTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gY2xvbmVEZWVwKHJlbW90ZXNDb25maWcpO1xuICAgIGNvbnN0IHRlbXAgPSBBcnJheS5pc0FycmF5KHBsdWdpbnMpID8gcGx1Z2lucyA6IFtwbHVnaW5zXTtcblxuICAgIHRlbXAuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgY29uc3QgeyBjb250ZXh0UGF0aCwgbW9kdWxlTmFtZSB9ID0gdGhpcy5wYXJzZVBsdWdpbklkKHBsdWdpbi5pZCk7XG4gICAgICBpZiAoIWNvbnRleHRQYXRoIHx8ICFtb2R1bGVOYW1lIHx8ICFyZW1vdGVzQ29weVtjb250ZXh0UGF0aF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdID0gcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdLmZpbHRlcihwID0+IHAgIT09IG1vZHVsZU5hbWUpO1xuICAgICAgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdID0gWy4uLm5ldyBTZXQocmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdKV07XG4gICAgICBpZiAocmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWxldGUgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZW1vdGVzQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQbHVnaW5JZChpZDogc3RyaW5nKTogeyBjb250ZXh0UGF0aDogc3RyaW5nOyBtb2R1bGVOYW1lOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgW2NvbnRleHRQYXRoLCBtb2R1bGVOYW1lXSA9IGlkLnNwbGl0KCcvJyk7XG4gICAgcmV0dXJuIHsgY29udGV4dFBhdGgsIG1vZHVsZU5hbWUgfTtcbiAgfVxufVxuIl19
421
+ }], ctorParameters: () => [{ type: i1.ApplicationService }, { type: i2.AppStateService }, { type: i1.FetchClient }] });
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9wbHVnaW5zL3BsdWdpbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsV0FBVyxFQU1aLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFxQixXQUFXLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFHbEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLDRCQUE0QixDQUFDLE9BQWlDO1FBQ25FLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FB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VyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxFQUFVO1FBQzlCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7K0dBdmhCVSxjQUFjO21IQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLFxuICBGZXRjaENsaWVudCxcbiAgSUFwcGxpY2F0aW9uLFxuICBJQXBwbGljYXRpb25WZXJzaW9uLFxuICBJRmV0Y2hPcHRpb25zLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1hbmlmZXN0XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCB1bmlxQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29lcmNlLCBjb21wYXJlIH0gZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25QbHVnaW4sIFBhY2thZ2VUeXBlLCBQbHVnaW5zQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW5zLm1vZGVsJztcbmltcG9ydCB7IFBsdWdpbnNFeHBvcnRTY29wZXMgfSBmcm9tICcuLi9jb21tb24vQXBwbGljYXRpb25PcHRpb25zJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4vcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xuICBzdGF0aWMgY29udmVydEluc3RhbGxlZFJlbW90ZXNUb0lkcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGltcG9ydENvbnRleHRQYXRocyA9IE9iamVjdC5rZXlzKHJlbW90ZXMpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSBbXTtcbiAgICBpbXBvcnRDb250ZXh0UGF0aHMuZm9yRWFjaChjb250ZXh0UGF0aCA9PiB7XG4gICAgICBjb25zdCBtb2R1bGVOYW1lcyA9IHJlbW90ZXNbY29udGV4dFBhdGhdIHx8IFtdO1xuICAgICAgcGx1Z2lucy5wdXNoKFxuICAgICAgICAuLi5tb2R1bGVOYW1lcy5tYXAobW9kdWxlID0+IFBsdWdpbnNTZXJ2aWNlLmNyZWF0ZVBsdWdpbklkKGNvbnRleHRQYXRoLCBtb2R1bGUsICcnLCB0cnVlKSlcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBsdWdpbnM7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGx1Z2luSWQoXG4gICAgY29udGV4dFBhdGg6IHN0cmluZyxcbiAgICBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luIHwgc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICB1c2VMYXRlc3QgPSBmYWxzZVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0eXBlb2YgcGx1Z2luID09PSAnc3RyaW5nJyA/IHBsdWdpbiA6IHBsdWdpbi5tb2R1bGU7XG4gICAgaWYgKHVzZUxhdGVzdCkge1xuICAgICAgcmV0dXJuIGAke2NvbnRleHRQYXRofS8ke21vZHVsZU5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbnRleHRQYXRofUAke3ZlcnNpb259LyR7bW9kdWxlTmFtZX1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGF2YWlsYWJsZSBwYWNrYWdlcy5cbiAgICogQHBhcmFtIHBhcmFtcyBBZGRpdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBsaXN0IG9mIHBhY2thZ2VzLlxuICAgKi9cbiAgYXN5bmMgbGlzdFBhY2thZ2VzKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgYXBwcyA9IGF3YWl0IHRoaXMubGlzdEFwcGxpY2F0aW9uc0J5Q3VycmVudFRlbmFudChwYXJhbXMpO1xuICAgIGNvbnN0IHdlYkFwcHMgPSBhcHBzLmZpbHRlcihhcHAgPT4gdGhpcy5pc1BhY2thZ2UoYXBwKSk7XG4gICAgY29uc3QgdW5pcXVlV2ViQXBwcyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlcyh3ZWJBcHBzLCAnY29udGV4dFBhdGgnKTtcbiAgICByZXR1cm4gdW5pcXVlV2ViQXBwcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gYXBwbGljYXRpb24gaXMgYSBwYWNrYWdlLlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaXMgYSBwYWNrYWdlLlxuICAgKi9cbiAgaXNQYWNrYWdlKGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwbGljYXRpb24ubWFuaWZlc3Q/LmlzUGFja2FnZSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByZW1vdGVzIGZpZWxkIGluIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGJ5IGFkZGluZyBuZXcgcGx1Z2lucy5cbiAgICogSW1wb3J0YW50OiBpZiB0aGUgcmVtb3RlcyBvYmplY3QgaXMgbm90IHNldCBvbiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QsXG4gICAqIHJlbW90ZXMgd2lsbCBub3QgYmUgYWRkZWQuIE1ha2Ugc3VyZSB0aGF0IHRoaXMgb2JqZWN0IGV4aXN0cyBpbiB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uIEFwcGxpY2F0aW9uIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBAcGFyYW0gcGx1Z2lucyBMaXN0IG9mIHJlbW90ZXMgdG8gYmUgYWRkZWQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdXBkYXRlZCBhcHBsaWNhdGlvbiByZW1vdGVzLlxuICAgKi9cbiAgYXN5bmMgYWRkUmVtb3RlcyhcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luIHwgQXBwbGljYXRpb25QbHVnaW5bXVxuICApOiBQcm9taXNlPFBsdWdpbnNDb25maWc+IHtcbiAgICBjb25zdCBwbHVnaW5zQXJyYXkgPSBBcnJheS5pc0FycmF5KHBsdWdpbnMpID8gcGx1Z2lucyA6IFtwbHVnaW5zXTtcbiAgICBjb25zdCBtYW5pZmVzdFJlbW90ZXMgPSBhcHBsaWNhdGlvbi5tYW5pZmVzdD8ucmVtb3RlcyB8fCB7fTtcbiAgICBjb25zdCBhcHBDb25maWc6IFBsdWdpbnNDb25maWcgfCB1bmRlZmluZWQgPSBhcHBsaWNhdGlvbj8uY29uZmlnIGFzIFBsdWdpbnNDb25maWc7XG4gICAgY29uc3QgYXBwQ29uZmlnUmVtb3RlcyA9IGFwcENvbmZpZz8ucmVtb3RlcyB8fCBtYW5pZmVzdFJlbW90ZXM7XG4gICAgY29uc3QgYXBwQ29uZmlnRXhjbHVkZWRSZW1vdGVzID0gYXBwQ29uZmlnPy5leGNsdWRlZFJlbW90ZXMgfHwge307XG4gICAgLy8gb25seSBub3JtYWwgYW5kIHNlbGYgb3B0aW9uYWwgc2NvcGVkIHBsdWdpbnMgc2hvdWxkIGJlIGFkZGVkIHRvIHJlbW90ZXNcbiAgICAvLyBzZWxmIHNjb3BlZCBwbHVnaW5zIHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZFxuICAgIGNvbnN0IGFsbFBsdWdpbnNFeGNlcHRTZWxmU2NvcGVkID0gdGhpcy5nZXRBbGxQbHVnaW5zRXhjZXB0U2VsZlNjb3BlZChcbiAgICAgIHBsdWdpbnNBcnJheSxcbiAgICAgIGFwcGxpY2F0aW9uLmNvbnRleHRQYXRoXG4gICAgKTtcbiAgICBjb25zdCBuZXdSZW1vdGVzID0gdGhpcy5hZGRQbHVnaW5Ub1JlbW90ZXNDb25maWcoYXBwQ29uZmlnUmVtb3RlcywgYWxsUGx1Z2luc0V4Y2VwdFNlbGZTY29wZWQpO1xuICAgIC8vIHNob3VsZCBiZSB1bnByb2JsZW1hdGljIHRvIHJlbW92ZSBhbGwgY2F0ZWdvcmllcyBvZiBwbHVnaW5zIGZyb20gZXhjbHVkZWQgcmVtb3Rlc1xuICAgIGNvbnN0IG5ld0V4Y2x1ZGVkUmVtb3RlcyA9IHRoaXMucmVtb3ZlUGx1Z2luc0Zyb21SZW1vdGVzQ29uZmlnKFxuICAgICAgYXBwQ29uZmlnRXhjbHVkZWRSZW1vdGVzLFxuICAgICAgcGx1Z2luc1xuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlUmVtb3Rlc0luQXBwQ29uZmlnKGFwcGxpY2F0aW9uLCBuZXdSZW1vdGVzLCBuZXdFeGNsdWRlZFJlbW90ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlbW90ZXMgZmllbGQgaW4gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gYnkgcmVtb3ZpbmcgcGx1Z2lucy5cbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uIEFwcGxpY2F0aW9uIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBAcGFyYW0gcGx1Z2lucyBMaXN0IG9mIHJlbW90ZXMgdG8gYmUgcmVtb3ZlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB1cGRhdGVkIGFwcGxpY2F0aW9uIHJlbW90ZXMuXG4gICAqL1xuICBhc3luYyByZW1vdmVSZW1vdGVzKFxuICAgIGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24sXG4gICAgcGx1Z2luczogQXBwbGljYXRpb25QbHVnaW4gfCBBcHBsaWNhdGlvblBsdWdpbltdXG4gICk6IFByb21pc2U8UGx1Z2luc0NvbmZpZz4ge1xuICAgIGNvbnN0IHBsdWdpbnNBcnJheSA9IEFycmF5LmlzQXJyYXkocGx1Z2lucykgPyBwbHVnaW5zIDogW3BsdWdpbnNdO1xuICAgIGNvbnN0IG1hbmlmZXN0UmVtb3RlcyA9IGFwcGxpY2F0aW9uLm1hbmlmZXN0Py5yZW1vdGVzIHx8IHt9O1xuICAgIGNvbnN0IGFwcENvbmZpZzogUGx1Z2luc0NvbmZpZyB8IHVuZGVmaW5lZCA9IGFwcGxpY2F0aW9uPy5jb25maWcgYXMgUGx1Z2luc0NvbmZpZztcbiAgICBjb25zdCBhcHBDb25maWdSZW1vdGVzID0gYXBwQ29uZmlnPy5yZW1vdGVzIHx8IG1hbmlmZXN0UmVtb3RlcztcbiAgICBjb25zdCBhcHBDb25maWdFeGNsdWRlZFJlbW90ZXMgPSBhcHBDb25maWc/LmV4Y2x1ZGVkUmVtb3RlcyB8fCB7fTtcbiAgICAvLyBhcHAgcGx1Z2lucyBuZWVkIHRvIGJlIHJlbW92ZWQgZnJvbSByZW1vdGVzXG4gICAgY29uc3QgbmV3UmVtb3RlcyA9IHRoaXMucmVtb3ZlUGx1Z2luc0Zyb21SZW1vdGVzQ29uZmlnKGFwcENvbmZpZ1JlbW90ZXMsIHBsdWdpbnMpO1xuICAgIC8vIHNlbGYgc2NvcGVkIHBsdWdpbnMgbmVlZCB0byBiZSBhZGRlZCB0byBleGNsdWRlZCByZW1vdGVzXG4gICAgLy8gYXMgdGhleSB3b3VsZCBiZSBvdGhlcndpc2UgYXV0b21hdGljYWxseSBhZGRlZCB0byByZW1vdGVzXG4gICAgY29uc3Qgc2VsZlNjb3BlZFBsdWdpbnMgPSB0aGlzLmdldFNlbGZTY29wZWRQbHVnaW5zKHBsdWdpbnNBcnJheSwgYXBwbGljYXRpb24uY29udGV4dFBhdGgpO1xuICAgIGNvbnN0IG5ld0V4Y2x1ZGVkUmVtb3RlcyA9IHRoaXMuYWRkUGx1Z2luVG9SZW1vdGVzQ29uZmlnKFxuICAgICAgYXBwQ29uZmlnRXhjbHVkZWRSZW1vdGVzLFxuICAgICAgc2VsZlNjb3BlZFBsdWdpbnNcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZVJlbW90ZXNJbkFwcENvbmZpZyhhcHBsaWNhdGlvbiwgbmV3UmVtb3RlcywgbmV3RXhjbHVkZWRSZW1vdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByZW1vdGVzIGZpZWxkIGluIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEBwYXJhbSBwbHVnaW5zIExpc3Qgb2YgcmVtb3RlcyB0byBiZSBhZGRlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB1cGRhdGVkIGFwcGxpY2F0aW9uIHJlbW90ZXMuXG4gICAqL1xuICBhc3luYyB1cGRhdGVSZW1vdGVzSW5BcHBDb25maWcoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBwbHVnaW5zOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMsXG4gICAgZXhjbHVkZWRSZW1vdGVzPzogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zXG4gICk6IFByb21pc2U8UGx1Z2luc0NvbmZpZz4ge1xuICAgIGNvbnN0IHVwZGF0ZWRBcHBXaXRoQ29uZmlnID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlQXBwbGljYXRpb25Db25maWcoXG4gICAgICBhcHBsaWNhdGlvbixcbiAgICAgIHtcbiAgICAgICAgcmVtb3RlczogcGx1Z2lucyxcbiAgICAgICAgZXhjbHVkZWRSZW1vdGVzOiBleGNsdWRlZFJlbW90ZXMgfHwge31cbiAgICAgIH0gYXMgUGx1Z2luc0NvbmZpZ1xuICAgICk7XG4gICAgcmV0dXJuIHVwZGF0ZWRBcHBXaXRoQ29uZmlnPy5jb25maWcgfHwgeyByZW1vdGVzOiB7fSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlxuICAgKi9cbiAgYXN5bmMgZ2V0Q3VtdWxvY2l0eUpzb25GaWxlKGFwcGxpY2F0aW9uOiBJQXBwbGljYXRpb24pIHtcbiAgICBjb25zdCBjOHlKc29uID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UuZ2V0QXBwTWFuaWZlc3QoYXBwbGljYXRpb24pO1xuICAgIGlmICghYzh5SnNvbi5yZW1vdGVzKSB7XG4gICAgICBjOHlKc29uLnJlbW90ZXMgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGM4eUpzb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiByZW1vdGVzIGluIHRoZSBjb25maWd1cmF0aW9uICh3aGVuIGl0J3MgbWlzc2luZyksIGJhc2VkIG9uIHRoZSBsaXN0IG9mIHJlbW90ZXMgYmVpbmcgaW4gdGhlIGFwcGxpY2F0aW9uIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gIEFwcGxpY2F0aW9uIG1hbmFnZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgbGlzdCBvZiByZW1vdGVzIHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgYXN5bmMgc2V0SW5pdGlhbFJlbW90ZXMoYXBwbGljYXRpb246IElBcHBsaWNhdGlvbikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtYW5pZmVzdDogSU1hbmlmZXN0ID0gYXdhaXQgdGhpcy5nZXRDdW11bG9jaXR5SnNvbkZpbGUoYXBwbGljYXRpb24pO1xuICAgICAgY29uc3QgbWFuaWZlc3RSZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBtYW5pZmVzdC5yZW1vdGVzO1xuXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGVSZW1vdGVzSW5BcHBDb25maWcoYXBwbGljYXRpb24sIG1hbmlmZXN0UmVtb3RlcyB8fCB7fSwge30pO1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlc2V0UmVtb3RlcyhhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZUFwcGxpY2F0aW9uQ29uZmlnKGFwcGxpY2F0aW9uLCB7XG4gICAgICByZW1vdGVzOiB1bmRlZmluZWQsXG4gICAgICBleGNsdWRlZFJlbW90ZXM6IHVuZGVmaW5lZFxuICAgIH0gYXMgUGx1Z2luc0NvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogU29ydHMgdmVyc2lvbnMgbGlzdCBvciBsaXN0IG9mIG9iamVjdHMgYnkgdmVyc2lvbiBwcm9wZXJ0eVxuICAgKiBAcmV0dXJucyBsaXN0IG9mIHZlcnNpb25zIGFzIGFycmF5IG9mIHN0cmluZ3Mgb3IgYXJyYXkgb2Ygb2JqZWN0cyBzb3J0ZWQgYnkgdmVyc2lvbiBwcm9wZXJ0eVxuICAgKlxuICAgKiBAcGFyYW0ge3sgbGlzdDogVFtdOyBwYXRoOiBzdHJpbmdbXSB9IHwgc3RyaW5nW119IHNvdXJjZSBkYXRhIHRvIHNvcnRcbiAgICogQHBhcmFtIHsnYXNjJyB8ICdkZXNjJ30gb3JkZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIgb2Ygc29ydGluZ1xuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGRhdGEgPSBbJzEuNS4wJywgJzIuMC4wJ107XG4gICAqIGNvbnN0IHNvcnRlZERhdGEgPSBwbHVnaW5zU2VydmljZS5zb3J0VmVyc2lvbnModmVyc2lvbnMsICdkZXNjJyk7XG4gICAqIC8vIHNvcnRlZERhdGE6XG4gICAqIC8vIFsnMi4wLjAnLCAnMS41LjAnXVxuICAgKiBgYGBcbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBkYXRhID0gW1xuICAgKiAge2FwcDoge2FwcFZlcnNpb246ICcxLjUuMCd9fSxcbiAgICogIHthcHA6IHthcHBWZXJzaW9uOiAnMi4wLjAnfX0sXG4gICAqIF07XG4gICAqIGNvbnN0IHNvcnRlZERhdGEgPSBwbHVnaW5zU2VydmljZS5zb3J0VmVyc2lvbnMoe2xpc3Q6IGRhdGEsIHBhdGg6IFsnYXBwJywgJ2FwcFZlcnNpb24nXX0sICdkZXNjJyk7XG4gICAqIC8vIHNvcnRlZERhdGE6XG4gICAqIC8vIFtcbiAgICogLy8gIHthcHA6IHthcHBWZXJzaW9uOiAnMi4wLjAnfX0sXG4gICAqIC8vICB7YXBwOiB7YXBwVmVyc2lvbjogJzEuNS4wJ319XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBzb3J0VmVyc2lvbnM8VD4oc291cmNlOiB7IGxpc3Q6IFRbXTsgcGF0aDogc3RyaW5nW10gfSwgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKTogVFtdO1xuICBzb3J0VmVyc2lvbnMoc291cmNlOiBzdHJpbmdbXSwgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKTogc3RyaW5nW107XG4gIHNvcnRWZXJzaW9ucyhzb3VyY2U6IGFueSwgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKTogYW55IHtcbiAgICBjb25zdCBzb3VyY2VDb3B5ID0gY2xvbmVEZWVwKHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZS5saXN0ICYmIHNvdXJjZS5wYXRoKSB7XG4gICAgICBjb25zdCBwYXRoID0gc291cmNlQ29weS5wYXRoLmpvaW4oJy4nKTtcbiAgICAgIHJldHVybiBzb3VyY2VDb3B5Lmxpc3Quc29ydChcbiAgICAgICAgKGEsIGIpID0+IGNvbXBhcmUoY29lcmNlKGdldChhLCBwYXRoKSksIGNvZXJjZShnZXQoYiwgcGF0aCkpKSAqIChvcmRlciA9PT0gJ2FzYycgPyAxIDogLTEpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc291cmNlQ29weS5zb3J0KChhLCBiKSA9PiBjb21wYXJlKGNvZXJjZShhKSwgY29lcmNlKGIpKSAqIChvcmRlciA9PT0gJ2FzYycgPyAxIDogLTEpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYSBsaXN0IG9mIGV4cG9ydGVkIHBsdWdpbnMgZnJvbSB0aGUgYXBwbGljYXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb24gQXBwbGljYXRpb24gbWFuYWdlZCBvYmplY3QuXG4gICAqIEBwYXJhbSB1c2VMYXRlc3QgU2V0IHRoaXMgdG8gdHJ1ZSwgdG8gbm90IGJpbmQgdGhlIHBsdWdpbiB0byBhbnkgdmVyc2lvbi5cbiAgICogQHJldHVybnMgUmV0dXJucyBhIGxpc3Qgb2YgZXhwb3J0ZWQgcGx1Z2lucy5cbiAgICovXG4gIGdldE1GRXhwb3J0cyhcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIGV4Y2x1ZGVkU2NvcGVzID0gW1xuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5TRUxGLFxuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5TRUxGX09QVElPTkFMLFxuICAgICAgUGx1Z2luc0V4cG9ydFNjb3Blcy5HTE9CQUxcbiAgICBdLFxuICAgIHVzZUxhdGVzdCA9IGZhbHNlXG4gICk6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIGNvbnN0IG1hbmlmZXN0OiBQYXJ0aWFsPElNYW5pZmVzdD4gPSBhcHBsaWNhdGlvbi5tYW5pZmVzdDtcbiAgICBpZiAoIW1hbmlmZXN0IHx8ICFtYW5pZmVzdC5leHBvcnRzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4dGVuZFBsdWdpbnNEZXRhaWxzKFxuICAgICAgYXBwbGljYXRpb24sXG4gICAgICB7XG4gICAgICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb24sXG4gICAgICAgIGJpbmFyeUlkOiB1bmRlZmluZWRcbiAgICAgIH0sXG4gICAgICB1c2VMYXRlc3RcbiAgICApLmZpbHRlcihwbHVnaW4gPT4gIWV4Y2x1ZGVkU2NvcGVzLmluY2x1ZGVzKHBsdWdpbi5zY29wZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGEgbGlzdCBvZiBleHBvcnRzIGZyb20gZWFjaCBhdmFpbGFibGUgcGFja2FnZS5cbiAgICogQHBhcmFtIGFsbFZlcnNpb25zIElmIHNldCB0byB0cnVlLCBhbGwgYW5kIG5vdCBvbmx5IGxhdGVzdCB2ZXJzaW9ucyBhcmUgaW5jbHVkZWQuXG4gICAqIEBwYXJhbSBleGNsdWRlZFNjb3BlcyBEZWZpbmVzIHdoaWNoIHNjb3BlcyBzaG91bGQgbm90IGJlIGxvYWRlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGV4cG9ydGVkIHBsdWdpbnMuXG4gICAqL1xuICBhc3luYyBnZXRBbGxNRkV4cG9ydHMoXG4gICAgYWxsVmVyc2lvbnMgPSBmYWxzZSxcbiAgICBleGNsdWRlZFNjb3BlcyA9IFtcbiAgICAgIFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRixcbiAgICAgIFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRl9PUFRJT05BTCxcbiAgICAgIFBsdWdpbnNFeHBvcnRTY29wZXMuR0xPQkFMXG4gICAgXVxuICApOiBQcm9taXNlPEFwcGxpY2F0aW9uUGx1Z2luW10+IHtcbiAgICBjb25zdCBwbHVnaW5zID0gbmV3IEFycmF5PEFwcGxpY2F0aW9uUGx1Z2luPigpO1xuICAgIGNvbnN0IHBhY2thZ2VzID0gYXdhaXQgdGhpcy5saXN0UGFja2FnZXMoKTtcbiAgICBmb3IgKGNvbnN0IHBrZyBvZiBwYWNrYWdlcykge1xuICAgICAgaWYgKCFwa2c/Lm1hbmlmZXN0Py5leHBvcnRzKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGFsbFZlcnNpb25zICYmIEFycmF5LmlzQXJyYXkocGtnLmFwcGxpY2F0aW9uVmVyc2lvbnMpKSB7XG4gICAgICAgIHBrZy5hcHBsaWNhdGlvblZlcnNpb25zLmZvckVhY2godmVyc2lvbiA9PiB7XG4gICAgICAgICAgcGx1Z2lucy5wdXNoKC4uLnRoaXMuZXh0ZW5kUGx1Z2luc0RldGFpbHMocGtnLCB2ZXJzaW9uKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGx1Z2lucy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuZXh0ZW5kUGx1Z2luc0RldGFpbHMocGtnLCB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBwa2cubWFuaWZlc3QudmVyc2lvbixcbiAgICAgICAgICAgIGJpbmFyeUlkOiB1bmRlZmluZWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGx1Z2lucy5maWx0ZXIocGx1Z2luID0+ICFleGNsdWRlZFNjb3Blcy5pbmNsdWRlcyhwbHVnaW4uc2NvcGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhIGxpc3Qgb2YgcmVtb3RlcyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbiBBcHBsaWNhdGlvbiBtYW5hZ2VkIG9iamVjdC5cbiAgICogQHJldHVybnMgUmV0dXJucyBsaXN0IG9mIHJlbW90ZXMuXG4gICAqL1xuICBnZXRNRlJlbW90ZXMoYXBwbGljYXRpb246IElBcHBsaWNhdGlvbik6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhcHBsaWNhdGlvbi5tYW5pZmVzdCB8fCB7fTtcbiAgICBjb25zdCBjb25maWc6IFBsdWdpbnNDb25maWcgPSBhcHBsaWNhdGlvbj8uY29uZmlnIGFzIFBsdWdpbnNDb25maWc7XG4gICAgbGV0IHJlbW90ZXMgPSBjb25maWc/LnJlbW90ZXMgfHwgbWFuaWZlc3QucmVtb3RlcyB8fCB7fTtcbiAgICBjb25zdCBtYW5pZmVzdEV4cG9ydHMgPSBtYW5pZmVzdC5leHBvcnRzIHx8IG1hbmlmZXN0Lm1hbmlmZXN0Py5leHBvcnRzIHx8IFtdO1xuICAgIGNvbnN0IHNlbGZSZW1vdGVzOiBzdHJpbmdbXSA9IG1hbmlmZXN0RXhwb3J0c1xuICAgICAgLmZpbHRlcihwbHVnaW4gPT4gcGx1Z2luLnNjb3BlID09PSBQbHVnaW5zRXhwb3J0U2NvcGVzLlNFTEYpXG4gICAgICAubWFwKHBsdWdpbiA9PiBwbHVnaW4ubW9kdWxlIHx8IHBsdWdpbi5uYW1lKTtcblxuICAgIGlmIChzZWxmUmVtb3Rlcy5sZW5ndGgpIHtcbiAgICAgIHJlbW90ZXMgPSBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UubWVyZ2VSZW1vdGVzKFtcbiAgICAgICAgeyBbYXBwbGljYXRpb24uY29udGV4dFBhdGhdOiBzZWxmUmVtb3RlcyB9LFxuICAgICAgICByZW1vdGVzXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICByZW1vdGVzID0gUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLnJlbW92ZVJlbW90ZXMocmVtb3RlcywgY29uZmlnPy5leGNsdWRlZFJlbW90ZXMpO1xuICAgIHJldHVybiByZW1vdGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgYSBwYWNrYWdlLlxuICAgKiBBIHBhY2thZ2UgaXMgT0ZGSUNJQUwgaWYgaXQgY29tZXMgZnJvbSBtYW5hZ2VtZW50IHRlbmFudCBhbmQgaGFzIGEgbGFiZWwgYXR0YWNoZWQgY2FsbGVkIE9GRklDSUFMLlxuICAgKiBBIHBhY2thZ2UgaXMgQ09NTVVOSVRZIGlmIGl0IGhhcyBhIGxhYmVsIGNhbGxlZCBDT01NVU5JVFkuXG4gICAqIEEgcGFja2FnZSBpcyBDVVNUT00gaWYgaXQgZG9lcyBub3QgaGF2ZSBhbnkgbGFiZWwgYXR0YWNoZWQuXG4gICAqIEEgcGFja2FnZSBpcyBVTktOT1dOIGlmIGl0IGhhcyBhIGxhYmVsIGF0dGFjaGVkIGJ1dCBpdCBkb2VzIG5vdCBtYXRjaCBDT01NVU5JVFkgb3IgT0ZGSUNJQUwuXG4gICAqXG4gICAqIExhYmVscyBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgc3RhdHVzIG9mIGEgcGFja2FnZS4gQ29tbXVuaXR5IHBhY2thZ2VzIGFsd2F5cyBuZWVkXG4gICAqIGEgbGljZW5zZSB2YWxpZGF0aW9uLiBUaGUgbGFiZWwgd2lsbCBiZSBzaG93biBvbiB0aGUgYXBwbGljYXRpb24gY2FyZCB0byB0ZWxsIGEgdXNlclxuICAgKiB3aGV0aGVyIHRoZXkgYXJlIGxvb2tpbmcgaW50byBhbiBvZmZpY2lhbCBvciBjb21tdW5pdHkgcGFja2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHBhY2thZ2VBcHBsaWNhdGlvbiBUaGUgcGFja2FnZSBhcHBsaWNhdGlvbiBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFRoZSBwYWNrYWdlIHR5cGUuXG4gICAqL1xuICBnZXRQYWNrYWdlVHlwZShwYWNrYWdlQXBwbGljYXRpb246IElBcHBsaWNhdGlvbik6IFBhY2thZ2VUeXBlIHtcbiAgICBjb25zdCBsYWJlbCA9IHBhY2thZ2VBcHBsaWNhdGlvbi5sYWJlbCB8fCBwYWNrYWdlQXBwbGljYXRpb24ubWFuaWZlc3Q/LmxhYmVsO1xuICAgIGlmIChsYWJlbCA9PT0gUGFja2FnZVR5cGUuQVJDSElWRUQpIHtcbiAgICAgIHJldHVybiBQYWNrYWdlVHlwZS5BUkNISVZFRDtcbiAgICB9XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgcmV0dXJuIFBhY2thZ2VUeXBlLkNVU1RPTTtcbiAgICB9XG4gICAgaWYgKGxhYmVsID09PSBQYWNrYWdlVHlwZS5PRkZJQ0lBTCAmJiB0aGlzLmlzT3duZWRCeU1hbmFnZW1lbnQocGFja2FnZUFwcGxpY2F0aW9uKSkge1xuICAgICAgcmV0dXJuIFBhY2thZ2VUeXBlLk9GRklDSUFMO1xuICAgIH1cbiAgICBpZiAobGFiZWwgPT09IFBhY2thZ2VUeXBlLkNPTU1VTklUWSkge1xuICAgICAgcmV0dXJuIFBhY2thZ2VUeXBlLkNPTU1VTklUWTtcbiAgICB9XG4gICAgcmV0dXJuIFBhY2thZ2VUeXBlLlVOS05PV047XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYW4gYXBwbGljYXRpb24gaXMgb3duZWQgYnkgbWFuYWdlbWVudCB0ZW5hbnQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIHZlcmlmeS5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBvd25lZCBieSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICovXG4gIGlzT3duZWRCeU1hbmFnZW1lbnQoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBhcHBPd25lciA9IGdldChhcHAsICdvd25lci50ZW5hbnQuaWQnKTtcbiAgICByZXR1cm4gYXBwT3duZXIgPT09ICdtYW5hZ2VtZW50JztcbiAgfVxuXG4gIHBsdWdpbnNGcm9tTWFuaWZlc3QobWFuaWZlc3Q6IElNYW5pZmVzdCk6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIGNvbnN0IHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10gPSBtYW5pZmVzdC5leHBvcnRzO1xuICAgIGNvbnN0IGV4dGVuZGVkUGx1Z2lucyA9IHBsdWdpbnNcbiAgICAgIC5maWx0ZXIocCA9PiBwLnNjb3BlID09PSBQbHVnaW5zRXhwb3J0U2NvcGVzLlNFTEYpXG4gICAgICAubWFwKHAgPT4gKHtcbiAgICAgICAgLi4ucCxcbiAgICAgICAgaWQ6IFBsdWdpbnNTZXJ2aWNlLmNyZWF0ZVBsdWdpbklkKG1hbmlmZXN0LmNvbnRleHRQYXRoLCBwLCBtYW5pZmVzdC52ZXJzaW9uKSxcbiAgICAgICAgY29udGV4dFBhdGg6IG1hbmlmZXN0LmNvbnRleHRQYXRoLFxuICAgICAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uLFxuICAgICAgICB2ZXJzaW9uaW5nTWF0cml4OiBtYW5pZmVzdC52ZXJzaW9uaW5nTWF0cml4LFxuICAgICAgICBsaWNlbnNlOiBtYW5pZmVzdC5saWNlbnNlLFxuICAgICAgICB0eXBlOiBQYWNrYWdlVHlwZS5DVVNUT01cbiAgICAgIH0pKTtcbiAgICByZXR1cm4gZXh0ZW5kZWRQbHVnaW5zO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmVhZG1lRmlsZUNvbnRlbnQoYmFzZVVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkbWVGaWxlID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlKGJhc2VVcmwpO1xuXG4gICAgaWYgKHJlYWRtZUZpbGUuc3RhdHVzID09PSAyMDApIHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkbWVGaWxlLnRleHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWFkbWVGaWxlKGJhc2VVcmw6IHN0cmluZyk6IFByb21pc2U8SUZldGNoUmVzcG9uc2U+IHtcbiAgICBsZXQgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZTtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJyB9XG4gICAgfTtcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgJHtiYXNlVXJsfVJFQURNRS5tZGAsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAke2Jhc2VVcmx9cmVhZG1lLm1kYCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZlNjb3BlZFBsdWdpbihwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLCBjb250ZXh0UGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBwbHVnaW4uc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRiAmJlxuICAgICAgKCFjb250ZXh0UGF0aCB8fCBwbHVnaW4uY29udGV4dFBhdGggPT09IGNvbnRleHRQYXRoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGZTY29wZWRQbHVnaW5zKFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgY29udGV4dFBhdGg/OiBzdHJpbmdcbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiB0aGlzLmlzU2VsZlNjb3BlZFBsdWdpbihwbHVnaW4sIGNvbnRleHRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbFBsdWdpbnNFeGNlcHRTZWxmU2NvcGVkKFxuICAgIHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgY29udGV4dFBhdGg/OiBzdHJpbmdcbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgcmV0dXJuIHBsdWdpbnMuZmlsdGVyKHBsdWdpbiA9PiAhdGhpcy5pc1NlbGZTY29wZWRQbHVnaW4ocGx1Z2luLCBjb250ZXh0UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVzKGFwcHM6IElBcHBsaWNhdGlvbltdLCBrZXk6IHN0cmluZyk6IElBcHBsaWNhdGlvbltdIHtcbiAgICBjb25zdCB1bmlxdWVMaXN0OiBJQXBwbGljYXRpb25bXSA9IFtdO1xuICAgIGNvbnN0IGdyb3VwZWRBcHBzQnlLZXk6IFJlY29yZDxzdHJpbmcsIElBcHBsaWNhdGlvbltdPiA9IGdyb3VwQnkoYXBwcywga2V5KTtcbiAgICBjb25zdCBncm91cGVkQXBwczogSUFwcGxpY2F0aW9uW11bXSA9IE9iamVjdC5rZXlzKGdyb3VwZWRBcHBzQnlLZXkpLm1hcChcbiAgICAgIGtleSA9PiBncm91cGVkQXBwc0J5S2V5W2tleV1cbiAgICApO1xuICAgIGZvciAoY29uc3QgYXBwc0dyb3VwIG9mIGdyb3VwZWRBcHBzKSB7XG4gICAgICBpZiAoYXBwc0dyb3VwLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdW5pcXVlTGlzdC5wdXNoKC4uLmFwcHNHcm91cCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhcHBGcm9tQ3VycmVudFRlbmFudCA9IGFwcHNHcm91cC5maW5kKGFwcCA9PiB0aGlzLmlzRnJvbUN1cnJlbnRUZW5hbnQoYXBwKSk7XG4gICAgICAgIGlmIChhcHBGcm9tQ3VycmVudFRlbmFudCkge1xuICAgICAgICAgIHVuaXF1ZUxpc3QucHVzaChhcHBGcm9tQ3VycmVudFRlbmFudCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwTm90T3duZWRCeU1hbmFnZW1lbnQgPSBhcHBzR3JvdXAuZmluZChhcHAgPT4gIXRoaXMuaXNPd25lZEJ5TWFuYWdlbWVudChhcHApKTtcbiAgICAgICAgdW5pcXVlTGlzdC5wdXNoKGFwcE5vdE93bmVkQnlNYW5hZ2VtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuaXF1ZUxpc3Q7XG4gIH1cblxuICBwcml2YXRlIGlzRnJvbUN1cnJlbnRUZW5hbnQoYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYXBwLm93bmVyLnRlbmFudC5pZCA9PT0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZS5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBsaXN0IG9mIHBsdWdpbnMgdG8gaGF2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgaWQuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZXh0ZW5kUGx1Z2luc0RldGFpbHMoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICB2ZXJzaW9uOiBJQXBwbGljYXRpb25WZXJzaW9uLFxuICAgIHVzZUxhdGVzdCA9IGZhbHNlXG4gICk6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIGNvbnN0IHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10gPSBhcHBsaWNhdGlvbi5tYW5pZmVzdC5leHBvcnRzO1xuICAgIGNvbnN0IGV4dGVuZGVkUGx1Z2luczogQXBwbGljYXRpb25QbHVnaW5bXSA9IHBsdWdpbnMubWFwKHAgPT4gKHtcbiAgICAgIC4uLnAsXG4gICAgICBpZDogUGx1Z2luc1NlcnZpY2UuY3JlYXRlUGx1Z2luSWQoYXBwbGljYXRpb24uY29udGV4dFBhdGgsIHAsIHZlcnNpb24udmVyc2lvbiwgdXNlTGF0ZXN0KSxcbiAgICAgIGlkTGF0ZXN0OiBQbHVnaW5zU2VydmljZS5jcmVhdGVQbHVnaW5JZChhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCwgcCwgdmVyc2lvbi52ZXJzaW9uLCB0cnVlKSxcbiAgICAgIGNvbnRleHRQYXRoOiBhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCxcbiAgICAgIHZlcnNpb246IHZlcnNpb24udmVyc2lvbixcbiAgICAgIHZlcnNpb25pbmdNYXRyaXg6IGFwcGxpY2F0aW9uLm1hbmlmZXN0LnZlcnNpb25pbmdNYXRyaXgsXG4gICAgICB0YWdzOiB1c2VMYXRlc3QgPyBbJ2xhdGVzdCddIDogdmVyc2lvbi50YWdzIHx8IFtdLFxuICAgICAgbGljZW5zZTogYXBwbGljYXRpb24ubWFuaWZlc3QubGljZW5zZSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0UGFja2FnZVR5cGUoYXBwbGljYXRpb24pLFxuICAgICAgb3JpZ2luQXBwOiBhcHBsaWNhdGlvblxuICAgIH0pKTtcbiAgICByZXR1cm4gZXh0ZW5kZWRQbHVnaW5zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsaXN0QXBwbGljYXRpb25zQnlDdXJyZW50VGVuYW50KHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ0hPU1RFRCcsXG4gICAgICAgIHBhZ2VTaXplOiAyMDAwLFxuICAgICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgY29uc3Qgc2hhcmVkRmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYXZhaWxhYmlsaXR5OiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5TSEFSRUQsXG4gICAgICAgIHR5cGU6ICdIT1NURUQnLFxuICAgICAgICBwYWdlU2l6ZTogMjAwMCxcbiAgICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICAgIH0sXG4gICAgICBwYXJhbXNcbiAgICApO1xuXG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWUubmFtZTtcbiAgICBjb25zdCBbcmVzdWx0QXBwc093bmVkQnlUZW5hbnQsIHJlc3VsdFNoYXJlZEFwcHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5VGVuYW50KHRlbmFudE5hbWUsIGZpbHRlciksXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0KHNoYXJlZEZpbHRlcilcbiAgICBdKTtcbiAgICBjb25zdCB7IGRhdGE6IGFwcHNPd25lZEJ5VGVuYW50IH0gPSByZXN1bHRBcHBzT3duZWRCeVRlbmFudDtcbiAgICBjb25zdCB7IGRhdGE6IHNoYXJlZEFwcHMgfSA9IHJlc3VsdFNoYXJlZEFwcHM7XG4gICAgY29uc3Qgd2ViQXBwcyA9IFsuLi5hcHBzT3duZWRCeVRlbmFudCwgLi4uc2hhcmVkQXBwc107XG4gICAgcmV0dXJuIHVuaXFCeSh3ZWJBcHBzLCAoYXBwOiBJQXBwbGljYXRpb24pID0+IGFwcC5pZCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFBsdWdpblRvUmVtb3Rlc0NvbmZpZyhcbiAgICByZW1vdGVzQ29uZmlnOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMsXG4gICAgcGx1Z2luczogQXBwbGljYXRpb25QbHVnaW4gfCBBcHBsaWNhdGlvblBsdWdpbltdXG4gICk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgaWYgKCFwbHVnaW5zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlbW90ZXNDb3B5ID0gY2xvbmVEZWVwKHJlbW90ZXNDb25maWcpO1xuICAgIGNvbnN0IHRlbXAgPSBBcnJheS5pc0FycmF5KHBsdWdpbnMpID8gcGx1Z2lucyA6IFtwbHVnaW5zXTtcblxuICAgIHRlbXAuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgY29uc3QgeyBjb250ZXh0UGF0aCwgbW9kdWxlTmFtZSB9ID0gdGhpcy5wYXJzZVBsdWdpbklkKHBsdWdpbi5pZCk7XG4gICAgICBpZiAoIWNvbnRleHRQYXRoIHx8ICFtb2R1bGVOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXT8ubGVuZ3RoID49IDBcbiAgICAgICAgPyByZW1vdGVzQ29weVtjb250ZXh0UGF0aF0ucHVzaChtb2R1bGVOYW1lKVxuICAgICAgICA6IChyZW1vdGVzQ29weVtjb250ZXh0UGF0aF0gPSBbXSkucHVzaChtb2R1bGVOYW1lKTtcbiAgICAgIHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXSA9IFsuLi5uZXcgU2V0KHJlbW90ZXNDb3B5W2NvbnRleHRQYXRoXSldO1xuICAgIH0pO1xuICAgIHJldHVybiByZW1vdGVzQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGx1Z2luc0Zyb21SZW1vdGVzQ29uZmlnKFxuICAgIHJlbW90ZXNDb25maWc6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICBwbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbiB8IEFwcGxpY2F0aW9uUGx1Z2luW11cbiAgKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCByZW1vdGVzQ29weTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gY2xvbmVEZWVwKHJlbW90ZXNDb25maWcpO1xuICAgIGNvbnN0IHRlbXAgPSBBcnJheS5pc0FycmF5KHBsdWdpbnMpID8gcGx1Z2lucyA6IFtwbHVnaW5zXTtcblxuICAgIHRlbXAuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgY29uc3QgeyBjb250ZXh0UGF0aCwgbW9kdWxlTmFtZSB9ID0gdGhpcy5wYXJzZVBsdWdpbklkKHBsdWdpbi5pZCk7XG4gICAgICBpZiAoIWNvbnRleHRQYXRoIHx8ICFtb2R1bGVOYW1lIHx8ICFyZW1vdGVzQ29weVtjb250ZXh0UGF0aF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdID0gcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdLmZpbHRlcihwID0+IHAgIT09IG1vZHVsZU5hbWUpO1xuICAgICAgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdID0gWy4uLm5ldyBTZXQocmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdKV07XG4gICAgICBpZiAocmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWxldGUgcmVtb3Rlc0NvcHlbY29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZW1vdGVzQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQbHVnaW5JZChpZDogc3RyaW5nKTogeyBjb250ZXh0UGF0aDogc3RyaW5nOyBtb2R1bGVOYW1lOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgW2NvbnRleHRQYXRoLCBtb2R1bGVOYW1lXSA9IGlkLnNwbGl0KCcvJyk7XG4gICAgcmV0dXJuIHsgY29udGV4dFBhdGgsIG1vZHVsZU5hbWUgfTtcbiAgfVxufVxuIl19