@odx/angular 12.14.1 → 12.15.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 (34) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/components/anchor-navigation/README.md +3 -0
  3. package/components/anchor-navigation/anchor-navigation.component.d.ts +31 -0
  4. package/components/anchor-navigation/anchor-navigation.module.d.ts +8 -0
  5. package/components/anchor-navigation/anchor-navigation.service.d.ts +43 -0
  6. package/components/anchor-navigation/components/anchor-navigation-item.component.d.ts +10 -0
  7. package/components/anchor-navigation/components/index.d.ts +1 -0
  8. package/components/anchor-navigation/index.d.ts +4 -0
  9. package/components/datepicker/lib/datepicker.component.d.ts +10 -0
  10. package/components/daterangepicker/lib/daterangepicker.component.d.ts +11 -0
  11. package/components/timepicker/lib/components/timepicker-option.component.d.ts +13 -1
  12. package/components/timepicker/lib/timepicker.component.d.ts +7 -0
  13. package/components/timepicker/lib/timepicker.service.d.ts +19 -11
  14. package/esm2022/components/anchor-navigation/anchor-navigation.component.mjs +60 -0
  15. package/esm2022/components/anchor-navigation/anchor-navigation.module.mjs +18 -0
  16. package/esm2022/components/anchor-navigation/anchor-navigation.service.mjs +119 -0
  17. package/esm2022/components/anchor-navigation/components/anchor-navigation-item.component.mjs +32 -0
  18. package/esm2022/components/anchor-navigation/components/index.mjs +2 -0
  19. package/esm2022/components/anchor-navigation/index.mjs +5 -0
  20. package/esm2022/components/anchor-navigation/odx-angular-components-anchor-navigation.mjs +5 -0
  21. package/esm2022/components/datepicker/lib/datepicker.component.mjs +19 -2
  22. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +27 -9
  23. package/esm2022/components/timepicker/lib/components/timepicker-option.component.mjs +14 -2
  24. package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -5
  25. package/esm2022/components/timepicker/lib/timepicker.service.mjs +35 -13
  26. package/fesm2022/odx-angular-components-anchor-navigation.mjs +220 -0
  27. package/fesm2022/odx-angular-components-anchor-navigation.mjs.map +1 -0
  28. package/fesm2022/odx-angular-components-datepicker.mjs +18 -1
  29. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  30. package/fesm2022/odx-angular-components-daterangepicker.mjs +27 -9
  31. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  32. package/fesm2022/odx-angular-components-timepicker.mjs +61 -17
  33. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  34. package/package.json +7 -1
@@ -116,15 +116,32 @@ let DatepickerComponent = class DatepickerComponent extends CustomFormControl {
116
116
  this.selectedChange.emit(value);
117
117
  this.dropdown.close();
118
118
  }
119
+ /**
120
+ * Resets the datepicker's value to null.
121
+ */
119
122
  reset() {
120
123
  this.updateInternalValue(null);
121
124
  }
125
+ /**
126
+ * @internal
127
+ * Writes a new value to the element.
128
+ * Part of the ControlValueAccessor interface.
129
+ * @param {Date | null} value - The new value.
130
+ */
131
+ writeValue(value) {
132
+ super.writeValue(value);
133
+ this.updateDateField(value);
134
+ }
122
135
  updateInternalValue(value) {
123
136
  this.updateValue(value);
124
137
  this.updateDateField(value);
125
138
  }
126
139
  handleDateFieldChanges() {
127
- this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.updateValue(this.dateField?.valueAsDate ?? null));
140
+ this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => {
141
+ if (!this.dateField?.valueAsDate)
142
+ return;
143
+ this.updateValue(this.dateField?.valueAsDate ?? null);
144
+ });
128
145
  }
