@c8y/ngx-components 1021.60.1 → 1021.62.1

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 (114) hide show
  1. package/core/authentication/new-password.component.d.ts +6 -3
  2. package/core/authentication/new-password.component.d.ts.map +1 -1
  3. package/core/common/interval-based-reload.abstract.d.ts +12 -1
  4. package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
  5. package/core/common/permissions.service.d.ts +2 -0
  6. package/core/common/permissions.service.d.ts.map +1 -1
  7. package/core/common/tenant-ui.service.d.ts +9 -2
  8. package/core/common/tenant-ui.service.d.ts.map +1 -1
  9. package/core/forms/phone-validation.directive.d.ts +3 -6
  10. package/core/forms/phone-validation.directive.d.ts.map +1 -1
  11. package/core/router/router.module.d.ts.map +1 -1
  12. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -1
  13. package/esm2022/core/authentication/new-password.component.mjs +26 -5
  14. package/esm2022/core/common/interval-based-reload.abstract.mjs +50 -2
  15. package/esm2022/core/common/permissions.service.mjs +3 -1
  16. package/esm2022/core/common/tenant-ui.service.mjs +28 -6
  17. package/esm2022/core/forms/phone-validation.directive.mjs +18 -19
  18. package/esm2022/core/router/router.module.mjs +1 -5
  19. package/esm2022/core/user/user-edit.component.mjs +1 -1
  20. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +8 -3
  21. package/esm2022/tenants/custom-properties/custom-properties.component.mjs +25 -5
  22. package/esm2022/tenants/existing-tenant.guard.mjs +18 -0
  23. package/esm2022/tenants/index.mjs +3 -1
  24. package/esm2022/tenants/support-user-access/support-user-access.component.mjs +31 -0
  25. package/esm2022/tenants/tenant-form/tenant-form-inputs-definitions.mjs +116 -0
  26. package/esm2022/tenants/tenant-form/tenant-form.component.mjs +294 -0
  27. package/esm2022/tenants/tenant-limits/tenant-limits-definitions.mjs +10 -17
  28. package/esm2022/tenants/tenant-limits/tenant-limits.component.mjs +42 -29
  29. package/esm2022/tenants/tenant-list/tenant-list.component.mjs +17 -8
  30. package/esm2022/tenants/tenants.model.mjs +30 -1
  31. package/esm2022/tenants/tenants.module.mjs +57 -22
  32. package/esm2022/translation-editor/data/translation-store.service.mjs +11 -8
  33. package/esm2022/translation-editor/index.mjs +22 -5
  34. package/esm2022/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.mjs +136 -0
  35. package/esm2022/translation-editor/lazy/index.mjs +2 -1
  36. package/esm2022/translation-editor/translation-editor-tab-factory.service.mjs +40 -0
  37. package/esm2022/translation-editor/translation-editor.constants.mjs +4 -0
  38. package/esm2022/upgrade/upgraded-services/index.mjs +2 -1
  39. package/esm2022/upgrade/upgraded-services/tenant-policies.service.mjs +11 -0
  40. package/esm2022/upgrade/upgraded-services/upgraded-services.module.mjs +12 -3
  41. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +9 -7
  42. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +9 -7
  43. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +7 -2
  44. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-tenants.mjs +603 -82
  46. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +9 -6
  48. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +127 -2
  50. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-translation-editor.mjs +58 -4
  52. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +22 -3
  54. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +8 -6
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +8 -6
  58. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components.mjs +499 -413
  60. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  61. package/locales/de.po +17 -25
  62. package/locales/es.po +17 -25
  63. package/locales/fr.po +17 -25
  64. package/locales/ja_JP.po +17 -25
  65. package/locales/ko.po +17 -25
  66. package/locales/locales.pot +25 -24
  67. package/locales/nl.po +17 -25
  68. package/locales/pl.po +17 -25
  69. package/locales/pt_BR.po +17 -25
  70. package/locales/zh_CN.po +17 -25
  71. package/locales/zh_TW.po +17 -25
  72. package/package.json +1 -1
  73. package/tenants/custom-properties/custom-properties.component.d.ts +4 -2
  74. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  75. package/tenants/existing-tenant.guard.d.ts +13 -0
  76. package/tenants/existing-tenant.guard.d.ts.map +1 -0
  77. package/tenants/index.d.ts +2 -0
  78. package/tenants/index.d.ts.map +1 -1
  79. package/tenants/support-user-access/support-user-access.component.d.ts +18 -0
  80. package/tenants/support-user-access/support-user-access.component.d.ts.map +1 -0
  81. package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts +113 -0
  82. package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts.map +1 -0
  83. package/tenants/tenant-form/tenant-form.component.d.ts +79 -0
  84. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -0
  85. package/tenants/tenant-limits/tenant-limits-definitions.d.ts +11 -15
  86. package/tenants/tenant-limits/tenant-limits-definitions.d.ts.map +1 -1
  87. package/tenants/tenant-limits/tenant-limits.component.d.ts +9 -7
  88. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  89. package/tenants/tenant-list/tenant-list.component.d.ts +6 -3
  90. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  91. package/tenants/tenants.model.d.ts +31 -0
  92. package/tenants/tenants.model.d.ts.map +1 -1
  93. package/tenants/tenants.module.d.ts +4 -2
  94. package/tenants/tenants.module.d.ts.map +1 -1
  95. package/translation-editor/data/translation-store.service.d.ts +3 -2
  96. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  97. package/translation-editor/index.d.ts.map +1 -1
  98. package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts +28 -0
  99. package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts.map +1 -0
  100. package/translation-editor/lazy/index.d.ts +1 -0
  101. package/translation-editor/lazy/index.d.ts.map +1 -1
  102. package/translation-editor/translation-editor-tab-factory.service.d.ts +22 -0
  103. package/translation-editor/translation-editor-tab-factory.service.d.ts.map +1 -0
  104. package/translation-editor/translation-editor.constants.d.ts +4 -0
  105. package/translation-editor/translation-editor.constants.d.ts.map +1 -0
  106. package/upgrade/upgraded-services/index.d.ts +1 -0
  107. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  108. package/upgrade/upgraded-services/tenant-policies.service.d.ts +11 -0
  109. package/upgrade/upgraded-services/tenant-policies.service.d.ts.map +1 -0
  110. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  111. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +7 -2
  112. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  113. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +7 -2
  114. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
@@ -1,12 +1,14 @@
1
- import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { NewPassword } from './password.model';
3
3
  import { NgModel, ValidatorFn } from '@angular/forms';
4
4
  import { LoginService } from '../login/login.service';
5
5
  import * as i0 from "@angular/core";
6
- export declare class NewPasswordComponent implements OnInit {
6
+ export declare class NewPasswordComponent implements OnChanges, OnInit {
7
7
  private loginService;
8
8
  private cdRef;
9
9
  password: EventEmitter<object | NewPassword>;
10
+ showChangePasswordButton: boolean;
11
+ requireStrongPassword: boolean;
10
12
  model: any;
11
13
  changePassword: boolean;
12
14
  passwordEnforced: boolean;
@@ -17,11 +19,12 @@ export declare class NewPasswordComponent implements OnInit {
17
19
  constructor(loginService: LoginService, cdRef: ChangeDetectorRef);
18
20
  passwordChecklistValidator: ValidatorFn;
19
21
  ngOnInit(): void;
22
+ ngOnChanges(changes: SimpleChanges): Promise<void>;
20
23
  newPasswordChanged(): void;
21
24
  updateValidity(requirementsFulfilled: boolean): void;
22
25
  loadPasswordStrengthSettings(): Promise<void>;
23
26
  toggleChangePassword(): void;
24
27
  static ɵfac: i0.ɵɵFactoryDeclaration<NewPasswordComponent, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<NewPasswordComponent, "c8y-new-password", never, {}, { "password": "password"; }, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<NewPasswordComponent, "c8y-new-password", never, { "showChangePasswordButton": { "alias": "showChangePasswordButton"; "required": false; }; "requireStrongPassword": { "alias": "requireStrongPassword"; "required": false; }; }, { "password": "password"; }, never, never, false, never>;
26
29
  }
27
30
  //# sourceMappingURL=new-password.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-password.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/new-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EACZ,MAAM,EAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAA4B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAKa,oBAAqB,YAAW,MAAM;IAkB/C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IAlBL,QAAQ,qCAA4C;IAC9D,KAAK,EAAE,GAAG,CAAM;IAChB,cAAc,UAAS;IACvB,gBAAgB,UAAS;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,IACI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAKrC;gBAGS,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,iBAAiB;IAGlC,0BAA0B,EAAE,WAAW,CACmC;IAE1E,QAAQ;IAOR,kBAAkB;IAOlB,cAAc,CAAC,qBAAqB,EAAE,OAAO;IAWvC,4BAA4B;IAIlC,oBAAoB;yCAtDT,oBAAoB;2CAApB,oBAAoB;CA6DhC"}
1
+ {"version":3,"file":"new-password.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/new-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EAEZ,MAAM,EACN,SAAS,EAGT,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAA4B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAKa,oBAAqB,YAAW,SAAS,EAAE,MAAM;IAoB1D,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IApBL,QAAQ,qCAA4C;IACrD,wBAAwB,UAAQ;IAChC,qBAAqB,EAAE,OAAO,CAAC;IACxC,KAAK,EAAE,GAAG,CAAM;IAChB,cAAc,UAAS;IACvB,gBAAgB,UAAS;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,IACI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAKrC;gBAGS,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,iBAAiB;IAGlC,0BAA0B,EAAE,WAAW,CACmC;IAE1E,QAAQ;IAOF,WAAW,CAAC,OAAO,EAAE,aAAa;IAWxC,kBAAkB;IAOlB,cAAc,CAAC,qBAAqB,EAAE,OAAO;IAWvC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnD,oBAAoB;yCA1ET,oBAAoB;2CAApB,oBAAoB;CAiFhC"}
@@ -1,11 +1,18 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { BehaviorSubject, Subscription } from 'rxjs';
3
3
  import { CountdownIntervalComponent } from '../countdown-interval';
4
+ import { GainsightService } from '../product-experience';
5
+ export declare const WIDGET_TYPE_VALUES: {
6
+ readonly ALARMS: "alarms";
7
+ readonly DATA_POINTS_TABLE: "dataPointsTable";
8
+ };
9
+ type WidgetType = (typeof WIDGET_TYPE_VALUES)[keyof typeof WIDGET_TYPE_VALUES];
4
10
  /**
5
11
  * Abstract class representing an interval reload functionality.
6
12
  * This class provides methods and properties for managing an interval-based reload mechanism.
7
13
  */
8
14
  export declare abstract class IntervalBasedReload {
15
+ protected gainsightService: GainsightService;
9
16
  abstract countdownIntervalComponent: CountdownIntervalComponent;
10
17
  /**
11
18
  * Holds the subscription to a countdown observable.
@@ -91,8 +98,9 @@ export declare abstract class IntervalBasedReload {
91
98
  * is set to false.
92
99
  *
93
100
  * @param $event - The MouseEvent that triggered this method.
101
+ * @param widgetType - The type of the widget that triggered the event
94
102
  */
95
- onToggleCountdownButtonState($event: MouseEvent): void;
103
+ onToggleCountdownButtonState($event: MouseEvent, widgetType: WidgetType): void;
96
104
  /**
97
105
  * This function listens for changes in the `isLoading` observable, filtering out any truthy values.
98
106
  * Once a falsy value is detected (indicating that loading has finished), it attempts to start the countdown.
@@ -126,5 +134,8 @@ export declare abstract class IntervalBasedReload {
126
134
  * Updates the countdown button tooltip text based on the state of the interval refresh toggle state.
127
135
  */
128
136
  protected abstract updateCountdownButtonTooltipText(): void;
137
+ private triggerGainsightEvent;
138
+ private determineComponentName;
129
139
  }
140
+ export {};
130
141
  //# sourceMappingURL=interval-based-reload.abstract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interval-based-reload.abstract.d.ts","sourceRoot":"","sources":["../../../core/common/interval-based-reload.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAU,YAAY,EAAO,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,8BAAsB,mBAAmB;IACvC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE;;OAEG;IACH,SAAS,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAC9C;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAE5C,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAClD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACtD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAE1C;;;;;;OAMG;IACH,eAAe,IAAI,IAAI;IAOvB;;;;;;;;;;;;;OAaG;IACH,eAAe,IAAI,IAAI;IAoBvB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,IAAI;IAE/B;;;;;;;;;;;;;;OAcG;IACH,4BAA4B,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAmBtD;;;;;;;;;OASG;IACH,cAAc,IAAI,IAAI;IAWtB;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,IAAI,IAAI;IAEhC;;;;;;;OAOG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gCAAgC,IAAI,IAAI;CAC5D"}
1
+ {"version":3,"file":"interval-based-reload.abstract.d.ts","sourceRoot":"","sources":["../../../core/common/interval-based-reload.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAU,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAU,YAAY,EAAO,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAmBzD,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,KAAK,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/E;;;GAGG;AACH,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,gBAAgB,mBAA4B;IAEtD,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE;;OAEG;IACH,SAAS,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAC9C;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAE5C,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAClD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACtD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAE1C;;;;;;OAMG;IACH,eAAe,IAAI,IAAI;IAOvB;;;;;;;;;;;;;OAaG;IACH,eAAe,IAAI,IAAI;IAoBvB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,IAAI;IAE/B;;;;;;;;;;;;;;;OAeG;IACH,4BAA4B,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IA+B9E;;;;;;;;;OASG;IACH,cAAc,IAAI,IAAI;IAWtB;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,IAAI,IAAI;IAEhC;;;;;;;OAOG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gCAAgC,IAAI,IAAI;IAE3D,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,sBAAsB;CAU/B"}
@@ -75,6 +75,8 @@ export declare class Permissions {
75
75
  static ROLE_SMARTRULE_READ: string;
76
76
  static ROLE_SMS_ADMIN: string;
77
77
  static ROLE_SMS_READ: string;
78
+ static ROLE_SUPPORT_ADMIN: string;
79
+ static ROLE_SUPPORT_READ: string;
78
80
  static ROLE_TENANT_ADMIN: string;
79
81
  static ROLE_TENANT_MANAGEMENT_ADMIN: string;
80
82
  static ROLE_TENANT_MANAGEMENT_CREATE: string;
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.service.d.ts","sourceRoot":"","sources":["../../../core/common/permissions.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.service.d.ts","sourceRoot":"","sources":["../../../core/common/permissions.service.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
- import { IApplication, ICurrentTenant, ITenantLoginOption, TenantLoginOptionType, UserService } from '@c8y/client';
1
+ import { IApplication, ICurrentTenant, ITenantLoginOption, TenantLoginOptionsService, TenantLoginOptionType, UserService } from '@c8y/client';
2
2
  import { AppStateService } from './ui-state.service';
3
3
  import * as i0 from "@angular/core";
4
+ export type PasswordStrengthSettings = Required<Pick<ITenantLoginOption, 'enforceStrength' | 'greenMinLength' | 'strengthValidity'>>;
4
5
  /** The helper UI service for tenant related methods built upon client services. */
5
6
  export declare class TenantUiService {
6
7
  private userService;
7
8
  private appStateService;
9
+ private tenantLoginOption;
8
10
  readonly MANAGEMENT = "management";
9
11
  readonly ROLE_TENANT_MANAGEMENT_READ: string;
10
- constructor(userService: UserService, appStateService: AppStateService);
12
+ constructor(userService: UserService, appStateService: AppStateService, tenantLoginOption: TenantLoginOptionsService);
11
13
  /**
12
14
  * Returns current tenant
13
15
  */
@@ -146,6 +148,11 @@ export declare class TenantUiService {
146
148
  * No additional request.
147
149
  */
148
150
  getSubscribedMicroservicesInCurrentTenant(): IApplication[];
151
+ /**
152
+ * Gets password constraints setting from loginOptions.
153
+ * @returns Returns Promise<PasswordStrengthSettings> with password properties.
154
+ */
155
+ getPasswordStrengthSettings(): Promise<PasswordStrengthSettings>;
149
156
  private hasApp;
150
157
  private isManagement;
151
158
  static ɵfac: i0.ɵɵFactoryDeclaration<TenantUiService, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-ui.service.d.ts","sourceRoot":"","sources":["../../../core/common/tenant-ui.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAEZ,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EAErB,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;;AAIrD,mFAAmF;AACnF,qBACa,eAAe;IAKxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IALzB,QAAQ,CAAC,UAAU,gBAAgB;IACnC,QAAQ,CAAC,2BAA2B,SAA2C;gBAGrE,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe;IAG1C;;OAEG;IACH,IAAI,aAAa,IAAI,cAAc,CAElC;IAED;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;;;;OAWG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB5C;;;;;OAKG;IACH,cAAc,IAAI,OAAO;IASzB;;OAEG;IACH,oCAAoC,IAAI,kBAAkB;IAI1D;;OAEG;IACH,uBAAuB,IAAI,qBAAqB;IAWhD;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,kBAAkB;IAmB/E;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,kBAAkB;IAMvE;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAI9D;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAIzD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAIjD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAOlD;;;;;OAKG;IACH,uCAAuC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAUpE;;;;OAIG;IACH,yCAAyC,IAAI,YAAY,EAAE;IAW3D,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;yCAhQT,eAAe;6CAAf,eAAe;CAmQ3B"}
1
+ {"version":3,"file":"tenant-ui.service.d.ts","sourceRoot":"","sources":["../../../core/common/tenant-ui.service.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAEZ,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EAErB,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;;AAIrD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAC7C,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC,CACpF,CAAC;AAEF,mFAAmF;AACnF,qBACa,eAAe;IAKxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,iBAAiB;IAN3B,QAAQ,CAAC,UAAU,gBAAgB;IACnC,QAAQ,CAAC,2BAA2B,SAA2C;gBAGrE,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,yBAAyB;IAGtD;;OAEG;IACH,IAAI,aAAa,IAAI,cAAc,CAElC;IAED;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;;;;OAWG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB5C;;;;;OAKG;IACH,cAAc,IAAI,OAAO;IASzB;;OAEG;IACH,oCAAoC,IAAI,kBAAkB;IAI1D;;OAEG;IACH,uBAAuB,IAAI,qBAAqB;IAWhD;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,kBAAkB;IAmB/E;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,kBAAkB;IAMvE;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAI9D;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAIzD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAIjD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO;IAOlD;;;;;OAKG;IACH,uCAAuC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAUpE;;;;OAIG;IACH,yCAAyC,IAAI,YAAY,EAAE;IAW3D;;;OAGG;IACG,2BAA2B,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAsBtE,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,YAAY;yCA3RT,eAAe;6CAAf,eAAe;CA8R3B"}
@@ -1,12 +1,9 @@
1
- import { AbstractControl, Validator } from '@angular/forms';
1
+ import { AbstractControl, Validator, ValidatorFn, ValidationErrors } from '@angular/forms';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class PhoneValidationDirective implements Validator {
4
- allowedCharactersPattern: RegExp;
5
- validate(control: AbstractControl): {
6
- [key: string]: any;
7
- } | null;
8
- private validateInternationalPhoneNumber;
4
+ validate(control: AbstractControl): ValidationErrors | null;
9
5
  static ɵfac: i0.ɵɵFactoryDeclaration<PhoneValidationDirective, never>;
10
6
  static ɵdir: i0.ɵɵDirectiveDeclaration<PhoneValidationDirective, "[c8yPhoneValidation]", never, {}, {}, never, never, false, never>;
11
7
  }
8
+ export declare function validateInternationalPhoneNumber(): ValidatorFn;
12
9
  //# sourceMappingURL=phone-validation.directive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phone-validation.directive.d.ts","sourceRoot":"","sources":["../../../core/forms/phone-validation.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;AAI3E,qBAIa,wBAAyB,YAAW,SAAS;IACxD,wBAAwB,SAAkB;IAE1C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI;IAKjE,OAAO,CAAC,gCAAgC;yCAR7B,wBAAwB;2CAAxB,wBAAwB;CAwBpC"}
1
+ {"version":3,"file":"phone-validation.directive.d.ts","sourceRoot":"","sources":["../../../core/forms/phone-validation.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,SAAS,EACT,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;;AAIxB,qBAIa,wBAAyB,YAAW,SAAS;IACxD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI;yCADhD,wBAAwB;2CAAxB,wBAAwB;CAIpC;AACD,wBAAgB,gCAAgC,IAAI,WAAW,CAoB9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.module.d.ts","sourceRoot":"","sources":["../../../core/router/router.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAkC,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOvF,OAAO,EAAE,KAAK,EAAe,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;;;;;;;AAIjD,eAAO,MAAM,WAAW,EAAE,KAAK,EAS9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,oBAAoB,EAAO,CAAC;AAmB5D;;;;;;;;;GASG;AACH,qBAKa,YAAY;IA6BrB,OAAO,CAAC,aAAa;IA5BvB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,MAAW,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;gBAqBnF,aAAa,EAAE,aAAa;yCA7B3B,YAAY;0CAAZ,YAAY;0CAAZ,YAAY;CA+BxB"}
1
+ {"version":3,"file":"router.module.d.ts","sourceRoot":"","sources":["../../../core/router/router.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAkC,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOvF,OAAO,EAAE,KAAK,EAAe,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;;;;;;;AAIjD,eAAO,MAAM,WAAW,EAAE,KAAK,EAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,oBAAoB,EAAO,CAAC;AAmB5D;;;;;;;;;GASG;AACH,qBAKa,YAAY;IA6BrB,OAAO,CAAC,aAAa;IA5BvB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,MAAW,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;gBAqBnF,aAAa,EAAE,aAAa;yCA7B3B,YAAY;0CAAZ,YAAY;0CAAZ,YAAY;CA+BxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"device-provisioned-certificates.service.d.ts","sourceRoot":"","sources":["../../device-provisioned-certificates/device-provisioned-certificates.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;;AAEzF,qBACa,oCAAoC;IAE7C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,WAAW;IAGvB,gCAAgC,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC;YAMlC,iBAAiB;yCAdpB,oCAAoC;6CAApC,oCAAoC;CAwBhD"}
1
+ {"version":3,"file":"device-provisioned-certificates.service.d.ts","sourceRoot":"","sources":["../../device-provisioned-certificates/device-provisioned-certificates.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;;AAEzF,qBACa,oCAAoC;IAE7C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;gBADN,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,WAAW;IAGvB,gCAAgC,CACpC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,sBAAsB,EAAE,GAAG,SAAS,CAAC;YAalC,iBAAiB;yCArBpB,oCAAoC;6CAApC,oCAAoC;CA+BhD"}
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, Component, EventEmitter, Output, ViewChild } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { ControlContainer, NgForm, NgModel } from '@angular/forms';
3
3
  import { LoginService } from '../login/login.service';
4
4
  import * as i0 from "@angular/core";
@@ -23,6 +23,7 @@ export class NewPasswordComponent {
23
23
  this.loginService = loginService;
24
24
  this.cdRef = cdRef;
25
25
  this.password = new EventEmitter();
26
+ this.showChangePasswordButton = true;
26
27
  this.model = {};
27
28
  this.changePassword = false;
28
29
  this.passwordEnforced = false;
@@ -34,6 +35,14 @@ export class NewPasswordComponent {
34
35
  this.minlength = value;
35
36
  });
36
37
  }
38
+ async ngOnChanges(changes) {
39
+ if (changes.showChangePasswordButton) {
40
+ this.changePassword = !this.showChangePasswordButton;
41
+ }
42
+ if (changes.requireStrongPassword?.previousValue !== changes.requireStrongPassword?.currentValue) {
43
+ await this.loadPasswordStrengthSettings();
44
+ }
45
+ }
37
46
  newPasswordChanged() {
38
47
  this.password.emit({
39
48
  password: this.model.newPassword,
@@ -51,7 +60,15 @@ export class NewPasswordComponent {
51
60
  }
52
61
  }
53
62
  async loadPasswordStrengthSettings() {
54
- this.passwordEnforced = await this.loginService.getPasswordStrengthEnforced({ refresh: true });
63
+ if (this.requireStrongPassword) {
64
+ this.passwordEnforced = this.requireStrongPassword;
65
+ }
66
+ else {
67
+ const passwordStrengthSettings = await this.loginService.getPasswordStrengthEnforced({
68
+ refresh: true
69
+ });
70
+ this.passwordEnforced = passwordStrengthSettings;
71
+ }
55
72
  }
56
73
  toggleChangePassword() {
57
74
  this.changePassword = !this.changePassword;
@@ -61,15 +78,19 @@ export class NewPasswordComponent {
61
78
  }
62
79
  }
63
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NewPasswordComponent, deps: [{ token: i1.LoginService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NewPasswordComponent, selector: "c8y-new-password", outputs: { password: "password" }, viewQueries: [{ propertyName: "_newPasswordModel", first: true, predicate: ["newPassword"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"toggleChangePassword()\"\n >\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div\n class=\"row content-flex-50\"\n *ngIf=\"changePassword\"\n>\n <div class=\"col-6\">\n <c8y-form-group>\n <label\n for=\"newPassword\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"newPassword\"\n required\n [id]=\"'newPassword'\"\n #newPassword=\"ngModel\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n c8yDefaultValidation=\"password\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"newConfirmPassword\"\n translate\n >\n Confirm password\n </label>\n <c8y-password-input\n name=\"newPasswordConfirm\"\n required\n [id]=\"'newConfirmPassword'\"\n #newPasswordConfirm=\"ngModel\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n passwordConfirm=\"newPassword\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n </div>\n <div class=\"col-6\">\n <c8y-password-check-list\n [password]=\"model.newPassword\"\n [strengthEnforced]=\"passwordEnforced\"\n (onRequirementsFulfilled)=\"updateValidity($event)\"\n ></c8y-password-check-list>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: i8.PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["strengthEnforced", "password"], outputs: ["onRequirementsFulfilled"] }, { kind: "component", type: i9.PasswordInputComponent, selector: "c8y-password-input", inputs: ["id", "autocomplete"] }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NewPasswordComponent, selector: "c8y-new-password", inputs: { showChangePasswordButton: "showChangePasswordButton", requireStrongPassword: "requireStrongPassword" }, outputs: { password: "password" }, viewQueries: [{ propertyName: "_newPasswordModel", first: true, predicate: ["newPassword"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showChangePasswordButton\" class=\"form-group\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"toggleChangePassword()\"\n data-cy=\"c8y-new-password--change-button\"\n >\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div\n class=\"row content-flex-50\"\n *ngIf=\"changePassword\"\n>\n <div class=\"col-6\">\n <c8y-form-group>\n <label\n for=\"newPassword\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"newPassword\"\n required\n [id]=\"'newPassword'\"\n #newPassword=\"ngModel\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n c8yDefaultValidation=\"password\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"newConfirmPassword\"\n translate\n >\n Confirm password\n </label>\n <c8y-password-input\n name=\"newPasswordConfirm\"\n required\n [id]=\"'newConfirmPassword'\"\n #newPasswordConfirm=\"ngModel\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n passwordConfirm=\"newPassword\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n </div>\n <div class=\"col-6\">\n <c8y-password-check-list\n [password]=\"model.newPassword\"\n [strengthEnforced]=\"passwordEnforced\"\n (onRequirementsFulfilled)=\"updateValidity($event)\"\n ></c8y-password-check-list>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: i8.PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["strengthEnforced", "password"], outputs: ["onRequirementsFulfilled"] }, { kind: "component", type: i9.PasswordInputComponent, selector: "c8y-password-input", inputs: ["id", "autocomplete"] }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
65
82
  }
66
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NewPasswordComponent, decorators: [{
67
84
  type: Component,
68
- args: [{ selector: 'c8y-new-password', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"form-group\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"toggleChangePassword()\"\n >\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div\n class=\"row content-flex-50\"\n *ngIf=\"changePassword\"\n>\n <div class=\"col-6\">\n <c8y-form-group>\n <label\n for=\"newPassword\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"newPassword\"\n required\n [id]=\"'newPassword'\"\n #newPassword=\"ngModel\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n c8yDefaultValidation=\"password\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"newConfirmPassword\"\n translate\n >\n Confirm password\n </label>\n <c8y-password-input\n name=\"newPasswordConfirm\"\n required\n [id]=\"'newConfirmPassword'\"\n #newPasswordConfirm=\"ngModel\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n passwordConfirm=\"newPassword\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n </div>\n <div class=\"col-6\">\n <c8y-password-check-list\n [password]=\"model.newPassword\"\n [strengthEnforced]=\"passwordEnforced\"\n (onRequirementsFulfilled)=\"updateValidity($event)\"\n ></c8y-password-check-list>\n </div>\n</div>\n" }]
85
+ args: [{ selector: 'c8y-new-password', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"showChangePasswordButton\" class=\"form-group\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"toggleChangePassword()\"\n data-cy=\"c8y-new-password--change-button\"\n >\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div\n class=\"row content-flex-50\"\n *ngIf=\"changePassword\"\n>\n <div class=\"col-6\">\n <c8y-form-group>\n <label\n for=\"newPassword\"\n translate\n >\n Password\n </label>\n <c8y-password-input\n name=\"newPassword\"\n required\n [id]=\"'newPassword'\"\n #newPassword=\"ngModel\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n c8yDefaultValidation=\"password\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n\n <c8y-form-group>\n <label\n for=\"newConfirmPassword\"\n translate\n >\n Confirm password\n </label>\n <c8y-password-input\n name=\"newPasswordConfirm\"\n required\n [id]=\"'newConfirmPassword'\"\n #newPasswordConfirm=\"ngModel\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n passwordConfirm=\"newPassword\"\n [autocomplete]=\"'new-password'\"\n ></c8y-password-input>\n </c8y-form-group>\n </div>\n <div class=\"col-6\">\n <c8y-password-check-list\n [password]=\"model.newPassword\"\n [strengthEnforced]=\"passwordEnforced\"\n (onRequirementsFulfilled)=\"updateValidity($event)\"\n ></c8y-password-check-list>\n </div>\n</div>\n" }]
69
86
  }], ctorParameters: () => [{ type: i1.LoginService }, { type: i0.ChangeDetectorRef }], propDecorators: { password: [{
70
87
  type: Output
88
+ }], showChangePasswordButton: [{
89
+ type: Input
90
+ }], requireStrongPassword: [{
91
+ type: Input
71
92
  }], _newPasswordModel: [{
72
93
  type: ViewChild,
73
94
  args: ['newPassword']
74
95
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXV0aGVudGljYXRpb24vbmV3LXBhc3N3b3JkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYXV0aGVudGljYXRpb24vbmV3LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixJQUNJLGlCQUFpQixDQUFDLE9BQWdCO1FBQ3BDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFDVSxZQUEwQixFQUMxQixLQUF3QjtRQUR4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWxCeEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQzlELFVBQUssR0FBUSxFQUFFLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBa0J6QiwrQkFBMEIsR0FBZ0IsR0FBRyxFQUFFLENBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxDQUFDO0lBSHZFLENBQUM7SUFLSixRQUFRO1FBQ04sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxxQkFBOEI7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3ZELCtHQUErRztRQUMvRyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBNURVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDZNQ2pCakMsNHdEQWtFQSwwOUNEbkRpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzs7NEZBRXhELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBRWIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7aUhBR3pELFFBQVE7c0JBQWpCLE1BQU07Z0JBU0gsaUJBQWlCO3NCQURwQixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXdQYXNzd29yZCB9IGZyb20gJy4vcGFzc3dvcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtLCBOZ01vZGVsLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25ldy1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV1cbn0pXG5leHBvcnQgY2xhc3MgTmV3UGFzc3dvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgcGFzc3dvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ld1Bhc3N3b3JkIHwgb2JqZWN0PigpO1xuICBtb2RlbDogYW55ID0ge307XG4gIGNoYW5nZVBhc3N3b3JkID0gZmFsc2U7XG4gIHBhc3N3b3JkRW5mb3JjZWQgPSBmYWxzZTtcbiAgbWlubGVuZ3RoOiBudW1iZXI7XG4gIHJlcXVpcmVtZW50c0Z1bGZpbGxlZDogYm9vbGVhbjtcbiAgbmV3UGFzc3dvcmRNb2RlbDogTmdNb2RlbDtcblxuICBAVmlld0NoaWxkKCduZXdQYXNzd29yZCcpXG4gIHNldCBfbmV3UGFzc3dvcmRNb2RlbChuZ01vZGVsOiBOZ01vZGVsKSB7XG4gICAgaWYgKG5nTW9kZWwpIHtcbiAgICAgIHRoaXMubmV3UGFzc3dvcmRNb2RlbCA9IG5nTW9kZWw7XG4gICAgICBuZ01vZGVsLmNvbnRyb2wuYWRkVmFsaWRhdG9ycyh0aGlzLnBhc3N3b3JkQ2hlY2tsaXN0VmFsaWRhdG9yKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBwYXNzd29yZENoZWNrbGlzdFZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoKSA9PlxuICAgIHRoaXMucmVxdWlyZW1lbnRzRnVsZmlsbGVkID8gbnVsbCA6IHsgcGFzc3dvcmRTdHJlbmd0aENoZWNrbGlzdDogdHJ1ZSB9O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFBhc3N3b3JkU3RyZW5ndGhTZXR0aW5ncygpO1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmdldEdyZWVuTWluTGVuZ3RoKCkudGhlbih2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm1pbmxlbmd0aCA9IHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgbmV3UGFzc3dvcmRDaGFuZ2VkKCkge1xuICAgIHRoaXMucGFzc3dvcmQuZW1pdCh7XG4gICAgICBwYXNzd29yZDogdGhpcy5tb2RlbC5uZXdQYXNzd29yZCxcbiAgICAgIHBhc3N3b3JkU3RyZW5ndGg6IHRoaXMubW9kZWwuc3RyZW5ndGhcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVZhbGlkaXR5KHJlcXVpcmVtZW50c0Z1bGZpbGxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmVxdWlyZW1lbnRzRnVsZmlsbGVkID0gcmVxdWlyZW1lbnRzRnVsZmlsbGVkO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubmV3UGFzc3dvcmRNb2RlbC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAvLyBUaGVyZSBhcmUgdHdvIHZhbGlkYXRvcnMgY2hlY2tpbmcgcGFzc3dvcmQgdmFsaWRpdHksIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gc2hvdyBvbmUgb2YgdGhlc2UgZXJyb3JzIGF0IGEgdGltZSxcbiAgICAvLyB3aGVyZSBjaGVja2xpc3QgdmFsaWRhdG9yIHRha2VzIHByaW9yaXR5LlxuICAgIGlmICghdGhpcy5yZXF1aXJlbWVudHNGdWxmaWxsZWQpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLm5ld1Bhc3N3b3JkTW9kZWwuY29udHJvbC5lcnJvcnNbJ3Bhc3N3b3JkJ107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZFBhc3N3b3JkU3RyZW5ndGhTZXR0aW5ncygpIHtcbiAgICB0aGlzLnBhc3N3b3JkRW5mb3JjZWQgPSBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5nZXRQYXNzd29yZFN0cmVuZ3RoRW5mb3JjZWQoeyByZWZyZXNoOiB0cnVlIH0pO1xuICB9XG5cbiAgdG9nZ2xlQ2hhbmdlUGFzc3dvcmQoKSB7XG4gICAgdGhpcy5jaGFuZ2VQYXNzd29yZCA9ICF0aGlzLmNoYW5nZVBhc3N3b3JkO1xuICAgIGlmICghdGhpcy5jaGFuZ2VQYXNzd29yZCkge1xuICAgICAgdGhpcy5wYXNzd29yZC5lbWl0KHt9KTtcbiAgICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUNoYW5nZVBhc3N3b3JkKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjaGFuZ2VQYXNzd29yZFwiPlxuICAgICAge3sgJ0NoYW5nZSBwYXNzd29yZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hhbmdlUGFzc3dvcmRcIj5cbiAgICAgIHt7ICdDYW5jZWwgcGFzc3dvcmQgY2hhbmdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwicm93IGNvbnRlbnQtZmxleC01MFwiXG4gICpuZ0lmPVwiY2hhbmdlUGFzc3dvcmRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwibmV3UGFzc3dvcmRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgUGFzc3dvcmRcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8Yzh5LXBhc3N3b3JkLWlucHV0XG4gICAgICAgIG5hbWU9XCJuZXdQYXNzd29yZFwiXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIFtpZF09XCInbmV3UGFzc3dvcmQnXCJcbiAgICAgICAgI25ld1Bhc3N3b3JkPVwibmdNb2RlbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwubmV3UGFzc3dvcmRcIlxuICAgICAgICAoY2hhbmdlKT1cIm5ld1Bhc3N3b3JkQ2hhbmdlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm5ld1Bhc3N3b3JkQ29uZmlybS5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVwiXG4gICAgICAgIGM4eURlZmF1bHRWYWxpZGF0aW9uPVwicGFzc3dvcmRcIlxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIiduZXctcGFzc3dvcmQnXCJcbiAgICAgID48L2M4eS1wYXNzd29yZC1pbnB1dD5cbiAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cIm5ld0NvbmZpcm1QYXNzd29yZFwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBDb25maXJtIHBhc3N3b3JkXG4gICAgICA8L2xhYmVsPlxuICAgICAgPGM4eS1wYXNzd29yZC1pbnB1dFxuICAgICAgICBuYW1lPVwibmV3UGFzc3dvcmRDb25maXJtXCJcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgW2lkXT1cIiduZXdDb25maXJtUGFzc3dvcmQnXCJcbiAgICAgICAgI25ld1Bhc3N3b3JkQ29uZmlybT1cIm5nTW9kZWxcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkQ29uZmlybVwiXG4gICAgICAgIHBhc3N3b3JkQ29uZmlybT1cIm5ld1Bhc3N3b3JkXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInbmV3LXBhc3N3b3JkJ1wiXG4gICAgICA+PC9jOHktcGFzc3dvcmQtaW5wdXQ+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgIDxjOHktcGFzc3dvcmQtY2hlY2stbGlzdFxuICAgICAgW3Bhc3N3b3JkXT1cIm1vZGVsLm5ld1Bhc3N3b3JkXCJcbiAgICAgIFtzdHJlbmd0aEVuZm9yY2VkXT1cInBhc3N3b3JkRW5mb3JjZWRcIlxuICAgICAgKG9uUmVxdWlyZW1lbnRzRnVsZmlsbGVkKT1cInVwZGF0ZVZhbGlkaXR5KCRldmVudClcIlxuICAgID48L2M4eS1wYXNzd29yZC1jaGVjay1saXN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYXV0aGVudGljYXRpb24vbmV3LXBhc3N3b3JkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYXV0aGVudGljYXRpb24vbmV3LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsSUFDSSxpQkFBaUIsQ0FBQyxPQUFnQjtRQUNwQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztZQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDMUIsS0FBd0I7UUFEeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFwQnhCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFFekMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFrQnpCLCtCQUEwQixHQUFnQixHQUFHLEVBQUUsQ0FDN0MsSUFB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Z0JBU0YsaUJBQWlCO3NCQURwQixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXdQYXNzd29yZCB9IGZyb20gJy4vcGFzc3dvcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtLCBOZ01vZGVsLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25ldy1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV1cbn0pXG5leHBvcnQgY2xhc3MgTmV3UGFzc3dvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBwYXNzd29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmV3UGFzc3dvcmQgfCBvYmplY3Q+KCk7XG4gIEBJbnB1dCgpIHNob3dDaGFuZ2VQYXNzd29yZEJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlcXVpcmVTdHJvbmdQYXNzd29yZDogYm9vbGVhbjtcbiAgbW9kZWw6IGFueSA9IHt9O1xuICBjaGFuZ2VQYXNzd29yZCA9IGZhbHNlO1xuICBwYXNzd29yZEVuZm9yY2VkID0gZmFsc2U7XG4gIG1pbmxlbmd0aDogbnVtYmVyO1xuICByZXF1aXJlbWVudHNGdWxmaWxsZWQ6IGJvb2xlYW47XG4gIG5ld1Bhc3N3b3JkTW9kZWw6IE5nTW9kZWw7XG5cbiAgQFZpZXdDaGlsZCgnbmV3UGFzc3dvcmQnKVxuICBzZXQgX25ld1Bhc3N3b3JkTW9kZWwobmdNb2RlbDogTmdNb2RlbCkge1xuICAgIGlmIChuZ01vZGVsKSB7XG4gICAgICB0aGlzLm5ld1Bhc3N3b3JkTW9kZWwgPSBuZ01vZGVsO1xuICAgICAgbmdNb2RlbC5jb250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5wYXNzd29yZENoZWNrbGlzdFZhbGlkYXRvcik7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgcGFzc3dvcmRDaGVja2xpc3RWYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKCkgPT5cbiAgICB0aGlzLnJlcXVpcmVtZW50c0Z1bGZpbGxlZCA/IG51bGwgOiB7IHBhc3N3b3JkU3RyZW5ndGhDaGVja2xpc3Q6IHRydWUgfTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRQYXNzd29yZFN0cmVuZ3RoU2V0dGluZ3MoKTtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5nZXRHcmVlbk1pbkxlbmd0aCgpLnRoZW4odmFsdWUgPT4ge1xuICAgICAgdGhpcy5taW5sZW5ndGggPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5zaG93Q2hhbmdlUGFzc3dvcmRCdXR0b24pIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQgPSAhdGhpcy5zaG93Q2hhbmdlUGFzc3dvcmRCdXR0b247XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZXMucmVxdWlyZVN0cm9uZ1Bhc3N3b3JkPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLnJlcXVpcmVTdHJvbmdQYXNzd29yZD8uY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRQYXNzd29yZFN0cmVuZ3RoU2V0dGluZ3MoKTtcbiAgICB9XG4gIH1cblxuICBuZXdQYXNzd29yZENoYW5nZWQoKSB7XG4gICAgdGhpcy5wYXNzd29yZC5lbWl0KHtcbiAgICAgIHBhc3N3b3JkOiB0aGlzLm1vZGVsLm5ld1Bhc3N3b3JkLFxuICAgICAgcGFzc3dvcmRTdHJlbmd0aDogdGhpcy5tb2RlbC5zdHJlbmd0aFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlVmFsaWRpdHkocmVxdWlyZW1lbnRzRnVsZmlsbGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXF1aXJlbWVudHNGdWxmaWxsZWQgPSByZXF1aXJlbWVudHNGdWxmaWxsZWQ7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5uZXdQYXNzd29yZE1vZGVsLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIC8vIFRoZXJlIGFyZSB0d28gdmFsaWRhdG9ycyBjaGVja2luZyBwYXNzd29yZCB2YWxpZGl0eSwgYnV0IHdlIG9ubHkgd2FudCB0byBzaG93IG9uZSBvZiB0aGVzZSBlcnJvcnMgYXQgYSB0aW1lLFxuICAgIC8vIHdoZXJlIGNoZWNrbGlzdCB2YWxpZGF0b3IgdGFrZXMgcHJpb3JpdHkuXG4gICAgaWYgKCF0aGlzLnJlcXVpcmVtZW50c0Z1bGZpbGxlZCkge1xuICAgICAgZGVsZXRlIHRoaXMubmV3UGFzc3dvcmRNb2RlbC5jb250cm9sLmVycm9yc1sncGFzc3dvcmQnXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkUGFzc3dvcmRTdHJlbmd0aFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnJlcXVpcmVTdHJvbmdQYXNzd29yZCkge1xuICAgICAgdGhpcy5wYXNzd29yZEVuZm9yY2VkID0gdGhpcy5yZXF1aXJlU3Ryb25nUGFzc3dvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkU3RyZW5ndGhTZXR0aW5ncyA9IGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmdldFBhc3N3b3JkU3RyZW5ndGhFbmZvcmNlZCh7XG4gICAgICAgIHJlZnJlc2g6IHRydWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYXNzd29yZEVuZm9yY2VkID0gcGFzc3dvcmRTdHJlbmd0aFNldHRpbmdzO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUNoYW5nZVBhc3N3b3JkKCkge1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQgPSAhdGhpcy5jaGFuZ2VQYXNzd29yZDtcbiAgICBpZiAoIXRoaXMuY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIHRoaXMucGFzc3dvcmQuZW1pdCh7fSk7XG4gICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd0NoYW5nZVBhc3N3b3JkQnV0dG9uXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUNoYW5nZVBhc3N3b3JkKClcIlxuICAgIGRhdGEtY3k9XCJjOHktbmV3LXBhc3N3b3JkLS1jaGFuZ2UtYnV0dG9uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2hhbmdlUGFzc3dvcmRcIj5cbiAgICAgIHt7ICdDaGFuZ2UgcGFzc3dvcmQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoYW5nZVBhc3N3b3JkXCI+XG4gICAgICB7eyAnQ2FuY2VsIHBhc3N3b3JkIGNoYW5nZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInJvdyBjb250ZW50LWZsZXgtNTBcIlxuICAqbmdJZj1cImNoYW5nZVBhc3N3b3JkXCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGZvcj1cIm5ld1Bhc3N3b3JkXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIFBhc3N3b3JkXG4gICAgICA8L2xhYmVsPlxuICAgICAgPGM4eS1wYXNzd29yZC1pbnB1dFxuICAgICAgICBuYW1lPVwibmV3UGFzc3dvcmRcIlxuICAgICAgICByZXF1aXJlZFxuICAgICAgICBbaWRdPVwiJ25ld1Bhc3N3b3JkJ1wiXG4gICAgICAgICNuZXdQYXNzd29yZD1cIm5nTW9kZWxcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLm5ld1Bhc3N3b3JkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJuZXdQYXNzd29yZENoYW5nZWQoKVwiXG4gICAgICAgIChpbnB1dCk9XCJuZXdQYXNzd29yZENvbmZpcm0uY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcIlxuICAgICAgICBjOHlEZWZhdWx0VmFsaWRhdGlvbj1cInBhc3N3b3JkXCJcbiAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInbmV3LXBhc3N3b3JkJ1wiXG4gICAgICA+PC9jOHktcGFzc3dvcmQtaW5wdXQ+XG4gICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgIDxsYWJlbFxuICAgICAgICBmb3I9XCJuZXdDb25maXJtUGFzc3dvcmRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQ29uZmlybSBwYXNzd29yZFxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxjOHktcGFzc3dvcmQtaW5wdXRcbiAgICAgICAgbmFtZT1cIm5ld1Bhc3N3b3JkQ29uZmlybVwiXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIFtpZF09XCInbmV3Q29uZmlybVBhc3N3b3JkJ1wiXG4gICAgICAgICNuZXdQYXNzd29yZENvbmZpcm09XCJuZ01vZGVsXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5uZXdQYXNzd29yZENvbmZpcm1cIlxuICAgICAgICBwYXNzd29yZENvbmZpcm09XCJuZXdQYXNzd29yZFwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiJ25ldy1wYXNzd29yZCdcIlxuICAgICAgPjwvYzh5LXBhc3N3b3JkLWlucHV0PlxuICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICA8Yzh5LXBhc3N3b3JkLWNoZWNrLWxpc3RcbiAgICAgIFtwYXNzd29yZF09XCJtb2RlbC5uZXdQYXNzd29yZFwiXG4gICAgICBbc3RyZW5ndGhFbmZvcmNlZF09XCJwYXNzd29yZEVuZm9yY2VkXCJcbiAgICAgIChvblJlcXVpcmVtZW50c0Z1bGZpbGxlZCk9XCJ1cGRhdGVWYWxpZGl0eSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcGFzc3dvcmQtY2hlY2stbGlzdD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,9 +1,34 @@
1
+ import { inject } from '@angular/core';
1
2
  import { filter, tap } from 'rxjs';
3
+ import { GainsightService } from '../product-experience';
4
+ const PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD = {
5
+ EVENTS: {
6
+ INTERVAL_BASED_RELOAD: 'intervalBasedReload'
7
+ },
8
+ COMPONENTS: {
9
+ ALARM_WIDGET_ALARM_RELOAD: 'alarm-widget-alarms-reload',
10
+ DATAPOINTS_RELOAD: 'datapoints-reload'
11
+ },
12
+ ACTIONS: {
13
+ MANUALLY_CHANGED_COUNTDOWN_STATE: 'manuallyChangedCountdownState'
14
+ },
15
+ RESULT: {
16
+ MANUALLY_PAUSED_COUNTDOWN: 'manuallyPausedCountdown',
17
+ MANUALLY_RESUMED_COUNTDOWN: 'manuallyResumedCountdown'
18
+ }
19
+ };
20
+ export const WIDGET_TYPE_VALUES = {
21
+ ALARMS: 'alarms',
22
+ DATA_POINTS_TABLE: 'dataPointsTable'
23
+ };
2
24
  /**
3
25
  * Abstract class representing an interval reload functionality.
4
26
  * This class provides methods and properties for managing an interval-based reload mechanism.
5
27
  */
6
28
  export class IntervalBasedReload {
29
+ constructor() {
30
+ this.gainsightService = inject(GainsightService);
31
+ }
7
32
  /**
8
33
  * Stops the countdown and triggers a refresh action.
9
34
  * This function is responsible for halting the countdown interval component's operation.
@@ -60,20 +85,23 @@ export class IntervalBasedReload {
60
85
  * is set to false.
61
86
  *
62
87
  * @param $event - The MouseEvent that triggered this method.
88
+ * @param widgetType - The type of the widget that triggered the event
63
89
  */
64
- onToggleCountdownButtonState($event) {
90
+ onToggleCountdownButtonState($event, widgetType) {
65
91
  $event.preventDefault();
66
92
  this.isIntervalRefreshToggleOn = !this.isRefreshDisabled && !this.isIntervalRefreshToggleOn;
67
93
  this.updateCountdownButtonTooltipText();
68
94
  if (!this.isIntervalRefreshToggleOn) {
69
95
  this.disableCountdown();
70
96
  this.manuallyDisabledCountdown = true;
97
+ this.triggerGainsightEvent(widgetType, PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.ACTIONS.MANUALLY_CHANGED_COUNTDOWN_STATE, PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.RESULT.MANUALLY_PAUSED_COUNTDOWN);
71
98
  return;
72
99
  }
73
100
  const onRefreshToggleOn = this.isIntervalRefreshToggleOn && this.countdownSubscription.closed;
74
101
  if (onRefreshToggleOn) {
75
102
  this.enableCountdown();
76
103
  this.manuallyDisabledCountdown = false;
104
+ this.triggerGainsightEvent(widgetType, PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.ACTIONS.MANUALLY_CHANGED_COUNTDOWN_STATE, PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.RESULT.MANUALLY_RESUMED_COUNTDOWN);
77
105
  }
78
106
  }
79
107
  /**
@@ -106,5 +134,25 @@ export class IntervalBasedReload {
106
134
  this.countdownIntervalComponent?.stop();
107
135
  this.hideCountdown = true;
108
136
  }
137
+ triggerGainsightEvent(widgetType, action, result) {
138
+ if (widgetType) {
139
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.EVENTS.INTERVAL_BASED_RELOAD, {
140
+ action,
141
+ result,
142
+ component: this.determineComponentName(widgetType),
143
+ widget: widgetType
144
+ });
145
+ }
146
+ }
147
+ determineComponentName(widgetType) {
148
+ switch (widgetType) {
149
+ case WIDGET_TYPE_VALUES.ALARMS:
150
+ return PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.COMPONENTS.ALARM_WIDGET_ALARM_RELOAD;
151
+ case WIDGET_TYPE_VALUES.DATA_POINTS_TABLE:
152
+ return PRODUCT_EXPERIENCE_INTERVAL_BASED_RELOAD.COMPONENTS.DATAPOINTS_RELOAD;
153
+ default:
154
+ return '';
155
+ }
156
+ }
109
157
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtYmFzZWQtcmVsb2FkLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vaW50ZXJ2YWwtYmFzZWQtcmVsb2FkLmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBbUIsTUFBTSxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixtQkFBbUI7SUE4Q3ZDOzs7Ozs7T0FNRztJQUNILGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGVBQWU7UUFDYixzRUFBc0U7UUFDdEUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVyRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztZQUN2QyxPQUFPO1FBQ1QsQ0FBQztRQUVELGlGQUFpRjtRQUNqRixNQUFNLG1CQUFtQixHQUN2QixDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWhGLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQVFEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsNEJBQTRCLENBQUMsTUFBa0I7UUFDN0MsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztRQUM1RixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFFOUYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUzthQUN4QyxJQUFJLENBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDeEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFZRDs7Ozs7OztPQU9HO0lBQ0gsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0NBTUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQgfSBmcm9tICcuLi9jb3VudGRvd24taW50ZXJ2YWwnO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhbiBpbnRlcnZhbCByZWxvYWQgZnVuY3Rpb25hbGl0eS5cbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgbWFuYWdpbmcgYW4gaW50ZXJ2YWwtYmFzZWQgcmVsb2FkIG1lY2hhbmlzbS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVydmFsQmFzZWRSZWxvYWQge1xuICBhYnN0cmFjdCBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgc3Vic2NyaXB0aW9uIHRvIGEgY291bnRkb3duIG9ic2VydmFibGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY291bnRkb3duU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhdXRvLXJlZnJlc2ggaXMgZW5hYmxlZCBmb3IgdGhlIGRhdGFwb2ludHMgcmVsb2FkIGNvbXBvbmVudCB0aGF0IGlzIHNldCBpbiB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciByZWZyZXNoaW5nIHNob3VsZCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxuICAgKiBJdCdzICd0cnVlJyB3aGVuIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gdmlldyBhIG1lYXN1cmVtZW50LlxuICAgKi9cbiAgYWJzdHJhY3QgaXNSZWZyZXNoRGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IGlzTG9hZGluZyBzdGF0ZS4gQmFzZWQgb24gaXQgbmV4dCBjb3VudGRvd24gY3ljbGUgaXMgYmVpbmcgc3RhcnRlZC5cbiAgICovXG4gIGFic3RyYWN0IGlzTG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFsYXJtIGxpc3QgaXMgYmVpbmcgc2Nyb2xsZWQgb3Igbm90LlxuICAgKi9cbiAgYWJzdHJhY3QgaXNTY3JvbGxpbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IHJlZnJlc2ggaW50ZXJ2YWwgc2V0IGluIGEgd2lkZ2V0IGNvbmZpZy5cbiAgICovXG4gIGFic3RyYWN0IHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBjb3VudGRvd24gY3ljbGUgaGFzIGVuZGVkLlxuICAgKi9cbiAgYWJzdHJhY3Qgb25Db3VudGRvd25FbmRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGludGVydmFsIHJlZnJlc2ggdG9nZ2xlIGJ1dHRvbi5cbiAgICovXG4gIGFic3RyYWN0IGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT246IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgdG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3VudGRvd24gaGFzIGJlZW4gbWFudWFsbHkgZGlzYWJsZWQgYnkgdGhlIHVzZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93bjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjb3VudGRvd24gdGltZXIgY29tcG9uZW50IGluIHRoZSBjdXJyZW50IGNvbXBvbmVudCdzIFVJLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhpZGVDb3VudGRvd246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN0b3BzIHRoZSBjb3VudGRvd24gYW5kIHRyaWdnZXJzIGEgcmVmcmVzaCBhY3Rpb24uXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGhhbHRpbmcgdGhlIGNvdW50ZG93biBpbnRlcnZhbCBjb21wb25lbnQncyBvcGVyYXRpb24uXG4gICAqIEFmdGVyIHN0b3BwaW5nIHRoZSBjb3VudGRvd24sIGl0IGVtaXRzIGFuIGBvbkNvdW50ZG93bkVuZGVkYCBldmVudC5cbiAgICogVGhpcyBldmVudCBpcyB1c2VkIHRvIGluZm9ybSBleHRlcm5hbCBjb21wb25lbnRzIHRoYXQgdGhlIGNvdW50ZG93biBoYXMgZW5kZWQsXG4gICAqIHR5cGljYWxseSBwcm9tcHRpbmcgdGhlbSB0byByZWxvYWQgb3IgcmVmcmVzaCB0aGVpciBkYXRhLlxuICAgKi9cbiAgYXV0b1JlZnJlc2hMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gJiYgdGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBvbmVudC5zdG9wKCk7XG4gICAgfVxuICAgIHRoaXMub25Db3VudGRvd25FbmRlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlcyB0aGUgY291bnRkb3duIHRpbWVyJ3MgdmlzaWJpbGl0eSBhbmQgc3RhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBzY3JvbGxpbmcuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHRvZ2dsZXMgdGhlIGNvdW50ZG93biB0aW1lciBiYXNlZCBvbiB0aGUgdXNlcidzIHNjcm9sbGluZyBiZWhhdmlvci4gSXQgdXNlc1xuICAgKiB0aGUgYGRpc2FibGVDb3VudGRvd25gIGFuZCBgZW5hYmxlQ291bnRkb3duYCBtZXRob2RzIGZvciBoYW5kbGluZyB0aGUgY291bnRkb3duIHN0YXRlLlxuICAgKlxuICAgKiAtIElmIHRoZSB1c2VyIGlzIHNjcm9sbGluZyBkb3duIHdoaWxlIHRoZSBjb3VudGRvd24gaXMgdmlzaWJsZSAoYGlzU2Nyb2xsaW5nYCBpcyB0cnVlIGFuZFxuICAgKiAgIGBoaWRlQ291bnRkb3duYCBpcyBmYWxzZSksIGBkaXNhYmxlQ291bnRkb3duYCBpcyBjYWxsZWQgdG8gc3RvcCBhbmQgaGlkZSB0aGUgY291bnRkb3duLFxuICAgKiAgIGFuZCBgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbmAgaXMgc2V0IHRvIGZhbHNlLlxuICAgKlxuICAgKiAtIElmIHRoZSB1c2VyIGhhcyBzdG9wcGVkIHNjcm9sbGluZywgdGhlIGNvdW50ZG93biBzdWJzY3JpcHRpb24gaXMgY2xvc2VkLCBhbmQgdGhlIGNvdW50ZG93blxuICAgKiAgIGlzIGhpZGRlbiAoYCFpc1Njcm9sbGluZ2AsIGBjb3VudGRvd25TdWJzY3JpcHRpb24/LmNsb3NlZGAsIGBoaWRlQ291bnRkb3duYCksIGBlbmFibGVDb3VudGRvd25gXG4gICAqICAgaXMgY2FsbGVkIHRvIHNob3cgYW5kIHJlc3RhcnQgdGhlIGNvdW50ZG93biwgYW5kIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGhhbmRsZVNjcm9sbGluZygpOiB2b2lkIHtcbiAgICAvLyBDaGVja3MgaWYgdGhlIHVzZXIgaGFzIHNjcm9sbGVkIGRvd24gd2hpbGUgdGhlIGNvdW50ZG93biBpcyB2aXNpYmxlXG4gICAgY29uc3Qgb25Vc2VyU2Nyb2xsRG93bkhpZGUgPSB0aGlzLmlzU2Nyb2xsaW5nICYmICF0aGlzLmhpZGVDb3VudGRvd247XG5cbiAgICBpZiAob25Vc2VyU2Nyb2xsRG93bkhpZGUpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUNvdW50ZG93bigpO1xuICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2tzIGlmIHRoZSB1c2VyIGhhcyBzdG9wcGVkIHNjcm9sbGluZyBhbmQgdGhlIGNvdW50ZG93biBpcyBjdXJyZW50bHkgaGlkZGVuXG4gICAgY29uc3Qgb25Vc2VyU2Nyb2xsVG9wU2hvdyA9XG4gICAgICAhdGhpcy5pc1Njcm9sbGluZyAmJiB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbj8uY2xvc2VkICYmIHRoaXMuaGlkZUNvdW50ZG93bjtcblxuICAgIGlmIChvblVzZXJTY3JvbGxUb3BTaG93KSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSB0cnVlO1xuICAgICAgdGhpcy5lbmFibGVDb3VudGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCByZWxvYWQoKTogdm9pZDtcbiAgLyoqXG4gICAqIFdyYXBwZXIgbWV0aG9kIHdoZXJlIGl0J3MgbmFtZSBiZXR0ZXIgZGVzY3JpYmVzIGEgY29udGV4dCB3aGVyZSBpdCB3YXMgY2FsbGVkLlxuICAgKi9cbiAgYWJzdHJhY3QgY291bnRkb3duRW5kZWQoKTogdm9pZDtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdG9nZ2xlIHN0YXRlIG9mIHRoZSBjb3VudGRvd24gb24gYnV0dG9uIGNsaWNrLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgYnkgYSBtb3VzZSBldmVudCwgdHlwaWNhbGx5IGEgY2xpY2sgb24gdGhlIGNvdW50ZG93biB0b2dnbGUgYnV0dG9uLlxuICAgKiBJdCB0b2dnbGVzIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqXG4gICAqIC0gSWYgYGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25gIGlzIHNldCB0byBmYWxzZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb3VudGRvd24gc2hvdWxkIGJlIHN0b3BwZWQsXG4gICAqICAgYGRpc2FibGVDb3VudGRvd25gIGlzIGNhbGxlZCwgYW5kIGBtYW51YWxseURpc2FibGVkQ291bnRkb3duYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogLSBJZiBgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbmAgaXMgdHJ1ZSBhbmQgdGhlIGNvdW50ZG93biBzdWJzY3JpcHRpb24gaXMgY2xvc2VkLCBpbmRpY2F0aW5nIHRoYXRcbiAgICogICB0aGUgY291bnRkb3duIGNhbiBiZSBzdGFydGVkLCBgZW5hYmxlQ291bnRkb3duYCBpcyBjYWxsZWQsIGFuZCBgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93bmBcbiAgICogICBpcyBzZXQgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgTW91c2VFdmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZC5cbiAgICovXG4gIG9uVG9nZ2xlQ291bnRkb3duQnV0dG9uU3RhdGUoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gIXRoaXMuaXNSZWZyZXNoRGlzYWJsZWQgJiYgIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbjtcbiAgICB0aGlzLnVwZGF0ZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0KCk7XG5cbiAgICBpZiAoIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbikge1xuICAgICAgdGhpcy5kaXNhYmxlQ291bnRkb3duKCk7XG4gICAgICB0aGlzLm1hbnVhbGx5RGlzYWJsZWRDb3VudGRvd24gPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9uUmVmcmVzaFRvZ2dsZU9uID0gdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uICYmIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uLmNsb3NlZDtcblxuICAgIGlmIChvblJlZnJlc2hUb2dnbGVPbikge1xuICAgICAgdGhpcy5lbmFibGVDb3VudGRvd24oKTtcbiAgICAgIHRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGxpc3RlbnMgZm9yIGNoYW5nZXMgaW4gdGhlIGBpc0xvYWRpbmdgIG9ic2VydmFibGUsIGZpbHRlcmluZyBvdXQgYW55IHRydXRoeSB2YWx1ZXMuXG4gICAqIE9uY2UgYSBmYWxzeSB2YWx1ZSBpcyBkZXRlY3RlZCAoaW5kaWNhdGluZyB0aGF0IGxvYWRpbmcgaGFzIGZpbmlzaGVkKSwgaXQgYXR0ZW1wdHMgdG8gc3RhcnQgdGhlIGNvdW50ZG93bi5cbiAgICpcbiAgICogSU1QT1JUQU5UOiBJZiB0aGUgd2lkZ2V0J3MgY29uZmlndXJhdGlvbiAocmVmcmVzaEludGVydmFsLCBjaGVjayB0ZW1wbGF0ZSkgaXMgbm90IHNldCBwcmlvciB0byBleGVjdXRpbmcgY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0YXJ0LFxuICAgKiB0aGUgY291bnRkb3duIGludGVydmFsIHdpbGwgbm90IHN0YXJ0IVxuICAgKlxuICAgKiBAcGFyYW0gaW5qZWN0b3IgLSBUaGUgaW5qZWN0b3IgdXNlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXNcbiAgICogICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBgcnVuSW5JbmplY3Rpb25Db250ZXh0YC5cbiAgICovXG4gIHN0YXJ0Q291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uID0gdGhpcy5pc0xvYWRpbmdcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNMb2FkaW5nID0+ICFCb29sZWFuKGlzTG9hZGluZykpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0YXJ0KCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhbmQgc3RhcnRzIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1ha2VzIHRoZSBjb3VudGRvd24gdmlzaWJsZSAoYGhpZGVDb3VudGRvd25gIGlzIHNldCB0byBmYWxzZSkgYW5kIHRoZW5cbiAgICogc3RhcnRzIHRoZSBjb3VudGRvd24gcHJvY2Vzcy4gSXQgZW5zdXJlcyB0aGUgY291bnRkb3duIHRpbWVyIGlzIHVwZGF0ZWQgaW1tZWRpYXRlbHlcbiAgICogYnkgdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uIHdpdGggYGNkUmVmLmRldGVjdENoYW5nZXMoKWAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb3VudGRvd24uXG4gICAqIFRoaXMgbWV0aG9kIGVuY2Fwc3VsYXRlcyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaW5pdGlhdGUgdGhlIGNvdW50ZG93biB0aW1lci5cbiAgICovXG4gIGFic3RyYWN0IGVuYWJsZUNvdW50ZG93bigpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBhbmQgaGlkZXMgdGhlIGNvdW50ZG93biB0aW1lci5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc3RvcHMgdGhlIG9uZ29pbmcgY291bnRkb3duIHByb2Nlc3MgYnlcbiAgICogc3RvcHBpbmcgdGhlIGBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudGAgaWYgaXQgZXhpc3RzLiBJdCB0aGVuIGhpZGVzIHRoZSBjb3VudGRvd24gdGltZXJcbiAgICogYnkgc2V0dGluZyBgaGlkZUNvdW50ZG93bmAgdG8gdHJ1ZS4gVGhpcyBtZXRob2QgZW5jYXBzdWxhdGVzIHRoZSBsb2dpYyByZXF1aXJlZCB0byBoYWx0IGFuZFxuICAgKiBjb25jZWFsIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqL1xuICBkaXNhYmxlQ291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBvbmVudD8uc3RvcCgpO1xuICAgIHRoaXMuaGlkZUNvdW50ZG93biA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY291bnRkb3duIGJ1dHRvbiB0b29sdGlwIHRleHQgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBpbnRlcnZhbCByZWZyZXNoIHRvZ2dsZSBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCgpOiB2b2lkO1xufVxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtYmFzZWQtcmVsb2FkLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vaW50ZXJ2YWwtYmFzZWQtcmVsb2FkLmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBbUIsTUFBTSxFQUFnQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsTUFBTSx3Q0FBd0MsR0FBRztJQUMvQyxNQUFNLEVBQUU7UUFDTixxQkFBcUIsRUFBRSxxQkFBcUI7S0FDN0M7SUFDRCxVQUFVLEVBQUU7UUFDVix5QkFBeUIsRUFBRSw0QkFBNEI7UUFDdkQsaUJBQWlCLEVBQUUsbUJBQW1CO0tBQ3ZDO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsZ0NBQWdDLEVBQUUsK0JBQStCO0tBQ2xFO0lBQ0QsTUFBTSxFQUFFO1FBQ04seUJBQXlCLEVBQUUseUJBQXlCO1FBQ3BELDBCQUEwQixFQUFFLDBCQUEwQjtLQUN2RDtDQUNPLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixpQkFBaUIsRUFBRSxpQkFBaUI7Q0FDNUIsQ0FBQztBQUlYOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBQXpDO1FBQ1kscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUE4TnhELENBQUM7SUEvS0M7Ozs7OztPQU1HO0lBQ0gsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0Qs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aEMsd0NBQXdDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUNyRTtnQkFDRSxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xELE1BQU0sRUFBRSxVQUFVO2FBQ25CLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBc0I7UUFDbkQsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLGtCQUFrQixDQUFDLE1BQU07Z0JBQzVCLE9BQU8sd0NBQXdDLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO1lBQ3ZGLEtBQUssa0JBQWtCLENBQUMsaUJBQWlCO2dCQUN2QyxPQUFPLHdDQUF3QyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUMvRTtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIFN1YnNjcmlwdGlvbiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCB9IGZyb20gJy4uL2NvdW50ZG93bi1pbnRlcnZhbCc7XG5pbXBvcnQgeyBHYWluc2lnaHRTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvZHVjdC1leHBlcmllbmNlJztcblxuY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFX0lOVEVSVkFMX0JBU0VEX1JFTE9BRCA9IHtcbiAgRVZFTlRTOiB7XG4gICAgSU5URVJWQUxfQkFTRURfUkVMT0FEOiAnaW50ZXJ2YWxCYXNlZFJlbG9hZCdcbiAgfSxcbiAgQ09NUE9ORU5UUzoge1xuICAgIEFMQVJNX1dJREdFVF9BTEFSTV9SRUxPQUQ6ICdhbGFybS13aWRnZXQtYWxhcm1zLXJlbG9hZCcsXG4gICAgREFUQVBPSU5UU19SRUxPQUQ6ICdkYXRhcG9pbnRzLXJlbG9hZCdcbiAgfSxcbiAgQUNUSU9OUzoge1xuICAgIE1BTlVBTExZX0NIQU5HRURfQ09VTlRET1dOX1NUQVRFOiAnbWFudWFsbHlDaGFuZ2VkQ291bnRkb3duU3RhdGUnXG4gIH0sXG4gIFJFU1VMVDoge1xuICAgIE1BTlVBTExZX1BBVVNFRF9DT1VOVERPV046ICdtYW51YWxseVBhdXNlZENvdW50ZG93bicsXG4gICAgTUFOVUFMTFlfUkVTVU1FRF9DT1VOVERPV046ICdtYW51YWxseVJlc3VtZWRDb3VudGRvd24nXG4gIH1cbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfVFlQRV9WQUxVRVMgPSB7XG4gIEFMQVJNUzogJ2FsYXJtcycsXG4gIERBVEFfUE9JTlRTX1RBQkxFOiAnZGF0YVBvaW50c1RhYmxlJ1xufSBhcyBjb25zdDtcblxudHlwZSBXaWRnZXRUeXBlID0gKHR5cGVvZiBXSURHRVRfVFlQRV9WQUxVRVMpW2tleW9mIHR5cGVvZiBXSURHRVRfVFlQRV9WQUxVRVNdO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhbiBpbnRlcnZhbCByZWxvYWQgZnVuY3Rpb25hbGl0eS5cbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmb3IgbWFuYWdpbmcgYW4gaW50ZXJ2YWwtYmFzZWQgcmVsb2FkIG1lY2hhbmlzbS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVydmFsQmFzZWRSZWxvYWQge1xuICBwcm90ZWN0ZWQgZ2FpbnNpZ2h0U2VydmljZSA9IGluamVjdChHYWluc2lnaHRTZXJ2aWNlKTtcblxuICBhYnN0cmFjdCBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgc3Vic2NyaXB0aW9uIHRvIGEgY291bnRkb3duIG9ic2VydmFibGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY291bnRkb3duU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhdXRvLXJlZnJlc2ggaXMgZW5hYmxlZCBmb3IgdGhlIGRhdGFwb2ludHMgcmVsb2FkIGNvbXBvbmVudCB0aGF0IGlzIHNldCBpbiB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciByZWZyZXNoaW5nIHNob3VsZCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxuICAgKiBJdCdzICd0cnVlJyB3aGVuIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gdmlldyBhIG1lYXN1cmVtZW50LlxuICAgKi9cbiAgYWJzdHJhY3QgaXNSZWZyZXNoRGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IGlzTG9hZGluZyBzdGF0ZS4gQmFzZWQgb24gaXQgbmV4dCBjb3VudGRvd24gY3ljbGUgaXMgYmVpbmcgc3RhcnRlZC5cbiAgICovXG4gIGFic3RyYWN0IGlzTG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFsYXJtIGxpc3QgaXMgYmVpbmcgc2Nyb2xsZWQgb3Igbm90LlxuICAgKi9cbiAgYWJzdHJhY3QgaXNTY3JvbGxpbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXJyZW50IHJlZnJlc2ggaW50ZXJ2YWwgc2V0IGluIGEgd2lkZ2V0IGNvbmZpZy5cbiAgICovXG4gIGFic3RyYWN0IHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBjb3VudGRvd24gY3ljbGUgaGFzIGVuZGVkLlxuICAgKi9cbiAgYWJzdHJhY3Qgb25Db3VudGRvd25FbmRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGludGVydmFsIHJlZnJlc2ggdG9nZ2xlIGJ1dHRvbi5cbiAgICovXG4gIGFic3RyYWN0IGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT246IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgdG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb3VudGRvd24gaGFzIGJlZW4gbWFudWFsbHkgZGlzYWJsZWQgYnkgdGhlIHVzZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93bjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjb3VudGRvd24gdGltZXIgY29tcG9uZW50IGluIHRoZSBjdXJyZW50IGNvbXBvbmVudCdzIFVJLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhpZGVDb3VudGRvd246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN0b3BzIHRoZSBjb3VudGRvd24gYW5kIHRyaWdnZXJzIGEgcmVmcmVzaCBhY3Rpb24uXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGhhbHRpbmcgdGhlIGNvdW50ZG93biBpbnRlcnZhbCBjb21wb25lbnQncyBvcGVyYXRpb24uXG4gICAqIEFmdGVyIHN0b3BwaW5nIHRoZSBjb3VudGRvd24sIGl0IGVtaXRzIGFuIGBvbkNvdW50ZG93bkVuZGVkYCBldmVudC5cbiAgICogVGhpcyBldmVudCBpcyB1c2VkIHRvIGluZm9ybSBleHRlcm5hbCBjb21wb25lbnRzIHRoYXQgdGhlIGNvdW50ZG93biBoYXMgZW5kZWQsXG4gICAqIHR5cGljYWxseSBwcm9tcHRpbmcgdGhlbSB0byByZWxvYWQgb3IgcmVmcmVzaCB0aGVpciBkYXRhLlxuICAgKi9cbiAgYXV0b1JlZnJlc2hMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gJiYgdGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBvbmVudC5zdG9wKCk7XG4gICAgfVxuICAgIHRoaXMub25Db3VudGRvd25FbmRlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogTWFuYWdlcyB0aGUgY291bnRkb3duIHRpbWVyJ3MgdmlzaWJpbGl0eSBhbmQgc3RhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBzY3JvbGxpbmcuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHRvZ2dsZXMgdGhlIGNvdW50ZG93biB0aW1lciBiYXNlZCBvbiB0aGUgdXNlcidzIHNjcm9sbGluZyBiZWhhdmlvci4gSXQgdXNlc1xuICAgKiB0aGUgYGRpc2FibGVDb3VudGRvd25gIGFuZCBgZW5hYmxlQ291bnRkb3duYCBtZXRob2RzIGZvciBoYW5kbGluZyB0aGUgY291bnRkb3duIHN0YXRlLlxuICAgKlxuICAgKiAtIElmIHRoZSB1c2VyIGlzIHNjcm9sbGluZyBkb3duIHdoaWxlIHRoZSBjb3VudGRvd24gaXMgdmlzaWJsZSAoYGlzU2Nyb2xsaW5nYCBpcyB0cnVlIGFuZFxuICAgKiAgIGBoaWRlQ291bnRkb3duYCBpcyBmYWxzZSksIGBkaXNhYmxlQ291bnRkb3duYCBpcyBjYWxsZWQgdG8gc3RvcCBhbmQgaGlkZSB0aGUgY291bnRkb3duLFxuICAgKiAgIGFuZCBgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbmAgaXMgc2V0IHRvIGZhbHNlLlxuICAgKlxuICAgKiAtIElmIHRoZSB1c2VyIGhhcyBzdG9wcGVkIHNjcm9sbGluZywgdGhlIGNvdW50ZG93biBzdWJzY3JpcHRpb24gaXMgY2xvc2VkLCBhbmQgdGhlIGNvdW50ZG93blxuICAgKiAgIGlzIGhpZGRlbiAoYCFpc1Njcm9sbGluZ2AsIGBjb3VudGRvd25TdWJzY3JpcHRpb24/LmNsb3NlZGAsIGBoaWRlQ291bnRkb3duYCksIGBlbmFibGVDb3VudGRvd25gXG4gICAqICAgaXMgY2FsbGVkIHRvIHNob3cgYW5kIHJlc3RhcnQgdGhlIGNvdW50ZG93biwgYW5kIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGhhbmRsZVNjcm9sbGluZygpOiB2b2lkIHtcbiAgICAvLyBDaGVja3MgaWYgdGhlIHVzZXIgaGFzIHNjcm9sbGVkIGRvd24gd2hpbGUgdGhlIGNvdW50ZG93biBpcyB2aXNpYmxlXG4gICAgY29uc3Qgb25Vc2VyU2Nyb2xsRG93bkhpZGUgPSB0aGlzLmlzU2Nyb2xsaW5nICYmICF0aGlzLmhpZGVDb3VudGRvd247XG5cbiAgICBpZiAob25Vc2VyU2Nyb2xsRG93bkhpZGUpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUNvdW50ZG93bigpO1xuICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2tzIGlmIHRoZSB1c2VyIGhhcyBzdG9wcGVkIHNjcm9sbGluZyBhbmQgdGhlIGNvdW50ZG93biBpcyBjdXJyZW50bHkgaGlkZGVuXG4gICAgY29uc3Qgb25Vc2VyU2Nyb2xsVG9wU2hvdyA9XG4gICAgICAhdGhpcy5pc1Njcm9sbGluZyAmJiB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbj8uY2xvc2VkICYmIHRoaXMuaGlkZUNvdW50ZG93bjtcblxuICAgIGlmIChvblVzZXJTY3JvbGxUb3BTaG93KSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSB0cnVlO1xuICAgICAgdGhpcy5lbmFibGVDb3VudGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCByZWxvYWQoKTogdm9pZDtcbiAgLyoqXG4gICAqIFdyYXBwZXIgbWV0aG9kIHdoZXJlIGl0J3MgbmFtZSBiZXR0ZXIgZGVzY3JpYmVzIGEgY29udGV4dCB3aGVyZSBpdCB3YXMgY2FsbGVkLlxuICAgKi9cbiAgYWJzdHJhY3QgY291bnRkb3duRW5kZWQoKTogdm9pZDtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdG9nZ2xlIHN0YXRlIG9mIHRoZSBjb3VudGRvd24gb24gYnV0dG9uIGNsaWNrLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB0cmlnZ2VyZWQgYnkgYSBtb3VzZSBldmVudCwgdHlwaWNhbGx5IGEgY2xpY2sgb24gdGhlIGNvdW50ZG93biB0b2dnbGUgYnV0dG9uLlxuICAgKiBJdCB0b2dnbGVzIGBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqXG4gICAqIC0gSWYgYGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25gIGlzIHNldCB0byBmYWxzZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb3VudGRvd24gc2hvdWxkIGJlIHN0b3BwZWQsXG4gICAqICAgYGRpc2FibGVDb3VudGRvd25gIGlzIGNhbGxlZCwgYW5kIGBtYW51YWxseURpc2FibGVkQ291bnRkb3duYCBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogLSBJZiBgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbmAgaXMgdHJ1ZSBhbmQgdGhlIGNvdW50ZG93biBzdWJzY3JpcHRpb24gaXMgY2xvc2VkLCBpbmRpY2F0aW5nIHRoYXRcbiAgICogICB0aGUgY291bnRkb3duIGNhbiBiZSBzdGFydGVkLCBgZW5hYmxlQ291bnRkb3duYCBpcyBjYWxsZWQsIGFuZCBgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93bmBcbiAgICogICBpcyBzZXQgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgTW91c2VFdmVudCB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZC5cbiAgICogQHBhcmFtIHdpZGdldFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgd2lkZ2V0IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICAgKi9cbiAgb25Ub2dnbGVDb3VudGRvd25CdXR0b25TdGF0ZSgkZXZlbnQ6IE1vdXNlRXZlbnQsIHdpZGdldFR5cGU6IFdpZGdldFR5cGUpOiB2b2lkIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSAhdGhpcy5pc1JlZnJlc2hEaXNhYmxlZCAmJiAhdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uO1xuICAgIHRoaXMudXBkYXRlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQoKTtcblxuICAgIGlmICghdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLmRpc2FibGVDb3VudGRvd24oKTtcbiAgICAgIHRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biA9IHRydWU7XG5cbiAgICAgIHRoaXMudHJpZ2dlckdhaW5zaWdodEV2ZW50KFxuICAgICAgICB3aWRnZXRUeXBlLFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfSU5URVJWQUxfQkFTRURfUkVMT0FELkFDVElPTlMuTUFOVUFMTFlfQ0hBTkdFRF9DT1VOVERPV05fU1RBVEUsXG4gICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9JTlRFUlZBTF9CQVNFRF9SRUxPQUQuUkVTVUxULk1BTlVBTExZX1BBVVNFRF9DT1VOVERPV05cbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb25SZWZyZXNoVG9nZ2xlT24gPSB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gJiYgdGhpcy5jb3VudGRvd25TdWJzY3JpcHRpb24uY2xvc2VkO1xuXG4gICAgaWYgKG9uUmVmcmVzaFRvZ2dsZU9uKSB7XG4gICAgICB0aGlzLmVuYWJsZUNvdW50ZG93bigpO1xuICAgICAgdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duID0gZmFsc2U7XG5cbiAgICAgIHRoaXMudHJpZ2dlckdhaW5zaWdodEV2ZW50KFxuICAgICAgICB3aWRnZXRUeXBlLFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfSU5URVJWQUxfQkFTRURfUkVMT0FELkFDVElPTlMuTUFOVUFMTFlfQ0hBTkdFRF9DT1VOVERPV05fU1RBVEUsXG4gICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9JTlRFUlZBTF9CQVNFRF9SRUxPQUQuUkVTVUxULk1BTlVBTExZX1JFU1VNRURfQ09VTlRET1dOXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGxpc3RlbnMgZm9yIGNoYW5nZXMgaW4gdGhlIGBpc0xvYWRpbmdgIG9ic2VydmFibGUsIGZpbHRlcmluZyBvdXQgYW55IHRydXRoeSB2YWx1ZXMuXG4gICAqIE9uY2UgYSBmYWxzeSB2YWx1ZSBpcyBkZXRlY3RlZCAoaW5kaWNhdGluZyB0aGF0IGxvYWRpbmcgaGFzIGZpbmlzaGVkKSwgaXQgYXR0ZW1wdHMgdG8gc3RhcnQgdGhlIGNvdW50ZG93bi5cbiAgICpcbiAgICogSU1QT1JUQU5UOiBJZiB0aGUgd2lkZ2V0J3MgY29uZmlndXJhdGlvbiAocmVmcmVzaEludGVydmFsLCBjaGVjayB0ZW1wbGF0ZSkgaXMgbm90IHNldCBwcmlvciB0byBleGVjdXRpbmcgY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0YXJ0LFxuICAgKiB0aGUgY291bnRkb3duIGludGVydmFsIHdpbGwgbm90IHN0YXJ0IVxuICAgKlxuICAgKiBAcGFyYW0gaW5qZWN0b3IgLSBUaGUgaW5qZWN0b3IgdXNlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXNcbiAgICogICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBgcnVuSW5JbmplY3Rpb25Db250ZXh0YC5cbiAgICovXG4gIHN0YXJ0Q291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uID0gdGhpcy5pc0xvYWRpbmdcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNMb2FkaW5nID0+ICFCb29sZWFuKGlzTG9hZGluZykpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ/LnN0YXJ0KCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhbmQgc3RhcnRzIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1ha2VzIHRoZSBjb3VudGRvd24gdmlzaWJsZSAoYGhpZGVDb3VudGRvd25gIGlzIHNldCB0byBmYWxzZSkgYW5kIHRoZW5cbiAgICogc3RhcnRzIHRoZSBjb3VudGRvd24gcHJvY2Vzcy4gSXQgZW5zdXJlcyB0aGUgY291bnRkb3duIHRpbWVyIGlzIHVwZGF0ZWQgaW1tZWRpYXRlbHlcbiAgICogYnkgdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uIHdpdGggYGNkUmVmLmRldGVjdENoYW5nZXMoKWAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb3VudGRvd24uXG4gICAqIFRoaXMgbWV0aG9kIGVuY2Fwc3VsYXRlcyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaW5pdGlhdGUgdGhlIGNvdW50ZG93biB0aW1lci5cbiAgICovXG4gIGFic3RyYWN0IGVuYWJsZUNvdW50ZG93bigpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBhbmQgaGlkZXMgdGhlIGNvdW50ZG93biB0aW1lci5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc3RvcHMgdGhlIG9uZ29pbmcgY291bnRkb3duIHByb2Nlc3MgYnlcbiAgICogc3RvcHBpbmcgdGhlIGBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudGAgaWYgaXQgZXhpc3RzLiBJdCB0aGVuIGhpZGVzIHRoZSBjb3VudGRvd24gdGltZXJcbiAgICogYnkgc2V0dGluZyBgaGlkZUNvdW50ZG93bmAgdG8gdHJ1ZS4gVGhpcyBtZXRob2QgZW5jYXBzdWxhdGVzIHRoZSBsb2dpYyByZXF1aXJlZCB0byBoYWx0IGFuZFxuICAgKiBjb25jZWFsIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqL1xuICBkaXNhYmxlQ291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBvbmVudD8uc3RvcCgpO1xuICAgIHRoaXMuaGlkZUNvdW50ZG93biA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY291bnRkb3duIGJ1dHRvbiB0b29sdGlwIHRleHQgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBpbnRlcnZhbCByZWZyZXNoIHRvZ2dsZSBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCgpOiB2b2lkO1xuXG4gIHByaXZhdGUgdHJpZ2dlckdhaW5zaWdodEV2ZW50KHdpZGdldFR5cGU6IFdpZGdldFR5cGUsIGFjdGlvbjogc3RyaW5nLCByZXN1bHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh3aWRnZXRUeXBlKSB7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfSU5URVJWQUxfQkFTRURfUkVMT0FELkVWRU5UUy5JTlRFUlZBTF9CQVNFRF9SRUxPQUQsXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5kZXRlcm1pbmVDb21wb25lbnROYW1lKHdpZGdldFR5cGUpLFxuICAgICAgICAgIHdpZGdldDogd2lkZ2V0VHlwZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lQ29tcG9uZW50TmFtZSh3aWRnZXRUeXBlOiBXaWRnZXRUeXBlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgIGNhc2UgV0lER0VUX1RZUEVfVkFMVUVTLkFMQVJNUzpcbiAgICAgICAgcmV0dXJuIFBST0RVQ1RfRVhQRVJJRU5DRV9JTlRFUlZBTF9CQVNFRF9SRUxPQUQuQ09NUE9ORU5UUy5BTEFSTV9XSURHRVRfQUxBUk1fUkVMT0FEO1xuICAgICAgY2FzZSBXSURHRVRfVFlQRV9WQUxVRVMuREFUQV9QT0lOVFNfVEFCTEU6XG4gICAgICAgIHJldHVybiBQUk9EVUNUX0VYUEVSSUVOQ0VfSU5URVJWQUxfQkFTRURfUkVMT0FELkNPTVBPTkVOVFMuREFUQVBPSU5UU19SRUxPQUQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59XG4iXX0=