129
146
  handleDateFieldFocus() {
130
147
  this.dateField?.focused.pipe(this.takeUntilDestroyed()).subscribe((isFocused) => {
@@ -182,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
199
  type: HostListener,
183
200
  args: ['keydown.alt.ArrowDown', ['$event']]
184
201
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUs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OytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxtQkFFN0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt3REF1QzlCLFFBQVE7c0JBRGQsS0FBSztnQkFXQyxPQUFPO3NCQURiLEtBQUs7Z0JBV0MsT0FBTztzQkFEYixLQUFLO2dCQVVDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFpQkMsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFNBQVM7c0JBRGYsWUFBWTt1QkFBQywrQkFBK0I7Z0JBMERuQyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgRGF0ZUZpbHRlciB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlLCBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBpbmplY3RFbGVtZW50LCBQb3NpdGlvbiwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBnZXREYXRlcGlja2VySW5wdXRGb3JtYXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZGF0ZXBpY2tlciBjb21wb25lbnQgZm9yIHNlbGVjdGluZyBhIGRhdGUuXG4gKiBFeHRlbmRzIHRoZSBgQ3VzdG9tRm9ybUNvbnRyb2xgIGNsYXNzIGFuZCBpbXBsZW1lbnRzIHRoZSBgQWZ0ZXJWaWV3SW5pdGAgaW50ZXJmYWNlLlxuICpcbiAqIEBzZWUge0N1c3RvbUZvcm1Db250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdkYXRlcGlja2VyJylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC1kYXRlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ExMXlNb2R1bGUsIEFjdGlvbkdyb3VwQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIENhbGVuZGFyQ29tcG9uZW50LCBEcm9wZG93bk1vZHVsZSwgSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxEYXRlIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdERhdGVwaWNrZXJDb25maWcoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZGF0ZXBpY2tlciBpcyBjdXJyZW50bHkgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duLmlzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlfVxuICAgKi9cbiAgcHVibGljIHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAvKipcbiAgICogVGhlIGZpbHRlciBmdW5jdGlvbiB1c2VkIHRvIGRldGVybWluZSBpZiBhIGRhdGUgc2hvdWxkIGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGluIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBzZXQgdG8gYG51bGxgLCBubyBmaWx0ZXJpbmcgd2lsbCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZUZpbHRlciB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogLy8gRXhjbHVkZXMgbW9uZGF5cyBmcm9tIHRoZSBkYXRlcGlja2VyLlxuICAgKiBjb25zdCBmaWx0ZXJGbjogRGF0ZUZpbHRlciA9IChkYXRlKSA9PiBkYXRlLmdldERheSgpICE9PSAxO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJGbjogRGF0ZUZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBzZWxlY3RhYmxlIGRhdGUgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBzZXQgdG8gbnVsbCwgdGhlcmUgaXMgbm8gbWluaW11bSBkYXRlIHJlc3RyaWN0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSBmb3IgdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBudWxsLCB0aGVyZSBpcyBubyBtYXhpbXVtIGRhdGUgcmVzdHJpY3Rpb24uXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biByZWxhdGl2ZSB0byB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtQb3NpdGlvbn1cbiAgICogQGRlZmF1bHQgUG9zaXRpb24uQk9UVE9NXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCB3aWxsIGRpc3BsYXkgYSByZXNldCBidXR0b24uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGNsZWFyYWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGRhdGUgd2hlbiBpdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZW1pdHMge0RhdGV9XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gZGlyZWN0aXZlIHVzZWQgaW4gdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7RHJvcGRvd25EaXJlY3RpdmV9XG4gICAqL1xuICBAVmlld0NoaWxkKERyb3Bkb3duRGlyZWN0aXZlKVxuICBwdWJsaWMgZHJvcGRvd24hOiBEcm9wZG93bkRpcmVjdGl2ZTtcblxuICAvKipcbiAgICogVGhlIGRyb3Bkb3duIHRyaWdnZXIgZWxlbWVudCB1c2VkIGluIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGRyb3Bkb3duVHJpZ2dlckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogVGhlIGRhdGUgZmllbGQgaW5wdXQgY29udHJvbCBkaXJlY3RpdmUgdXNlZCBpbiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlKVxuICBwdWJsaWMgZGF0ZUZpZWxkPzogRGF0ZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihudWxsKTtcbiAgICBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRGb2N1cygpO1xuXG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUpIHJldHVybjtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZUZpZWxkKHN0YXJ0T2ZEYXkodGhpcy52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBudWxsfSB2YWx1ZSAtIFRoZSBkYXRlIHZhbHVlIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVEYXRlRmllbGQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LnZhbHVlQ2hhbmdlJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LmZvY3VzZWQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGlzRm9jdXNlZCkgPT4ge1xuICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb3BlbkRhdGVwaWNrZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmlzUmVhZG9ubHkgfHwgdGhpcy5pc0Rpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9wZW4oZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZUZpZWxkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gZ2V0RGF0ZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmRhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W29keERhdGVwaWNrZXJDb250cm9sXVwiIC8+XG5cbjxvZHgtYWN0aW9uLWdyb3VwIGNsYXNzPVwib2R4LWRhdGVwaWNrZXJfX3RyaWdnZXItd3JhcHBlclwiPlxuICBAaWYgKGNsZWFyYWJsZSgpICYmIHZhbHVlKSB7XG4gICAgPGJ1dHRvbiBvZHhCdXR0b24gY2xhc3M9XCJvZHgtZGF0ZXBpY2tlcl9fY2xlYXJcIiAoY2xpY2spPVwicmVzZXQoKVwiIHNpemU9XCJzbWFsbFwiIGFyaWEtbGFiZWw9XCJSZXNldCB0aW1lXCI+XG4gICAgICA8b2R4LWljb24gbmFtZT1cImNsb3NlXCIgaWNvblNldD1cImNvcmVcIiAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG4gIDxidXR0b25cbiAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgb2R4QnV0dG9uXG4gICAgc2l6ZT1cInNtYWxsXCJcbiAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgIGNsYXNzPVwib2R4LWRhdGVwaWNrZXJfX3RyaWdnZXJcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIiAvPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keEJ1dHRvbl1cIiBuZ1Byb2plY3RBcz1cIltvZHhCdXR0b25dXCIgLz5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInZhbHVlIHx8IHRvZGF5XCJcbiAgICBbZmlsdGVyRm5dPVwiZmlsdGVyRm5cIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIGNka1RyYXBGb2N1c1xuICAgIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlXG4gICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUs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QiwrQkFBK0IsMEZBaEJsQyxpQkFBaUIsdUlBUVUsVUFBVSxrRUM5SWxELG9zQ0FxQ0EsMkNER1ksVUFBVSwwTEFBRSxvQkFBb0Isa0ZBQUUsZUFBZSx5R0FBRSxpQkFBaUIscU1BQUUsY0FBYywyZkFBRSxhQUFhOztBQUtsRyxtQkFBbUI7SUFUL0IsWUFBWSxDQUFDLFlBQVksQ0FBQzs7R0FTZCxtQkFBbUIsQ0FrTS9COzs0RkFsTVksbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxtQkFFN0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt3REF1QzlCLFFBQVE7c0JBRGQsS0FBSztnQkFXQyxPQUFPO3NCQURiLEtBQUs7Z0JBV0MsT0FBTztzQkFEYixLQUFLO2dCQVVDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFpQkMsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFNBQVM7c0JBRGYsWUFBWTt1QkFBQywrQkFBK0I7Z0JBMkVuQyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgRGF0ZUZpbHRlciB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlLCBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBpbmplY3RFbGVtZW50LCBQb3NpdGlvbiwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBnZXREYXRlcGlja2VySW5wdXRGb3JtYXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZGF0ZXBpY2tlciBjb21wb25lbnQgZm9yIHNlbGVjdGluZyBhIGRhdGUuXG4gKiBFeHRlbmRzIHRoZSBgQ3VzdG9tRm9ybUNvbnRyb2xgIGNsYXNzIGFuZCBpbXBsZW1lbnRzIHRoZSBgQWZ0ZXJWaWV3SW5pdGAgaW50ZXJmYWNlLlxuICpcbiAqIEBzZWUge0N1c3RvbUZvcm1Db250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdkYXRlcGlja2VyJylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC1kYXRlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ExMXlNb2R1bGUsIEFjdGlvbkdyb3VwQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIENhbGVuZGFyQ29tcG9uZW50LCBEcm9wZG93bk1vZHVsZSwgSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxEYXRlIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdERhdGVwaWNrZXJDb25maWcoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZGF0ZXBpY2tlciBpcyBjdXJyZW50bHkgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duLmlzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlfVxuICAgKi9cbiAgcHVibGljIHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAvKipcbiAgICogVGhlIGZpbHRlciBmdW5jdGlvbiB1c2VkIHRvIGRldGVybWluZSBpZiBhIGRhdGUgc2hvdWxkIGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGluIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBzZXQgdG8gYG51bGxgLCBubyBmaWx0ZXJpbmcgd2lsbCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZUZpbHRlciB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogLy8gRXhjbHVkZXMgbW9uZGF5cyBmcm9tIHRoZSBkYXRlcGlja2VyLlxuICAgKiBjb25zdCBmaWx0ZXJGbjogRGF0ZUZpbHRlciA9IChkYXRlKSA9PiBkYXRlLmdldERheSgpICE9PSAxO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJGbjogRGF0ZUZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBzZWxlY3RhYmxlIGRhdGUgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBzZXQgdG8gbnVsbCwgdGhlcmUgaXMgbm8gbWluaW11bSBkYXRlIHJlc3RyaWN0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSBmb3IgdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBudWxsLCB0aGVyZSBpcyBubyBtYXhpbXVtIGRhdGUgcmVzdHJpY3Rpb24uXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biByZWxhdGl2ZSB0byB0aGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtQb3NpdGlvbn1cbiAgICogQGRlZmF1bHQgUG9zaXRpb24uQk9UVE9NXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCB3aWxsIGRpc3BsYXkgYSByZXNldCBidXR0b24uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGNsZWFyYWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGRhdGUgd2hlbiBpdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZW1pdHMge0RhdGV9XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gZGlyZWN0aXZlIHVzZWQgaW4gdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7RHJvcGRvd25EaXJlY3RpdmV9XG4gICAqL1xuICBAVmlld0NoaWxkKERyb3Bkb3duRGlyZWN0aXZlKVxuICBwdWJsaWMgZHJvcGRvd24hOiBEcm9wZG93bkRpcmVjdGl2ZTtcblxuICAvKipcbiAgICogVGhlIGRyb3Bkb3duIHRyaWdnZXIgZWxlbWVudCB1c2VkIGluIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGRyb3Bkb3duVHJpZ2dlckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogVGhlIGRhdGUgZmllbGQgaW5wdXQgY29udHJvbCBkaXJlY3RpdmUgdXNlZCBpbiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlKVxuICBwdWJsaWMgZGF0ZUZpZWxkPzogRGF0ZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihudWxsKTtcbiAgICBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRGb2N1cygpO1xuXG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUpIHJldHVybjtcbiAgICAgIHRoaXMudXBkYXRlRGF0ZUZpZWxkKHN0YXJ0T2ZEYXkodGhpcy52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBudWxsfSB2YWx1ZSAtIFRoZSBkYXRlIHZhbHVlIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBkYXRlcGlja2VyJ3MgdmFsdWUgdG8gbnVsbC5cbiAgICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFsdWUobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICogUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0ge0RhdGUgfCBudWxsfSB2YWx1ZSAtIFRoZSBuZXcgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZURhdGVGaWVsZCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlSW50ZXJuYWxWYWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZURhdGVGaWVsZCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlRmllbGQ/LnZhbHVlQXNEYXRlKSByZXR1cm47XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRlRmllbGRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvcGVuRGF0ZXBpY2tlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNSZWFkb25seSB8fCB0aGlzLmlzRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuZHJvcGRvd24ub3BlbihldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGVGaWVsZChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRlRmllbGQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBnZXREYXRlcGlja2VySW5wdXRGb3JtYXQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZGF0ZUZpZWxkLm5hdGl2ZUVsZW1lbnRWYWx1ZSA9IGRhdGUgPyBmb3JtYXQoZGF0ZSwgZGF0ZUZvcm1hdCkgOiAnJztcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRbb2R4RGF0ZXBpY2tlckNvbnRyb2xdXCIgLz5cblxuPG9keC1hY3Rpb24tZ3JvdXAgY2xhc3M9XCJvZHgtZGF0ZXBpY2tlcl9fdHJpZ2dlci13cmFwcGVyXCI+XG4gIEBpZiAoY2xlYXJhYmxlKCkgJiYgdmFsdWUpIHtcbiAgICA8YnV0dG9uIG9keEJ1dHRvbiBjbGFzcz1cIm9keC1kYXRlcGlja2VyX19jbGVhclwiIChjbGljayk9XCJyZXNldCgpXCIgc2l6ZT1cInNtYWxsXCIgYXJpYS1sYWJlbD1cIlJlc2V0IHRpbWVcIj5cbiAgICAgIDxvZHgtaWNvbiBuYW1lPVwiY2xvc2VcIiBpY29uU2V0PVwiY29yZVwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPGJ1dHRvblxuICAgICNkcm9wZG93blRyaWdnZXJcbiAgICBvZHhCdXR0b25cbiAgICBzaXplPVwic21hbGxcIlxuICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgY2xhc3M9XCJvZHgtZGF0ZXBpY2tlcl9fdHJpZ2dlclwiXG4gICAgW29keERyb3Bkb3duXT1cImNhbGVuZGFyT3ZlcmxheVwiXG4gICAgW29keERyb3Bkb3duT3B0aW9uc109XCJ7IHBvc2l0aW9uOiBkcm9wZG93blBvc2l0aW9uIH1cIlxuICAgIFtvZHhEcm9wZG93blRyaWdnZXJFbGVtZW50XT1cImRyb3Bkb3duVHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gICAgW29keERyb3Bkb3duSG9zdF09XCJudWxsXCJcbiAgICBbb2R4RHJvcGRvd25SZWZlcmVuY2VFbGVtZW50XT1cImVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gICAgKG9keERyb3Bkb3duQmVmb3JlQ2xvc2UpPVwib25Ub3VjaGVkKClcIlxuICA+XG4gICAgPG9keC1pY29uIG5hbWU9XCJjYWxlbmRhclwiIC8+XG4gIDwvYnV0dG9uPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbb2R4QnV0dG9uXVwiIG5nUHJvamVjdEFzPVwiW29keEJ1dHRvbl1cIiAvPlxuPC9vZHgtYWN0aW9uLWdyb3VwPlxuXG48bmctdGVtcGxhdGUgI2NhbGVuZGFyT3ZlcmxheT5cbiAgPG9keC1jYWxlbmRhclxuICAgIFtzZWxlY3RlZERhdGVdPVwidmFsdWUgfHwgdG9kYXlcIlxuICAgIFtmaWx0ZXJGbl09XCJmaWx0ZXJGblwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgY2RrVHJhcEZvY3VzXG4gICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVcbiAgICAoc2VsZWN0ZWREYXRlQ2hhbmdlKT1cInNlbGVjdERhdGUoJGV2ZW50KVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -117,12 +117,7 @@ let DaterangepickerComponent = class DaterangepickerComponent extends CustomForm
117
117
  this.updateWidth(this.endDateField, this.endDateMirror);
118
118
  this.handleDateFieldChanges();
119
119
  this.handleDateFieldFocus();
120
- deferFn(() => {
121
- if (!this.value || !this.value.start || !this.value.end)
122
- return;
123
- this.updateStartDateField(startOfDay(this.value.start));
124
- this.updateEndDateField(startOfDay(this.value.end));
125
- });
120
+ this.updateInputFields();
126
121
  }
127
122
  /**
128
123
  * Selects a date range, updates the form value, and emits the selected range.
@@ -136,9 +131,22 @@ let DaterangepickerComponent = class DaterangepickerComponent extends CustomForm
136
131
  this.selectedChange.emit(value);
137
132
  this.dropdown.close();
138
133
  }
134
+ /**
135
+ * Resets the daterangepicker's value to an empty date range (both start and end as null).
136
+ */
139
137
  reset() {
140
138
  this.updateInternalValue({ start: null, end: null });
141
139
  }
140
+ /**
141
+ * @internal
142
+ * Writes a new value to the element.
143
+ * Part of the ControlValueAccessor interface.
144
+ * @param {DateRange | null} value - The new date range value.
145
+ */
146
+ writeValue(value) {
147
+ super.writeValue(value);
148
+ this.updateInputFields();
149
+ }
142
150
  isEmpty(value) {
143
151
  return !value || !value.start || !value.end;
144
152
  }
@@ -149,12 +157,12 @@ let DaterangepickerComponent = class DaterangepickerComponent extends CustomForm
149
157
  }
150
158
  handleDateFieldChanges() {
151
159
  this.startDateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((value) => {
152
- this.updateValue({ start: this.startDateField?.valueAsDate ?? null, end: this.endDateField?.valueAsDate ?? null });
153
160
  this.updateWidth(this.startDateField, this.startDateMirror, value);
161
+ this.updateValue({ start: this.startDateField?.valueAsDate ?? null, end: this.endDateField?.valueAsDate ?? null });
154
162
  });
155
163
  this.endDateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((value) => {
156
- this.updateValue({ start: this.startDateField?.valueAsDate ?? null, end: this.endDateField?.valueAsDate ?? null });
157
164
  this.updateWidth(this.endDateField, this.endDateMirror, value);
165
+ this.updateValue({ start: this.startDateField?.valueAsDate ?? null, end: this.endDateField?.valueAsDate ?? null });
158
166
  });
159
167
  }
160
168
  updateWidth(target, source, value = '') {
@@ -202,6 +210,16 @@ let DaterangepickerComponent = class DaterangepickerComponent extends CustomForm
202
210
  this.endDateField.nativeElementValue = date ? format(date, dateFormat) : '';
203
211
  this.updateWidth(this.endDateField, this.endDateMirror, date ? format(date, dateFormat) : '');
204
212
  }
213
+ updateInputFields() {
214
+ deferFn(() => {
215
+ if (this.value === null)
216
+ return this.reset();
217
+ if (!this.value || !this.value.start || !this.value.end)
218
+ return;
219
+ this.updateStartDateField(startOfDay(this.value.start));
220
+ this.updateEndDateField(startOfDay(this.value.end));
221
+ });
222
+ }
205
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DaterangepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
206
224
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DaterangepickerComponent, isStandalone: true, selector: "odx-daterangepicker", inputs: { filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: false, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: false, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: false, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: false, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "keydown.alt.ArrowDown": "openDaterangepicker($event)" } }, providers: [
207
225
  provideCalendarConfig({
@@ -252,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
252
270
  type: HostListener,
253
271
  args: ['keydown.alt.ArrowDown', ['$event']]
254
272
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlci9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXIvc3JjL2xpYi9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUF5QixxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7O0FBRXhEOzs7Ozs7O0dBT0c7QUFnQkksSUFBTSx3QkFBd0IsR0FBOUIsTUFBTSx3QkFBeUIsU0FBUSxpQkFBbUM7SUFPL0U7Ozs7T0FJRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUEyR0Q7Ozs7T0FJRztJQUNILElBQVcsY0FBYztRQUN2QixNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDOUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzlDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDtRQUNFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQTdJSyx1QkFBa0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV0QyxXQUFNLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztRQUUxQyxZQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFXMUM7Ozs7V0FJRztRQUNJLFVBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRTFCOzs7Ozs7Ozs7OztXQVdHO1FBRUksYUFBUSxHQUFzQixJQUFJLENBQUM7UUFFMUM7Ozs7O1dBS0c7UUFFSSxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUVuQzs7Ozs7V0FLRztRQUVJLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBRW5DOzs7OztXQUtHO1FBRUkscUJBQWdCLEdBQWEsUUFBUSxDQUFDO1FBRTdDOzs7OztXQUtHO1FBQ0ksY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRWpFOzs7O1dBSUc7UUFFSSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFnRXBELHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ2hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsS0FBdUI7UUFDNUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztZQUFFLE9BQU87UUFFakQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxPQUFPLENBQUMsS0FBdUI7UUFDdkMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzlDLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxLQUFnQjtRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVMsc0JBQXNCO1FBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVGLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25ILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDMUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsV0FBVyxDQUFDLE1BQXdELEVBQUUsTUFBK0IsRUFBRSxLQUFLLEdBQUcsRUFBRTtRQUN6SCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLE1BQU0sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO1FBQ3hFLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILENBQUM7SUFDSCxDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ25GLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2pGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHUyxtQkFBbUIsQ0FBQyxLQUFvQjtRQUNoRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUUvQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sb0JBQW9CLENBQUMsSUFBaUI7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUVqQyxNQUFNLFVBQVUsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFpQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRS9CLE1BQU0sVUFBVSxHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQzsrR0F4UFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsNDJCQVB4QjtZQUNULHFCQUFxQixDQUFDO2dCQUNwQixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixhQUFhLEVBQUUscUJBQXFCLENBQUMsU0FBUzthQUMvQyxDQUFDO1NBQ0gscURBd0dnQixvQ0FBb0MsdUVBaEIxQyxpQkFBaUIsdUlBUVUsVUFBVSwySEFnQlYsVUFBVSx1SEFRWixVQUFVLGtFQzVLaEQsb2tEQTBDQSwyQ0RDWSxVQUFVLDBMQUFFLG9CQUFvQixrRkFBRSxlQUFlLHlHQUFFLGlCQUFpQixxTUFBRSxjQUFjLDJmQUFFLGFBQWE7O0FBV2xHLHdCQUF3QjtJQWZwQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7O0dBZW5CLHdCQUF3QixDQXlQcEM7OzRGQXpQWSx3QkFBd0I7a0JBZHBDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxtQkFFN0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVCxxQkFBcUIsQ0FBQzs0QkFDcEIsbUJBQW1CLEVBQUUsS0FBSzs0QkFDMUIsYUFBYSxFQUFFLHFCQUFxQixDQUFDLFNBQVM7eUJBQy9DLENBQUM7cUJBQ0g7d0RBc0NNLFFBQVE7c0JBRGQsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBVUMsT0FBTztzQkFEYixLQUFLO2dCQVVDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFpQkMsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFVBQVU7c0JBRGhCLGVBQWU7dUJBQUMsb0NBQW9DO2dCQVM5QyxlQUFlO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVN6RCxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0R3BELG1CQUFtQjtzQkFENUIsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLCBEYXRlRmlsdGVyLCBEYXRlUmFuZ2UsIHByb3ZpZGVDYWxlbmRhckNvbmZpZyB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlLCBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBpbmplY3RFbGVtZW50LCBQb3NpdGlvbiwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZXJhbmdlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9kYXRlcmFuZ2VwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBzZWxlY3RpbmcgYSBkYXRlIHJhbmdlLCBpbnRlZ3JhdGVkIHdpdGggZHJvcGRvd25zIGFuZCBpbnB1dCBmaWVsZHMgZm9yIHN0YXJ0IGFuZCBlbmQgZGF0ZXMuXG4gKiBJdCBzdXBwb3J0cyBjdXN0b20gY29uZmlndXJhdGlvbnMgZm9yIG1pbmltdW0sIG1heGltdW0gZGF0ZXMsIGFuZCBkYXRlIGZpbHRlcnMuIFRoZSBjb21wb25lbnQgYWxzbyBoYW5kbGVzXG4gKiB0aGUgZHJvcGRvd24ncyBiZWhhdmlvciBmb3IgZGF0ZSBzZWxlY3Rpb24gYW5kIGFwcGxpZXMgZGF0ZSBmb3JtYXRzIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gY29uZmlndXJhdGlvbi5cbiAqIFRoZSBjb21wb25lbnQgZXh0ZW5kcyB0aGUgYEN1c3RvbUZvcm1Db250cm9sYCBjbGFzcyB0byBwcm92aWRlIGZvcm0gY29udHJvbCBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBzZWUge0N1c3RvbUZvcm1Db250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdkYXRlcmFuZ2VwaWNrZXInKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2R4LWRhdGVyYW5nZXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBMTF5TW9kdWxlLCBBY3Rpb25Hcm91cENvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBDYWxlbmRhckNvbXBvbmVudCwgRHJvcGRvd25Nb2R1bGUsIEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVDYWxlbmRhckNvbmZpZyh7XG4gICAgICBkaXNwbGF5QWRqYWNlbnREYXlzOiBmYWxzZSxcbiAgICAgIHNlbGVjdGlvbk1vZGU6IENhbGVuZGFyU2VsZWN0aW9uTW9kZS5EYXRlUmFuZ2UsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPERhdGVSYW5nZSB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSBpbmplY3REYXRlcmFuZ2VwaWNrZXJDb25maWcoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRyb3Bkb3duIHBhcnQgb2YgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGlzIG9wZW4uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kcm9wZG93bi5pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0b2RheSdzIGRhdGUsIHVzZWQgZm9yIGRlZmF1bHQgc2VsZWN0aW9ucyBhbmQgdmFsaWRhdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlfVxuICAgKi9cbiAgcHVibGljIHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYWRkaXRpb25hbCBydWxlcyBmb3IgZGlzYWJsZWQgZGF0ZXMgd2l0aGluIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlRmlsdGVyIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBEaXNhYmxlcyBhbGwgV2VkbmVzZGF5cyBpbiB0aGUgcGlja2VyLlxuICAgKiBjb25zdCBmaWx0ZXJGbjogRGF0ZUZpbHRlciA9IChkYXRlOiBEYXRlKSA9PiBkYXRlLmdldERheSgpICE9PSAzO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJGbjogRGF0ZUZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgZWFybGllc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biByZWxhdGl2ZSB0byB0aGUgaW5wdXQgZmllbGRzLlxuICAgKlxuICAgKiBAdHlwZSB7UG9zaXRpb259XG4gICAqIEBkZWZhdWx0IFBvc2l0aW9uLkJPVFRPTVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRyb3Bkb3duUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBzZWxlY3Qgd2lsbCBkaXNwbGF5IGEgcmVzZXQgYnV0dG9uLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBjbGVhcmFibGUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBkYXRlIHJhbmdlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHtEYXRlUmFuZ2V9XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZSBtYW5hZ2luZyB0aGUgZHJvcGRvd24gZnVuY3Rpb25hbGl0eS5cbiAgICpcbiAgICogQHR5cGUge0Ryb3Bkb3duRGlyZWN0aXZlfVxuICAgKi9cbiAgQFZpZXdDaGlsZChEcm9wZG93bkRpcmVjdGl2ZSlcbiAgcHVibGljIGRyb3Bkb3duITogRHJvcGRvd25EaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB0cmlnZ2VyaW5nIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGRyb3Bkb3duVHJpZ2dlckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogUXVlcnkgbGlzdCBvZiB0aGUgaW5wdXQgY29udHJvbHMgd2l0aGluIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICpcbiAgICogQHR5cGUge1F1ZXJ5TGlzdDxEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmU+fVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBkYXRlRmllbGRzITogUXVlcnlMaXN0PERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBtaXJyb3JpbmcgdGhlIHN0YXJ0IGRhdGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmPEhUTUxFbGVtZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3N0YXJ0RGF0ZU1pcnJvcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBzdGFydERhdGVNaXJyb3IhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG1pcnJvcmluZyB0aGUgZW5kIGRhdGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmPEhUTUxFbGVtZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVNaXJyb3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZW5kRGF0ZU1pcnJvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgY29udHJvbCBmb3IgdGhlIHN0YXJ0IGRhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXJ0RGF0ZUZpZWxkKCk6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3N0YXJ0RGF0ZSwgX2VuZERhdGVdID0gdGhpcy5kYXRlRmllbGRzO1xuICAgIHJldHVybiBzdGFydERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IGNvbnRyb2wgZm9yIHRoZSBlbmQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge0RhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIHB1YmxpYyBnZXQgZW5kRGF0ZUZpZWxkKCk6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW19zdGFydERhdGUsIGVuZERhdGVdID0gdGhpcy5kYXRlRmllbGRzO1xuICAgIHJldHVybiBlbmREYXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobnVsbCk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IpO1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5lbmREYXRlRmllbGQsIHRoaXMuZW5kRGF0ZU1pcnJvcik7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRGb2N1cygpO1xuXG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMudmFsdWUuc3RhcnQgfHwgIXRoaXMudmFsdWUuZW5kKSByZXR1cm47XG4gICAgICB0aGlzLnVwZGF0ZVN0YXJ0RGF0ZUZpZWxkKHN0YXJ0T2ZEYXkodGhpcy52YWx1ZS5zdGFydCkpO1xuICAgICAgdGhpcy51cGRhdGVFbmREYXRlRmllbGQoc3RhcnRPZkRheSh0aGlzLnZhbHVlLmVuZCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlIHJhbmdlLCB1cGRhdGVzIHRoZSBmb3JtIHZhbHVlLCBhbmQgZW1pdHMgdGhlIHNlbGVjdGVkIHJhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGVSYW5nZSB8IG51bGx9IHZhbHVlIC0gVGhlIGRhdGUgcmFuZ2UgdG8gc2VsZWN0LlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGVSYW5nZSh2YWx1ZTogRGF0ZVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLnN0YXJ0IHx8ICF2YWx1ZS5lbmQpIHJldHVybjtcblxuICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYWx1ZSh2YWx1ZSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFsdWUoeyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRW1wdHkodmFsdWU6IERhdGVSYW5nZSB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXZhbHVlIHx8ICF2YWx1ZS5zdGFydCB8fCAhdmFsdWUuZW5kO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsVmFsdWUodmFsdWU6IERhdGVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU3RhcnREYXRlRmllbGQodmFsdWUuc3RhcnQpO1xuICAgIHRoaXMudXBkYXRlRW5kRGF0ZUZpZWxkKHZhbHVlLmVuZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZUZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoeyBzdGFydDogdGhpcy5zdGFydERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCwgZW5kOiB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCB9KTtcbiAgICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IsIHZhbHVlKTtcbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHsgc3RhcnQ6IHRoaXMuc3RhcnREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwsIGVuZDogdGhpcy5lbmREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVdpZHRoKHRoaXMuZW5kRGF0ZUZpZWxkLCB0aGlzLmVuZERhdGVNaXJyb3IsIHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaWR0aCh0YXJnZXQ6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCwgc291cmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgdmFsdWUgPSAnJyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBlbnNhdGlvblB4ID0gMjtcbiAgICBzb3VyY2UubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlIHx8IHRhcmdldD8ucGxhY2Vob2xkZXIgfHwgbnVsbDtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBkZWZlckZuKCgpID0+ICh0YXJnZXQuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7c291cmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyBjb21wZW5zYXRpb25QeH1weGApKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvcGVuRGF0ZXJhbmdlcGlja2VyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5IHx8IHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5kcm9wZG93bi5vcGVuKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhcnREYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlRmllbGQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLnN0YXJ0RGF0ZUZpZWxkLCB0aGlzLnN0YXJ0RGF0ZU1pcnJvciwgZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRW5kRGF0ZUZpZWxkKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGVGaWVsZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9IGdldERhdGVyYW5nZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLmVuZERhdGVGaWVsZCwgdGhpcy5lbmREYXRlTWlycm9yLCBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJycpO1xuICB9XG59XG4iLCI8c3BhbiAjc3RhcnREYXRlTWlycm9yIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19taXJyb3JcIj48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtvZHhEYXRlcmFuZ2VwaWNrZXJTdGFydERhdGVDb250cm9sXVwiIC8+XG48c3BhbiByb2xlPVwibm9uZVwiIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fc2VwYXJhdG9yXCI+4oCTPC9zcGFuPlxuPHNwYW4gI2VuZERhdGVNaXJyb3Igcm9sZT1cIm5vbmVcIiBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX21pcnJvclwiPjwvc3Bhbj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W29keERhdGVyYW5nZXBpY2tlckVuZERhdGVDb250cm9sXVwiIC8+XG5cbjxvZHgtYWN0aW9uLWdyb3VwIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fdHJpZ2dlci13cmFwcGVyXCI+XG4gIEBpZiAoY2xlYXJhYmxlKCkgJiYgIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX2NsZWFyXCIgKGNsaWNrKT1cInJlc2V0KClcIiBvZHhCdXR0b24gc2l6ZT1cInNtYWxsXCIgYXJpYS1sYWJlbD1cIlJlc2V0IHRpbWVcIj5cbiAgICAgIDxvZHgtaWNvbiBuYW1lPVwiY2xvc2VcIiBpY29uU2V0PVwiY29yZVwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPGJ1dHRvblxuICAgICNkcm9wZG93blRyaWdnZXJcbiAgICBvZHhCdXR0b25cbiAgICBzaXplPVwic21hbGxcIlxuICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX190cmlnZ2VyXCJcbiAgICBbb2R4RHJvcGRvd25dPVwiY2FsZW5kYXJPdmVybGF5XCJcbiAgICBbb2R4RHJvcGRvd25PcHRpb25zXT1cInsgcG9zaXRpb246IGRyb3Bkb3duUG9zaXRpb24gfVwiXG4gICAgW29keERyb3Bkb3duVHJpZ2dlckVsZW1lbnRdPVwiZHJvcGRvd25UcmlnZ2VyRWxlbWVudC5uYXRpdmVFbGVtZW50XCJcbiAgICBbb2R4RHJvcGRvd25Ib3N0XT1cIm51bGxcIlxuICAgIFtvZHhEcm9wZG93blJlZmVyZW5jZUVsZW1lbnRdPVwiZWxlbWVudC5uYXRpdmVFbGVtZW50XCJcbiAgICAob2R4RHJvcGRvd25CZWZvcmVDbG9zZSk9XCJvblRvdWNoZWQoKVwiXG4gID5cbiAgICA8b2R4LWljb24gbmFtZT1cImNhbGVuZGFyXCIgLz5cbiAgPC9idXR0b24+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhCdXR0b25dXCIgbmdQcm9qZWN0QXM9XCJbb2R4QnV0dG9uXVwiIC8+XG48L29keC1hY3Rpb24tZ3JvdXA+XG5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXJPdmVybGF5PlxuICA8b2R4LWNhbGVuZGFyXG4gICAgW3NlbGVjdGVkRGF0ZV09XCJ0b2RheVwiXG4gICAgW3NlbGVjdGVkRGF0ZVJhbmdlXT1cInZhbHVlXCJcbiAgICAoc2VsZWN0ZWREYXRlUmFuZ2VDaGFuZ2UpPVwic2VsZWN0RGF0ZVJhbmdlKCRldmVudClcIlxuICAgIFtmaWx0ZXJGbl09XCJmaWx0ZXJGblwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgY2RrVHJhcEZvY3VzXG4gICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVcbiAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlci9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXIvc3JjL2xpYi9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUF5QixxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixD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QUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBcUhwRCxtQkFBbUI7c0JBRDVCLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDdXN0b21Gb3JtQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBBY3Rpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FjdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQsIENhbGVuZGFyU2VsZWN0aW9uTW9kZSwgRGF0ZUZpbHRlciwgRGF0ZVJhbmdlLCBwcm92aWRlQ2FsZW5kYXJDb25maWcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQgeyBEcm9wZG93bkRpcmVjdGl2ZSwgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZGVmZXJGbiwgaW5qZWN0RWxlbWVudCwgUG9zaXRpb24sIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGZvcm1hdCwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGluamVjdERhdGVyYW5nZXBpY2tlckNvbmZpZyB9IGZyb20gJy4vZGF0ZXJhbmdlcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgZ2V0RGF0ZXJhbmdlcGlja2VySW5wdXRGb3JtYXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgZGF0ZSByYW5nZSwgaW50ZWdyYXRlZCB3aXRoIGRyb3Bkb3ducyBhbmQgaW5wdXQgZmllbGRzIGZvciBzdGFydCBhbmQgZW5kIGRhdGVzLlxuICogSXQgc3VwcG9ydHMgY3VzdG9tIGNvbmZpZ3VyYXRpb25zIGZvciBtaW5pbXVtLCBtYXhpbXVtIGRhdGVzLCBhbmQgZGF0ZSBmaWx0ZXJzLiBUaGUgY29tcG9uZW50IGFsc28gaGFuZGxlc1xuICogdGhlIGRyb3Bkb3duJ3MgYmVoYXZpb3IgZm9yIGRhdGUgc2VsZWN0aW9uIGFuZCBhcHBsaWVzIGRhdGUgZm9ybWF0cyBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24uXG4gKiBUaGUgY29tcG9uZW50IGV4dGVuZHMgdGhlIGBDdXN0b21Gb3JtQ29udHJvbGAgY2xhc3MgdG8gcHJvdmlkZSBmb3JtIGNvbnRyb2wgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBAc2VlIHtDdXN0b21Gb3JtQ29udHJvbH1cbiAqL1xuQENTU0NvbXBvbmVudCgnZGF0ZXJhbmdlcGlja2VyJylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC1kYXRlcmFuZ2VwaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQWN0aW9uR3JvdXBDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlQ2FsZW5kYXJDb25maWcoe1xuICAgICAgZGlzcGxheUFkamFjZW50RGF5czogZmFsc2UsXG4gICAgICBzZWxlY3Rpb25Nb2RlOiBDYWxlbmRhclNlbGVjdGlvbk1vZGUuRGF0ZVJhbmdlLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxEYXRlUmFuZ2UgfCBudWxsPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0RGF0ZXJhbmdlcGlja2VyQ29uZmlnKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBkcm9wZG93biBwYXJ0IG9mIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBvcGVuLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd24uaXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdG9kYXkncyBkYXRlLCB1c2VkIGZvciBkZWZhdWx0IHNlbGVjdGlvbnMgYW5kIHZhbGlkYXRpb25zLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZX1cbiAgICovXG4gIHB1YmxpYyB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGFkZGl0aW9uYWwgcnVsZXMgZm9yIGRpc2FibGVkIGRhdGVzIHdpdGhpbiB0aGUgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZUZpbHRlciB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogLy8gRGlzYWJsZXMgYWxsIFdlZG5lc2RheXMgaW4gdGhlIHBpY2tlci5cbiAgICogY29uc3QgZmlsdGVyRm46IERhdGVGaWx0ZXIgPSAoZGF0ZTogRGF0ZSkgPT4gZGF0ZS5nZXREYXkoKSAhPT0gMztcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsdGVyRm46IERhdGVGaWx0ZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhlIHBpY2tlci5cbiAgICpcbiAgICogQHR5cGUge0RhdGUgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhlIHBpY2tlci5cbiAgICpcbiAgICogQHR5cGUge0RhdGUgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gcmVsYXRpdmUgdG8gdGhlIGlucHV0IGZpZWxkcy5cbiAgICpcbiAgICogQHR5cGUge1Bvc2l0aW9ufVxuICAgKiBAZGVmYXVsdCBQb3NpdGlvbi5CT1RUT01cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkcm9wZG93blBvc2l0aW9uOiBQb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCB0aGUgc2VsZWN0IHdpbGwgZGlzcGxheSBhIHJlc2V0IGJ1dHRvbi5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWMgY2xlYXJhYmxlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgZGF0ZSByYW5nZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBlbWl0cyB7RGF0ZVJhbmdlfVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVJhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBEaXJlY3RpdmUgbWFuYWdpbmcgdGhlIGRyb3Bkb3duIGZ1bmN0aW9uYWxpdHkuXG4gICAqXG4gICAqIEB0eXBlIHtEcm9wZG93bkRpcmVjdGl2ZX1cbiAgICovXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHB1YmxpYyBkcm9wZG93biE6IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgdHJpZ2dlcmluZyB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmPEhUTUxFbGVtZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVHJpZ2dlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IGxpc3Qgb2YgdGhlIGlucHV0IGNvbnRyb2xzIHdpdGhpbiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqXG4gICAqIEB0eXBlIHtRdWVyeUxpc3Q8RGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlPn1cbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlKVxuICBwdWJsaWMgZGF0ZUZpZWxkcyE6IFF1ZXJ5TGlzdDxEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmU+O1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgbWlycm9yaW5nIHRoZSBzdGFydCBkYXRlIGlucHV0IGZpZWxkLlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZjxIVE1MRWxlbWVudD59XG4gICAqL1xuICBAVmlld0NoaWxkKCdzdGFydERhdGVNaXJyb3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgc3RhcnREYXRlTWlycm9yITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBtaXJyb3JpbmcgdGhlIGVuZCBkYXRlIGlucHV0IGZpZWxkLlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZjxIVE1MRWxlbWVudD59XG4gICAqL1xuICBAVmlld0NoaWxkKCdlbmREYXRlTWlycm9yJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGVuZERhdGVNaXJyb3IhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGNvbnRyb2wgZm9yIHRoZSBzdGFydCBkYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFydERhdGVGaWVsZCgpOiBEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtzdGFydERhdGUsIF9lbmREYXRlXSA9IHRoaXMuZGF0ZUZpZWxkcztcbiAgICByZXR1cm4gc3RhcnREYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBjb250cm9sIGZvciB0aGUgZW5kIGRhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBwdWJsaWMgZ2V0IGVuZERhdGVGaWVsZCgpOiBEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtfc3RhcnREYXRlLCBlbmREYXRlXSA9IHRoaXMuZGF0ZUZpZWxkcztcbiAgICByZXR1cm4gZW5kRGF0ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVdpZHRoKHRoaXMuc3RhcnREYXRlRmllbGQsIHRoaXMuc3RhcnREYXRlTWlycm9yKTtcbiAgICB0aGlzLnVwZGF0ZVdpZHRoKHRoaXMuZW5kRGF0ZUZpZWxkLCB0aGlzLmVuZERhdGVNaXJyb3IpO1xuICAgIHRoaXMuaGFuZGxlRGF0ZUZpZWxkQ2hhbmdlcygpO1xuICAgIHRoaXMuaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0RmllbGRzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhIGRhdGUgcmFuZ2UsIHVwZGF0ZXMgdGhlIGZvcm0gdmFsdWUsIGFuZCBlbWl0cyB0aGUgc2VsZWN0ZWQgcmFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RGF0ZVJhbmdlIHwgbnVsbH0gdmFsdWUgLSBUaGUgZGF0ZSByYW5nZSB0byBzZWxlY3QuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0RGF0ZVJhbmdlKHZhbHVlOiBEYXRlUmFuZ2UgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc3RhcnQgfHwgIXZhbHVlLmVuZCkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgZGF0ZXJhbmdlcGlja2VyJ3MgdmFsdWUgdG8gYW4gZW1wdHkgZGF0ZSByYW5nZSAoYm90aCBzdGFydCBhbmQgZW5kIGFzIG51bGwpLlxuICAgKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYWx1ZSh7IHN0YXJ0OiBudWxsLCBlbmQ6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICogUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0ge0RhdGVSYW5nZSB8IG51bGx9IHZhbHVlIC0gVGhlIG5ldyBkYXRlIHJhbmdlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERhdGVSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0RmllbGRzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFbXB0eSh2YWx1ZTogRGF0ZVJhbmdlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdmFsdWUgfHwgIXZhbHVlLnN0YXJ0IHx8ICF2YWx1ZS5lbmQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlSW50ZXJuYWxWYWx1ZSh2YWx1ZTogRGF0ZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTdGFydERhdGVGaWVsZCh2YWx1ZS5zdGFydCk7XG4gICAgdGhpcy51cGRhdGVFbmREYXRlRmllbGQodmFsdWUuZW5kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnREYXRlRmllbGQ/LnZhbHVlQ2hhbmdlJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IsIHZhbHVlKTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoeyBzdGFydDogdGhpcy5zdGFydERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCwgZW5kOiB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLmVuZERhdGVGaWVsZCwgdGhpcy5lbmREYXRlTWlycm9yLCB2YWx1ZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHsgc3RhcnQ6IHRoaXMuc3RhcnREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwsIGVuZDogdGhpcy5lbmREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2lkdGgodGFyZ2V0OiBEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQsIHNvdXJjZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHZhbHVlID0gJycpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wZW5zYXRpb25QeCA9IDI7XG4gICAgc291cmNlLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZSB8fCB0YXJnZXQ/LnBsYWNlaG9sZGVyIHx8IG51bGw7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgZGVmZXJGbigoKSA9PiAodGFyZ2V0LmVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3NvdXJjZS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgY29tcGVuc2F0aW9uUHh9cHhgKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURhdGVGaWVsZEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnREYXRlRmllbGQ/LmZvY3VzZWQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGlzRm9jdXNlZCkgPT4ge1xuICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5lbmREYXRlRmllbGQ/LmZvY3VzZWQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGlzRm9jdXNlZCkgPT4ge1xuICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb3BlbkRhdGVyYW5nZXBpY2tlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNSZWFkb25seSB8fCB0aGlzLmlzRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuZHJvcGRvd24ub3BlbihldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXJ0RGF0ZUZpZWxkKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZUZpZWxkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gZ2V0RGF0ZXJhbmdlcGlja2VySW5wdXRGb3JtYXQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc3RhcnREYXRlRmllbGQubmF0aXZlRWxlbWVudFZhbHVlID0gZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnO1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IsIGRhdGUgPyBmb3JtYXQoZGF0ZSwgZGF0ZUZvcm1hdCkgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUVuZERhdGVGaWVsZChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbmREYXRlRmllbGQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5lbmREYXRlRmllbGQubmF0aXZlRWxlbWVudFZhbHVlID0gZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnO1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5lbmREYXRlRmllbGQsIHRoaXMuZW5kRGF0ZU1pcnJvciwgZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRGaWVsZHMoKTogdm9pZCB7XG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHRoaXMucmVzZXQoKTtcbiAgICAgIGlmICghdGhpcy52YWx1ZSB8fCAhdGhpcy52YWx1ZS5zdGFydCB8fCAhdGhpcy52YWx1ZS5lbmQpIHJldHVybjtcbiAgICAgIHRoaXMudXBkYXRlU3RhcnREYXRlRmllbGQoc3RhcnRPZkRheSh0aGlzLnZhbHVlLnN0YXJ0KSk7XG4gICAgICB0aGlzLnVwZGF0ZUVuZERhdGVGaWVsZChzdGFydE9mRGF5KHRoaXMudmFsdWUuZW5kKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxzcGFuICNzdGFydERhdGVNaXJyb3Igcm9sZT1cIm5vbmVcIiBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX21pcnJvclwiPjwvc3Bhbj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W29keERhdGVyYW5nZXBpY2tlclN0YXJ0RGF0ZUNvbnRyb2xdXCIgLz5cbjxzcGFuIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19zZXBhcmF0b3JcIj7igJM8L3NwYW4+XG48c3BhbiAjZW5kRGF0ZU1pcnJvciByb2xlPVwibm9uZVwiIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fbWlycm9yXCI+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRbb2R4RGF0ZXJhbmdlcGlja2VyRW5kRGF0ZUNvbnRyb2xdXCIgLz5cblxuPG9keC1hY3Rpb24tZ3JvdXAgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX190cmlnZ2VyLXdyYXBwZXJcIj5cbiAgQGlmIChjbGVhcmFibGUoKSAmJiAhaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICA8YnV0dG9uIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fY2xlYXJcIiAoY2xpY2spPVwicmVzZXQoKVwiIG9keEJ1dHRvbiBzaXplPVwic21hbGxcIiBhcmlhLWxhYmVsPVwiUmVzZXQgdGltZVwiPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjbG9zZVwiIGljb25TZXQ9XCJjb3JlXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICA8YnV0dG9uXG4gICAgI2Ryb3Bkb3duVHJpZ2dlclxuICAgIG9keEJ1dHRvblxuICAgIHNpemU9XCJzbWFsbFwiXG4gICAgdmFyaWFudD1cImdob3N0XCJcbiAgICBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX3RyaWdnZXJcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIiAvPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keEJ1dHRvbl1cIiBuZ1Byb2plY3RBcz1cIltvZHhCdXR0b25dXCIgLz5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInRvZGF5XCJcbiAgICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwidmFsdWVcIlxuICAgIChzZWxlY3RlZERhdGVSYW5nZUNoYW5nZSk9XCJzZWxlY3REYXRlUmFuZ2UoJGV2ZW50KVwiXG4gICAgW2ZpbHRlckZuXT1cImZpbHRlckZuXCJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICBjZGtUcmFwRm9jdXNcbiAgICBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZVxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -26,7 +26,18 @@ let TimepickerOptionComponent = class TimepickerOptionComponent extends OptionCo
26
26
  super();
27
27
  this.timepicker = inject(TIMEPICKER_CONTROL);
28
28
  this.disabledController = DisabledController.inject();
29
+ /**
30
+ * Indicates whether this time option is currently selected.
31
+ * @type {boolean}
32
+ * @default false
33
+ */
29
34
  this.isSelected = false;
35
+ /**
36
+ * Indicates whether this time option is currently active (e.g., highlighted by keyboard navigation).
37
+ * This is an override from the base `OptionControl`.
38
+ * @type {boolean}
39
+ * @default false
40
+ */
30
41
  this.isActive = false;
31
42
  /**
32
43
  * Emits an event when the option is selected, allowing the timepicker component to update its value
@@ -41,7 +52,8 @@ let TimepickerOptionComponent = class TimepickerOptionComponent extends OptionCo
41
52
  this.isSelected = this.timepicker.isTimeOptionSelected(this);
42
53
  }
43
54
  /**
44
- * Sets the active styles for the option, indicating that it is currently
55
+ * Sets the active styles for the option, typically indicating that it is
56
+ * focused or highlighted via keyboard navigation.
45
57
  */
46
58
  setActiveStyles() {
47
59
  this.isActive = true;
@@ -71,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
71
83
  }], ctorParameters: () => [], propDecorators: { selected: [{
72
84
  type: Output
73
85
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvdGltZXBpY2tlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZXBpY2tlci1vcHRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFekQ7Ozs7OztHQU1HO0FBV0ksSUFBTSx5QkFBeUIsR0FBL0IsTUFBTSx5QkFBMEIsU0FBUSxhQUFxQjtJQU9sRTs7OztPQUlHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQVdEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUF6Qk8sZUFBVSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRTdELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDVixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBV2pDOzs7OztXQUtHO1FBRUksYUFBUSxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBSTlELHVCQUF1QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBM0NVLHlCQUF5QjttR0FBekIseUJBQXlCLHVHQUh6QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLHdHQUovQixnQkFBZ0I7O0FBT2YseUJBQXlCO0lBVnJDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQzs7R0FVckIseUJBQXlCLENBNENyQzs7NEZBNUNZLHlCQUF5QjtrQkFUckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDekMsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQ3BDO3dEQXdCUSxRQUFRO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNhYmxlZENvbnRyb2xsZXIsIFdpdGhEaXNhYmxlZFN0YXRlLCBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBPcHRpb25Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9vcHRpb24tY29udHJvbCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgVElNRVBJQ0tFUl9DT05UUk9MIH0gZnJvbSAnLi4vdGltZXBpY2tlci50b2tlbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNlbGVjdGFibGUgb3B0aW9uIHdpdGhpbiBhIHRpbWVwaWNrZXIgY29tcG9uZW50LiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgZm9yXG4gKiBpbmRpdmlkdWFsIHRpbWUgdmFsdWVzIHRvIGJlIHNlbGVjdGVkIGZyb20gYSBkcm9wZG93biBtZW51IGFzIHBhcnQgb2YgdGhlIHRpbWVwaWNrZXIgaW50ZXJmYWNlLlxuICogSXQgaW50ZWdyYXRlcyB3aXRoIHRoZSB0aW1lcGlja2VyJ3MgY29udHJvbCB0byBtYW5hZ2Ugc2VsZWN0aW9uIHN0YXRlIGFuZCBhY2Nlc3NpYmlsaXR5LlxuICpcbiAqIEBleHRlbmRzIHtPcHRpb25Db250cm9sPHN0cmluZz59XG4gKi9cbkBDU1NDb21wb25lbnQoJ3RpbWVwaWNrZXItb3B0aW9uJylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC10aW1lcGlja2VyLW9wdGlvbicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQgLz5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbRGlzYWJsZWRDb250cm9sbGVyLmNvbm5lY3QoKV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbV2l0aERpc2FibGVkU3RhdGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgT3B0aW9uQ29udHJvbDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lcGlja2VyID0gaW5qZWN0KFRJTUVQSUNLRVJfQ09OVFJPTCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlZENvbnRyb2xsZXIgPSBEaXNhYmxlZENvbnRyb2xsZXIuaW5qZWN0KCk7XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHVibGljIG92ZXJyaWRlIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZC4gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBvcHRpb24gc2hvdWxkIGJlIHNlbGVjdGFibGUuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpc2FibGVkQ29udHJvbGxlcj8uZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLCBhbGxvd2luZyB0aGUgdGltZXBpY2tlciBjb21wb25lbnQgdG8gdXBkYXRlIGl0cyB2YWx1ZVxuICAgKiBhbmQgY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAZW1pdHMge1RpbWVwaWNrZXJPcHRpb25Db21wb25lbnR9XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcy50aW1lcGlja2VyKS5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRoaXMudGltZXBpY2tlci5pc1RpbWVPcHRpb25TZWxlY3RlZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgc3R5bGVzIGZvciB0aGUgb3B0aW9uLCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgY3VycmVudGx5XG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdE9wdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcyk7XG4gIH1cbn1cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvdGltZXBpY2tlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZXBpY2tlci1vcHRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFekQ7Ozs7OztHQU1HO0FBV0ksSUFBTSx5QkFBeUIsR0FBL0IsTUFBTSx5QkFBMEIsU0FBUSxhQUFxQjtJQWtCbEU7Ozs7T0FJRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFXRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBcENPLGVBQVUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVwRTs7OztXQUlHO1FBQ0ksZUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7Ozs7V0FLRztRQUNhLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFXakM7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFJOUQsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBdkRVLHlCQUF5QjttR0FBekIseUJBQXlCLHVHQUh6QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLHdHQUovQixnQkFBZ0I7O0FBT2YseUJBQXlCO0lBVnJDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQzs7R0FVckIseUJBQXlCLENBd0RyQzs7NEZBeERZLHlCQUF5QjtrQkFUckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDekMsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQ3BDO3dEQW1DUSxRQUFRO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNhYmxlZENvbnRyb2xsZXIsIFdpdGhEaXNhYmxlZFN0YXRlLCBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBPcHRpb25Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9vcHRpb24tY29udHJvbCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgVElNRVBJQ0tFUl9DT05UUk9MIH0gZnJvbSAnLi4vdGltZXBpY2tlci50b2tlbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNlbGVjdGFibGUgb3B0aW9uIHdpdGhpbiBhIHRpbWVwaWNrZXIgY29tcG9uZW50LiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgZm9yXG4gKiBpbmRpdmlkdWFsIHRpbWUgdmFsdWVzIHRvIGJlIHNlbGVjdGVkIGZyb20gYSBkcm9wZG93biBtZW51IGFzIHBhcnQgb2YgdGhlIHRpbWVwaWNrZXIgaW50ZXJmYWNlLlxuICogSXQgaW50ZWdyYXRlcyB3aXRoIHRoZSB0aW1lcGlja2VyJ3MgY29udHJvbCB0byBtYW5hZ2Ugc2VsZWN0aW9uIHN0YXRlIGFuZCBhY2Nlc3NpYmlsaXR5LlxuICpcbiAqIEBleHRlbmRzIHtPcHRpb25Db250cm9sPHN0cmluZz59XG4gKi9cbkBDU1NDb21wb25lbnQoJ3RpbWVwaWNrZXItb3B0aW9uJylcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29keC10aW1lcGlja2VyLW9wdGlvbicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQgLz5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbRGlzYWJsZWRDb250cm9sbGVyLmNvbm5lY3QoKV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbV2l0aERpc2FibGVkU3RhdGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgT3B0aW9uQ29udHJvbDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lcGlja2VyID0gaW5qZWN0KFRJTUVQSUNLRVJfQ09OVFJPTCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlZENvbnRyb2xsZXIgPSBEaXNhYmxlZENvbnRyb2xsZXIuaW5qZWN0KCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgdGltZSBvcHRpb24gaXMgY3VycmVudGx5IHNlbGVjdGVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBpc1NlbGVjdGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHRpbWUgb3B0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUgKGUuZy4sIGhpZ2hsaWdodGVkIGJ5IGtleWJvYXJkIG5hdmlnYXRpb24pLlxuICAgKiBUaGlzIGlzIGFuIG92ZXJyaWRlIGZyb20gdGhlIGJhc2UgYE9wdGlvbkNvbnRyb2xgLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBpc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RhYmxlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaXNhYmxlZENvbnRyb2xsZXI/LmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCwgYWxsb3dpbmcgdGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHRvIHVwZGF0ZSBpdHMgdmFsdWVcbiAgICogYW5kIGNsb3NlIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQGVtaXRzIHtUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50fVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZXBpY2tlck9wdGlvbkNvbXBvbmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMudGltZXBpY2tlcikucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSB0aGlzLnRpbWVwaWNrZXIuaXNUaW1lT3B0aW9uU2VsZWN0ZWQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIHN0eWxlcyBmb3IgdGhlIG9wdGlvbiwgdHlwaWNhbGx5IGluZGljYXRpbmcgdGhhdCBpdCBpc1xuICAgKiBmb2N1c2VkIG9yIGhpZ2hsaWdodGVkIHZpYSBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -120,6 +120,17 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
120
120
  get timeStampsList() {
121
121
  return generateTimeStamps(this.step, this.useLocale);
122
122
  }
123
+ /**
124
+ * @internal
125
+ * Writes a new value to the element.
126
+ * Part of the ControlValueAccessor interface.
127
+ * @param {string | null} value - The new value.
128
+ */
129
+ writeValue(value) {
130
+ super.writeValue(value);
131
+ if (value === null || this.timepickerService.isValidTime(value))
132
+ this.updateInputValue();
133
+ }
123
134
  onOpen() {
124
135
  this.keyManager = new ActiveDescendantKeyManager(this.options).withHomeAndEnd();
125
136
  this.setActiveOptionBasedOnCurrentValue();
@@ -169,10 +180,9 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
169
180
  return availableTimeSlots.find((option) => option.value === nearestTimeValue);
170
181
  }
171
182
  updateInputValue() {
172
- if (this.value && this.dateField) {
173
- const time = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);
174
- this.dateField.nativeElementValue = time;
175
- }
183
+ if (!this.dateField)
184
+ return;
185
+ this.dateField.nativeElementValue = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);
176
186
  }
177
187
  scrollToActiveOption(option, _opts = {}) {
178
188
  if (isFunction(option.element.nativeElement.scrollIntoView)) {
@@ -239,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
239
249
  type: HostListener,
240
250
  args: ['keydown', ['$event']]
241
251
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90aW1lcGlja2VyL3NyYy9saWIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90aW1lcGlja2VyL3NyYy9saWIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNFLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFD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QUFFO2dCQWtDL0IsSUFBSTtzQkFEVixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFVOUIsR0FBRztzQkFEVCxLQUFLO2dCQVVDLEdBQUc7c0JBRFQsS0FBSztnQkFTQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsK0JBQStCO2dCQTBEaEMscUJBQXFCO3NCQUY5QixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2hDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSwgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc2FibGVkQ29udHJvbGxlciwgUmVhZG9ubHlDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IE9wdGlvbkNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL29wdGlvbi1jb250cm9sJztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBEcm9wZG93bkRpcmVjdGl2ZSwgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgaW5qZWN0RWxlbWVudCwgaXNGdW5jdGlvbiwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90aW1lcGlja2VyLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGltZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90aW1lcGlja2VyLWlucHV0LWNvbnRyb2wuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRpbWVwaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi90aW1lcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVElNRVBJQ0tFUl9DT05UUk9MIH0gZnJvbSAnLi90aW1lcGlja2VyLnRva2VuJztcbmltcG9ydCB7IGdlbmVyYXRlVGltZVN0YW1wcyB9IGZyb20gJy4vdXRpbHMvZ2VuZXJhdGUtdGltZS1zdGFtcHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0aW1lIHBpY2tlciBjb21wb25lbnQgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGEgdGltZSBmcm9tIGEgZHJvcGRvd24gbGlzdC5cbiAqIFRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgd2l0aCBBbmd1bGFyIGZvcm1zIGFuZCBzdXBwb3J0cyBjdXN0b21pemF0aW9uIGZvciBsb2NhbGUsIHRpbWUgcmFuZ2UsIGFuZCBzdGVwIGludGVydmFscy5cbiAqXG4gKiBAc2VlIHtDdXN0b21Gb3JtQ29udHJvbH1cbiAqL1xuQENTU0NvbXBvbmVudCgndGltZXBpY2tlcicpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtdGltZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAndGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIERpc2FibGVkQ29udHJvbGxlci5jb25uZWN0KCksXG4gICAgUmVhZG9ubHlDb250cm9sbGVyLmNvbm5lY3QoKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBUSU1FUElDS0VSX0NPTlRST0wsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaW1lcGlja2VyQ29tcG9uZW50KSxcbiAgICB9LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0ExMXlNb2R1bGUsIEFjdGlvbkdyb3VwQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBUaW1lcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5yZWFkb25seV0nOiAncmVhZG9ubHlDb250cm9sbGVyPy5yZWFkb25seSB8fCBudWxsJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZXBpY2tlclNlcnZpY2UgPSBpbmplY3QoVGltZXBpY2tlclNlcnZpY2UpO1xuICBwcml2YXRlIF91c2VMb2NhbGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGtleU1hbmFnZXI/OiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxPcHRpb25Db250cm9sPHN0cmluZz4+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93bj86IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGRyZW4oVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCwgeyBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgb3B0aW9ucyE6IFF1ZXJ5TGlzdDxUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50PjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgdGltZXBpY2tlciBzaG91bGQgdXNlIGxvY2FsZS1zcGVjaWZpYyB0aW1lIGZvcm1hdHMgQU0vUE0uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgdXNlTG9jYWxlKHZhbDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuZGF0ZUZpZWxkKSB7XG4gICAgICBjb25zdCB0aW1lID0gdGhpcy50aW1lcGlja2VyU2VydmljZS5nZXRMb2NhbGl6ZWRUaW1lRm9ybWF0KHRoaXMudmFsdWUsIHZhbCk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRpbWUpO1xuICAgICAgdGhpcy5kYXRlRmllbGQubmF0aXZlRWxlbWVudFZhbHVlID0gdGltZTtcbiAgICB9XG4gICAgdGhpcy5fdXNlTG9jYWxlID0gdmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgbG9jYWxlIGlzIGJlaW5nIHVzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBsb2NhbGUgaXMgYmVpbmcgdXNlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdXNlTG9jYWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VMb2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCB3aWxsIGRpc3BsYXkgYSByZXNldCBidXR0b24uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGNsZWFyYWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHN0ZXAgaW50ZXJ2YWwgYmV0d2VlbiB0aW1lIG9wdGlvbnMgaW4gbWludXRlcy5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQGRlZmF1bHQgMzBcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzdGVwID0gMzA7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSB0aW1lIHZhbHVlIHRoYXQgY2FuIGJlIHNlbGVjdGVkICgnMDU6MDAnIG9yICcwNTowMCBBTScpLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCAnMDA6MDAnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluID0gJzAwOjAwJztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgdmFsdWUgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgKCcyMjowMCcgb3IgJzEwOjAwIFBNJykuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICcyMzo1OSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXggPSAnMjM6NTknO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aXZlIGZvciB0aGUgdGltZXBpY2tlciBpbnB1dCBjb250cm9sLlxuICAgKlxuICAgKiBAdHlwZSB7VGltZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBWaWV3Q2hpbGQoVGltZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSlcbiAgcHVibGljIGRhdGVGaWVsZD86IFRpbWVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlRGF0ZUZpZWxkQ2hhbmdlcygpO1xuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdGltZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VGltZXBpY2tlck9wdGlvbkNvbXBvbmVudH0gb3B0aW9uIC0gVGhlIHRpbWUgb3B0aW9uIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNUaW1lT3B0aW9uU2VsZWN0ZWQob3B0aW9uOiBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG9wdGlvbi52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBzZWxlY3Rpb24gb2YgYSB0aW1lIG9wdGlvbiBmcm9tIHRoZSBkcm9wZG93biwgdXBkYXRpbmcgdGhlIGlucHV0IGZpZWxkIGFuZCBjbG9zaW5nIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQHBhcmFtIHtUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50IHwgdW5kZWZpbmVkfSBvcHRpb24gLSBUaGUgc2VsZWN0ZWQgdGltZSBvcHRpb24gY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHRpbWVTZWxlY3RlZChvcHRpb24/OiBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZXRPcHRpb24ob3B0aW9uKTtcbiAgICB0aGlzLmRyb3Bkb3duPy5pc09wZW4gJiYgdGhpcy5kcm9wZG93bj8uY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCB0aW1lIGlzIHdpdGhpbiB0aGUgYWxsb3dlZCB0aW1lIHJhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGltZSAtIFRoZSB0aW1lIHRvIGNoZWNrLCBpbiAnSEg6bW0nIG9yICdISDptbSBBTS9QTScgZm9ybWF0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdGltZSBpcyB3aXRoaW4gdGhlIHJhbmdlOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgKi9cbiAgcHVibGljIGluVGltZVJhbmdlKHRpbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLm1heFZhbGlkYXRpb24odGltZSwgdGhpcy5tYXgpICYmIHRoaXMudGltZXBpY2tlclNlcnZpY2UubWluVmFsaWRhdGlvbih0aW1lLCB0aGlzLm1pbik7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsaXN0IG9mIHRpbWUgb3B0aW9ucyBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBzdGVwIGludGVydmFsIGFuZCBsb2NhbGUgc2V0dGluZ3MgQU0vUE0uXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQW4gYXJyYXkgb2YgdGltZSBzdHJpbmdzIGluICdISDptbScgZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIGdldCB0aW1lU3RhbXBzTGlzdCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGdlbmVyYXRlVGltZVN0YW1wcyh0aGlzLnN0ZXAsIHRoaXMudXNlTG9jYWxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE9wdGlvbkNvbnRyb2w8c3RyaW5nPj4odGhpcy5vcHRpb25zKS53aXRoSG9tZUFuZEVuZCgpO1xuICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uQmFzZWRPbkN1cnJlbnRWYWx1ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRyb2xsZXJFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5Q29udHJvbGxlcj8ucmVhZG9ubHkpIHJldHVybjtcbiAgICB0aGlzLmtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5rZXlNYW5hZ2VyPy5hY3RpdmVJdGVtIGFzIFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQ7XG4gICAgYWN0aXZlT3B0aW9uICYmIHRoaXMuc2Nyb2xsVG9BY3RpdmVPcHRpb24oYWN0aXZlT3B0aW9uLCB7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnIHx8IGV2ZW50LmtleSA9PT0gJ1NwYWNlYmFyJykge1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNldE9wdGlvbihhY3RpdmVPcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHRpbWUpID0+IHRoaXMudXBkYXRlVmFsdWUodGltZSA/PyBudWxsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlT3B0aW9uQmFzZWRPbkN1cnJlbnRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlT3B0aW9uKGlzU2VsZWN0ZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZhdGVOZWFyZXN0VGltZU9wdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZU9wdGlvbihvcHRpb246IFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXIgJiYgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0ob3B0aW9uKTtcbiAgICB0aGlzLnNjcm9sbFRvQWN0aXZlT3B0aW9uKG9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlTmVhcmVzdFRpbWVPcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBpc05lYXJlc3QgPSB0aGlzLmZpbmROZWFyZXN0VGltZU9wdGlvbihjdXJyZW50RGF0ZSk7XG4gICAgICBpZiAoaXNOZWFyZXN0KSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVPcHRpb24oaXNOZWFyZXN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmROZWFyZXN0VGltZU9wdGlvbihjdXJyZW50RGF0ZTogRGF0ZSk6IFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGF2YWlsYWJsZVRpbWVTbG90cyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgY29uc3QgbmVhcmVzdFRpbWVWYWx1ZSA9IHRoaXMudGltZXBpY2tlclNlcnZpY2UuZmluZENsb3Nlc3REYXRlKFxuICAgICAgYXZhaWxhYmxlVGltZVNsb3RzLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpIGFzIHN0cmluZ1tdLFxuICAgICAgYCR7Y3VycmVudERhdGUuZ2V0SG91cnMoKX06JHtjdXJyZW50RGF0ZS5nZXRNaW51dGVzKCl9YCxcbiAgICApO1xuXG4gICAgcmV0dXJuIGF2YWlsYWJsZVRpbWVTbG90cy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gbmVhcmVzdFRpbWVWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5kYXRlRmllbGQpIHtcbiAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLmdldExvY2FsaXplZFRpbWVGb3JtYXQodGhpcy52YWx1ZSwgdGhpcy51c2VMb2NhbGUpO1xuICAgICAgdGhpcy5kYXRlRmllbGQubmF0aXZlRWxlbWVudFZhbHVlID0gdGltZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlT3B0aW9uKG9wdGlvbjogVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCwgX29wdHM6IFNjcm9sbEludG9WaWV3T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgaWYgKGlzRnVuY3Rpb24ob3B0aW9uLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldykpIHtcbiAgICAgIG9wdGlvbi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIC4uLl9vcHRzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0T3B0aW9uKG9wdGlvbj86IFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbiB8fCBvcHRpb24uZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB0aW1lID0gdGhpcy50aW1lcGlja2VyU2VydmljZS5nZXRMb2NhbGl6ZWRUaW1lRm9ybWF0KG9wdGlvbi5nZXRMYWJlbCgpLCB0aGlzLnVzZUxvY2FsZSk7XG4gICAgdGhpcy5kYXRlRmllbGQgJiYgKHRoaXMuZGF0ZUZpZWxkLm5hdGl2ZUVsZW1lbnRWYWx1ZSA9IHRpbWUpO1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGltZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvZHgtdGltZXBpY2tlcl9fd3JhcHBlclwiPlxuICA8aW5wdXQgW3ZhbHVlXT1cInZhbHVlXCIgb2R4VGltZXBpY2tlckNvbnRyb2wgdHlwZT1cInRleHRcIiAvPlxuPC9kaXY+XG5cbjxvZHgtYWN0aW9uLWdyb3VwIGNsYXNzPVwib2R4LXRpbWVwaWNrZXJfX3RyaWdnZXItd3JhcHBlciBvZHgtbm8tbWFyZ2luXCI+XG4gIEBpZiAoY2xlYXJhYmxlKCkgJiYgdmFsdWUpIHtcbiAgICA8YnV0dG9uIGNsYXNzPVwib2R4LXRpbWVwaWNrZXJfX2NsZWFyXCIgb2R4QnV0dG9uIHNpemU9XCJzbWFsbFwiIGFyaWEtbGFiZWw9XCJSZXNldCB0aW1lXCIgKGNsaWNrKT1cInJlc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjbG9zZVwiIGljb25TZXQ9XCJjb3JlXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICA8YnV0dG9uXG4gICAgI2Ryb3Bkb3duVHJpZ2dlclxuICAgIGNsYXNzPVwib2R4LXRpbWVwaWNrZXJfX3RyaWdnZXJcIlxuICAgIG9keEJ1dHRvblxuICAgIHNpemU9XCJzbWFsbFwiXG4gICAgdmFyaWFudD1cImdob3N0XCJcbiAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHRpbWVcIlxuICAgIFtvZHhEcm9wZG93bl09XCJ0aW1lTGlzdFwiXG4gICAgW29keERyb3Bkb3duT3B0aW9uc109XCJ7IG1hdGNoUmVmZXJlbmNlV2lkdGg6IHRydWUsIHBvc2l0aW9uOiAnYm90dG9tLXN0YXJ0JyB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50XCJcbiAgICBbb2R4RHJvcGRvd25SZWZlcmVuY2VFbGVtZW50XT1cImVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gICAgKG9keERyb3Bkb3duQmVmb3JlQ2xvc2UpPVwib25Ub3VjaGVkKClcIlxuICAgIChvZHhEcm9wZG93bkFmdGVyT3Blbik9XCJvbk9wZW4oKVwiXG4gID5cbiAgICA8b2R4LWljb24gbmFtZT1cImNoZXZyb24tZG93blwiIC8+XG4gIDwvYnV0dG9uPlxuPC9vZHgtYWN0aW9uLWdyb3VwPlxuXG48bmctdGVtcGxhdGUgI3RpbWVMaXN0PlxuICA8ZGl2IGNsYXNzPVwib2R4LXRpbWVwaWNrZXJfX29wdGlvbi1saXN0XCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICBAZm9yICh0aW1lIG9mIHRpbWVTdGFtcHNMaXN0OyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxvZHgtdGltZXBpY2tlci1vcHRpb24gW3ZhbHVlXT1cInRpbWVcIiBbZGlzYWJsZWRdPVwiIWluVGltZVJhbmdlKHRpbWUpXCIgKHNlbGVjdGVkKT1cInRpbWVTZWxlY3RlZCgkZXZlbnQpXCI+e3sgdGltZSB9fTwvb2R4LXRpbWVwaWNrZXItb3B0aW9uPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90aW1lcGlja2VyL3NyYy9saWIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90aW1lcGlja2VyL3NyYy9saWIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNFLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFD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O3VCQUFDLGlCQUFpQjtnQkFJbEIsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRTtnQkFZL0QsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFrQy9CLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBVTlCLEdBQUc7c0JBRFQsS0FBSztnQkFVQyxHQUFHO3NCQURULEtBQUs7Z0JBU0MsU0FBUztzQkFEZixTQUFTO3VCQUFDLCtCQUErQjtnQkFxRWhDLHFCQUFxQjtzQkFGOUIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUsIEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNhYmxlZENvbnRyb2xsZXIsIFJlYWRvbmx5Q29udHJvbGxlciB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDdXN0b21Gb3JtQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBPcHRpb25Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9vcHRpb24tY29udHJvbCc7XG5pbXBvcnQgeyBBY3Rpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FjdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUsIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIGlzRnVuY3Rpb24sIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGltZXBpY2tlci1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGltZXBpY2tlci1pbnB1dC1jb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUaW1lcGlja2VyU2VydmljZSB9IGZyb20gJy4vdGltZXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRJTUVQSUNLRVJfQ09OVFJPTCB9IGZyb20gJy4vdGltZXBpY2tlci50b2tlbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVRpbWVTdGFtcHMgfSBmcm9tICcuL3V0aWxzL2dlbmVyYXRlLXRpbWUtc3RhbXBzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdGltZSBwaWNrZXIgY29tcG9uZW50IGFsbG93aW5nIHVzZXJzIHRvIHNlbGVjdCBhIHRpbWUgZnJvbSBhIGRyb3Bkb3duIGxpc3QuXG4gKiBUaGlzIGNvbXBvbmVudCBpbnRlZ3JhdGVzIHdpdGggQW5ndWxhciBmb3JtcyBhbmQgc3VwcG9ydHMgY3VzdG9taXphdGlvbiBmb3IgbG9jYWxlLCB0aW1lIHJhbmdlLCBhbmQgc3RlcCBpbnRlcnZhbHMuXG4gKlxuICogQHNlZSB7Q3VzdG9tRm9ybUNvbnRyb2x9XG4gKi9cbkBDU1NDb21wb25lbnQoJ3RpbWVwaWNrZXInKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LXRpbWVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBEaXNhYmxlZENvbnRyb2xsZXIuY29ubmVjdCgpLFxuICAgIFJlYWRvbmx5Q29udHJvbGxlci5jb25uZWN0KCksXG4gICAge1xuICAgICAgcHJvdmlkZTogVElNRVBJQ0tFUl9DT05UUk9MLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZXBpY2tlckNvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBMTF5TW9kdWxlLCBBY3Rpb25Hcm91cENvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBEcm9wZG93bk1vZHVsZSwgVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgVGltZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZV0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIucmVhZG9ubHldJzogJ3JlYWRvbmx5Q29udHJvbGxlcj8ucmVhZG9ubHkgfHwgbnVsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbWVwaWNrZXJTZXJ2aWNlID0gaW5qZWN0KFRpbWVwaWNrZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfdXNlTG9jYWxlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBrZXlNYW5hZ2VyPzogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8T3B0aW9uQ29udHJvbDxzdHJpbmc+PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBAVmlld0NoaWxkKERyb3Bkb3duRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd24/OiBEcm9wZG93bkRpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkcmVuKFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQsIHsgZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6IHRydWUgfSlcbiAgcHJvdGVjdGVkIG9wdGlvbnMhOiBRdWVyeUxpc3Q8VGltZXBpY2tlck9wdGlvbkNvbXBvbmVudD47XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRpbWVwaWNrZXIgc2hvdWxkIHVzZSBsb2NhbGUtc3BlY2lmaWMgdGltZSBmb3JtYXRzIEFNL1BNLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IHVzZUxvY2FsZSh2YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmRhdGVGaWVsZCkge1xuICAgICAgY29uc3QgdGltZSA9IHRoaXMudGltZXBpY2tlclNlcnZpY2UuZ2V0TG9jYWxpemVkVGltZUZvcm1hdCh0aGlzLnZhbHVlLCB2YWwpO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aW1lKTtcbiAgICAgIHRoaXMuZGF0ZUZpZWxkLm5hdGl2ZUVsZW1lbnRWYWx1ZSA9IHRpbWU7XG4gICAgfVxuICAgIHRoaXMuX3VzZUxvY2FsZSA9IHZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGxvY2FsZSBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgbG9jYWxlIGlzIGJlaW5nIHVzZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZUxvY2FsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlTG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBzZWxlY3Qgd2lsbCBkaXNwbGF5IGEgcmVzZXQgYnV0dG9uLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBjbGVhcmFibGUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBzdGVwIGludGVydmFsIGJldHdlZW4gdGltZSBvcHRpb25zIGluIG1pbnV0ZXMuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBkZWZhdWx0IDMwXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc3RlcCA9IDMwO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gdGltZSB2YWx1ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZCAoJzA1OjAwJyBvciAnMDU6MDAgQU0nKS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJzAwOjAwJ1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pbiA9ICcwMDowMCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB0aW1lIHZhbHVlIHRoYXQgY2FuIGJlIHNlbGVjdGVkICgnMjI6MDAnIG9yICcxMDowMCBQTScpLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCAnMjM6NTknXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4ID0gJzIzOjU5JztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdGl2ZSBmb3IgdGhlIHRpbWVwaWNrZXIgaW5wdXQgY29udHJvbC5cbiAgICpcbiAgICogQHR5cGUge1RpbWVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBAVmlld0NoaWxkKFRpbWVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBkYXRlRmllbGQ/OiBUaW1lcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIHRpbWUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1RpbWVwaWNrZXJPcHRpb25Db21wb25lbnR9IG9wdGlvbiAtIFRoZSB0aW1lIG9wdGlvbiB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzVGltZU9wdGlvblNlbGVjdGVkKG9wdGlvbjogVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBvcHRpb24udmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgc2VsZWN0aW9uIG9mIGEgdGltZSBvcHRpb24gZnJvbSB0aGUgZHJvcGRvd24sIHVwZGF0aW5nIHRoZSBpbnB1dCBmaWVsZCBhbmQgY2xvc2luZyB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEBwYXJhbSB7VGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCB8IHVuZGVmaW5lZH0gb3B0aW9uIC0gVGhlIHNlbGVjdGVkIHRpbWUgb3B0aW9uIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyB0aW1lU2VsZWN0ZWQob3B0aW9uPzogVGltZXBpY2tlck9wdGlvbkNvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2V0T3B0aW9uKG9wdGlvbik7XG4gICAgdGhpcy5kcm9wZG93bj8uaXNPcGVuICYmIHRoaXMuZHJvcGRvd24/LmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgdGltZSBpcyB3aXRoaW4gdGhlIGFsbG93ZWQgdGltZSByYW5nZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpbWUgLSBUaGUgdGltZSB0byBjaGVjaywgaW4gJ0hIOm1tJyBvciAnSEg6bW0gQU0vUE0nIGZvcm1hdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHRpbWUgaXMgd2l0aGluIHRoZSByYW5nZTsgb3RoZXJ3aXNlLCBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBpblRpbWVSYW5nZSh0aW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aW1lcGlja2VyU2VydmljZS5tYXhWYWxpZGF0aW9uKHRpbWUsIHRoaXMubWF4KSAmJiB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLm1pblZhbGlkYXRpb24odGltZSwgdGhpcy5taW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgbGlzdCBvZiB0aW1lIG9wdGlvbnMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgc3RlcCBpbnRlcnZhbCBhbmQgbG9jYWxlIHNldHRpbmdzIEFNL1BNLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IEFuIGFycmF5IG9mIHRpbWUgc3RyaW5ncyBpbiAnSEg6bW0nIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdGltZVN0YW1wc0xpc3QoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBnZW5lcmF0ZVRpbWVTdGFtcHModGhpcy5zdGVwLCB0aGlzLnVzZUxvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICogUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHZhbHVlIC0gVGhlIG5ldyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHRoaXMudGltZXBpY2tlclNlcnZpY2UuaXNWYWxpZFRpbWUodmFsdWUpKSB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE9wdGlvbkNvbnRyb2w8c3RyaW5nPj4odGhpcy5vcHRpb25zKS53aXRoSG9tZUFuZEVuZCgpO1xuICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uQmFzZWRPbkN1cnJlbnRWYWx1ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRyb2xsZXJFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5Q29udHJvbGxlcj8ucmVhZG9ubHkpIHJldHVybjtcbiAgICB0aGlzLmtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5rZXlNYW5hZ2VyPy5hY3RpdmVJdGVtIGFzIFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQ7XG4gICAgYWN0aXZlT3B0aW9uICYmIHRoaXMuc2Nyb2xsVG9BY3RpdmVPcHRpb24oYWN0aXZlT3B0aW9uLCB7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnIHx8IGV2ZW50LmtleSA9PT0gJ1NwYWNlYmFyJykge1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNldE9wdGlvbihhY3RpdmVPcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHRpbWUpID0+IHRoaXMudXBkYXRlVmFsdWUodGltZSA/PyBudWxsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlT3B0aW9uQmFzZWRPbkN1cnJlbnRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlT3B0aW9uKGlzU2VsZWN0ZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2YXRlTmVhcmVzdFRpbWVPcHRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVPcHRpb24ob3B0aW9uOiBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyICYmIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG9wdGlvbik7XG4gICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU9wdGlvbihvcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZU5lYXJlc3RUaW1lT3B0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29uc3QgaXNOZWFyZXN0ID0gdGhpcy5maW5kTmVhcmVzdFRpbWVPcHRpb24oY3VycmVudERhdGUpO1xuICAgICAgaWYgKGlzTmVhcmVzdCkge1xuICAgICAgICB0aGlzLmFjdGl2YXRlT3B0aW9uKGlzTmVhcmVzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmVhcmVzdFRpbWVPcHRpb24oY3VycmVudERhdGU6IERhdGUpOiBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhdmFpbGFibGVUaW1lU2xvdHMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpO1xuICAgIGNvbnN0IG5lYXJlc3RUaW1lVmFsdWUgPSB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLmZpbmRDbG9zZXN0RGF0ZShcbiAgICAgIGF2YWlsYWJsZVRpbWVTbG90cy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKSBhcyBzdHJpbmdbXSxcbiAgICAgIGAke2N1cnJlbnREYXRlLmdldEhvdXJzKCl9OiR7Y3VycmVudERhdGUuZ2V0TWludXRlcygpfWAsXG4gICAgKTtcblxuICAgIHJldHVybiBhdmFpbGFibGVUaW1lU2xvdHMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IG5lYXJlc3RUaW1lVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRlRmllbGQpIHJldHVybjtcbiAgICB0aGlzLmRhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSB0aGlzLnRpbWVwaWNrZXJTZXJ2aWNlLmdldExvY2FsaXplZFRpbWVGb3JtYXQodGhpcy52YWx1ZSwgdGhpcy51c2VMb2NhbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZU9wdGlvbihvcHRpb246IFRpbWVwaWNrZXJPcHRpb25Db21wb25lbnQsIF9vcHRzOiBTY3JvbGxJbnRvVmlld09wdGlvbnMgPSB7fSk6IHZvaWQge1xuICAgIGlmIChpc0Z1bmN0aW9uKG9wdGlvbi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcpKSB7XG4gICAgICBvcHRpb24uZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInLCAuLi5fb3B0cyB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE9wdGlvbihvcHRpb24/OiBUaW1lcGlja2VyT3B0aW9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb24gfHwgb3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG4gICAgY29uc3QgdGltZSA9IHRoaXMudGltZXBpY2tlclNlcnZpY2UuZ2V0TG9jYWxpemVkVGltZUZvcm1hdChvcHRpb24uZ2V0TGFiZWwoKSwgdGhpcy51c2VMb2NhbGUpO1xuICAgIHRoaXMuZGF0ZUZpZWxkICYmICh0aGlzLmRhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSB0aW1lKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRpbWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2R4LXRpbWVwaWNrZXJfX3dyYXBwZXJcIj5cbiAgPGlucHV0IFt2YWx1ZV09XCJ2YWx1ZVwiIG9keFRpbWVwaWNrZXJDb250cm9sIHR5cGU9XCJ0ZXh0XCIgLz5cbjwvZGl2PlxuXG48b2R4LWFjdGlvbi1ncm91cCBjbGFzcz1cIm9keC10aW1lcGlja2VyX190cmlnZ2VyLXdyYXBwZXIgb2R4LW5vLW1hcmdpblwiPlxuICBAaWYgKGNsZWFyYWJsZSgpICYmIHZhbHVlKSB7XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9keC10aW1lcGlja2VyX19jbGVhclwiIG9keEJ1dHRvbiBzaXplPVwic21hbGxcIiBhcmlhLWxhYmVsPVwiUmVzZXQgdGltZVwiIChjbGljayk9XCJyZXNldFZhbHVlKCRldmVudClcIj5cbiAgICAgIDxvZHgtaWNvbiBuYW1lPVwiY2xvc2VcIiBpY29uU2V0PVwiY29yZVwiIC8+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPGJ1dHRvblxuICAgICNkcm9wZG93blRyaWdnZXJcbiAgICBjbGFzcz1cIm9keC10aW1lcGlja2VyX190cmlnZ2VyXCJcbiAgICBvZHhCdXR0b25cbiAgICBzaXplPVwic21hbGxcIlxuICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgYXJpYS1sYWJlbD1cIlNlbGVjdCB0aW1lXCJcbiAgICBbb2R4RHJvcGRvd25dPVwidGltZUxpc3RcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBtYXRjaFJlZmVyZW5jZVdpZHRoOiB0cnVlLCBwb3NpdGlvbjogJ2JvdHRvbS1zdGFydCcgfVwiXG4gICAgW29keERyb3Bkb3duVHJpZ2dlckVsZW1lbnRdPVwiZHJvcGRvd25UcmlnZ2VyLmVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAob2R4RHJvcGRvd25BZnRlck9wZW4pPVwib25PcGVuKClcIlxuICA+XG4gICAgPG9keC1pY29uIG5hbWU9XCJjaGV2cm9uLWRvd25cIiAvPlxuICA8L2J1dHRvbj5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICN0aW1lTGlzdD5cbiAgPGRpdiBjbGFzcz1cIm9keC10aW1lcGlja2VyX19vcHRpb24tbGlzdFwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgQGZvciAodGltZSBvZiB0aW1lU3RhbXBzTGlzdDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8b2R4LXRpbWVwaWNrZXItb3B0aW9uIFt2YWx1ZV09XCJ0aW1lXCIgW2Rpc2FibGVkXT1cIiFpblRpbWVSYW5nZSh0aW1lKVwiIChzZWxlY3RlZCk9XCJ0aW1lU2VsZWN0ZWQoJGV2ZW50KVwiPnt7IHRpbWUgfX08L29keC10aW1lcGlja2VyLW9wdGlvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==