ecabs-components 1.1.30 → 1.1.32

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.
package/README.md CHANGED
@@ -23,68 +23,72 @@ Run `ng test ecabs-components` to execute the unit tests via [Karma](https://kar
23
23
 
24
24
  To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
25
25
 
26
- v1.0.13 Fixed emitEvent behaviour of checkbox
27
- v1.0.18 — Fixed width of date time picker
28
- v1.0.75Upgrade `EcabsButtons` module to `MDC` styling.
29
- v1.0.76Upgrade `EcabsInput` module to `MDC` styling.
30
- v1.0.77 — Upgrade `MatChips` to `MDC`.
31
- v1.0.78 — Upgrade `MatSelect` to `MDC`.
32
- v1.0.79feat(CU-11266): Update `MatDialog` to `MDC`.
26
+ ## Version History
27
+
28
+ - **v1.0.13**Fixed emitEvent behaviour of checkbox
29
+ - **v1.0.18**Fixed width of date time picker
30
+ - **v1.0.75** — Upgrade `EcabsButtons` module to `MDC` styling.
31
+ - **v1.0.76** — Upgrade `EcabsInput` module to `MDC` styling.
32
+ - **v1.0.77**Upgrade `MatChips` to `MDC`.
33
+ - **v1.0.78** — Upgrade `MatSelect` to `MDC`.
34
+ - **v1.0.79** — feat(CU-11266): Update `MatDialog` to `MDC`.
33
35
  - Fix button height issue on anchor tags marked as `mat-button`.
34
36
  - Update default font family.
35
37
  - Rename `NoteComponent` to `EcabsNoteComponent`.
36
38
  - Add `expired` style for `EcabsChip`.
37
- v1.0.80 — Allow custom button options for `Confirm` and `Cancel` buttons on `EcabsDialog`.
38
- v1.0.81 — Fix font size of `EcabsSelect`.
39
- v1.0.82 — Improve the appearance of disabled inputs.
39
+ - **v1.0.80** — Allow custom button options for `Confirm` and `Cancel` buttons on `EcabsDialog`.
40
+ - **v1.0.81** — Fix font size of `EcabsSelect`.
41
+ - **v1.0.82** — Improve the appearance of disabled inputs.
40
42
  - Fix placeholder text of `EcabsSelect`.
41
- v1.0.83 — Fix buttons height.
42
- v1.0.84 — Emit `falsey` result when Close button is clicked on `EcabsDialogConfirm` and `EcabsDialogMessage`.
43
- v1.0.85 — Improve styling for `EcabsTable` row colors.
44
- v1.0.87 — Apply min/max Date logic for date picker
45
- v1.0.88 — Roll back 1.0.87
46
- v1.0.89 — Upgrade `MatLegacyTable` and `MatLegacyProgress` to `MDC`.
47
- v1.0.90 — Upgrade `MatLegacyPaginator` to `MDC`.
43
+ - **v1.0.83** — Fix buttons height.
44
+ - **v1.0.84** — Emit `falsey` result when Close button is clicked on `EcabsDialogConfirm` and `EcabsDialogMessage`.
45
+ - **v1.0.85** — Improve styling for `EcabsTable` row colors.
46
+ - **v1.0.87** — Apply min/max Date logic for date picker
47
+ - **v1.0.88** — Roll back 1.0.87
48
+ - **v1.0.89** — Upgrade `MatLegacyTable` and `MatLegacyProgress` to `MDC`.
49
+ - **v1.0.90** — Upgrade `MatLegacyPaginator` to `MDC`.
48
50
  - Add `EcabsPaginatorDirective`.
49
51
  - Rename `AppHint` to `EcabsHint`.
50
52
  - Apply `ngx-toaster` overrides.
51
- v1.0.91 — Upgrade `MatLegacyCheckbox` and `MatSlideToggle` to `MDC`.
52
- v1.0.92 — Add default buttons for Confirm and Cancel buttons on dialog.
53
- v1.0.93 — Update progress colors for percentage.
54
- v1.0.94 — Upgrade `MatLegacyTabs` to `MDC`.
55
- v1.0.95 — Upgrade `MatLegacyTooltip` to `MDC`.
56
- v1.0.96 — Add missing styles for nested columns on `Table`.
57
- v1.0.97 — Correct misaligned icon and text on `EcabsNotes`.
58
- v1.0.98 — Upgrade `MatLegacyAutocomplete` to `MDC`.
59
- v1.0.99 — Add `mini` and `maxi` directive and validators to `EcabsInput`.
60
- v1.1.0 — Upgrade `MatLegacyMenu` to `MDC`.
61
- v1.1.1 — Hide `Timepicker` options on input blur.
62
- v1.1.2 — Introduce new select component (`EcabsSelectV2`) to deprecate `EcabsSelect`.
63
- v1.1.3 — Upgrade `MatLegacyCard` to `MDC`.
64
- v1.1.4 — Fixed blur issue for input.
65
- v1.1.5 — added slider
66
- v1.1.6 — accumulate all directives
67
- v1.1.7 — Add a message for alphanumeric-only validation.
68
- v1.1.8 — Add directive show-on-truncated to directives.
69
- v1.1.9 — Fixed i18n issue.
70
- v1.1.10 — Added color styles for prompt title message.
71
- v1.1.12 — Extend @Input properties of `EcabsSelectV2` from `@ng-select` lib.
72
- v1.1.13 — Fix `overflow-y` issue on `MatCardContent`.
73
- v1.1.14 — Update styles for disabled indeterminate checkboxes.
74
- v1.1.15 — Cleanup `EcabsComponentsService` and provide default config via `config` property.
75
- v1.1.16 — Implemented custom phone number control.
76
- v1.1.17 — Fix peerDependency on `libphonenumber-js`.
77
- v1.1.18 — Adjust position of `sticky` header on `MatTable`.
78
- v1.1.19 — Increase delay for phone control and to config.
79
- v1.1.20 — Improve the appearance for the scrollbar.
80
- v1.1.21 — Improve style for hovered disabled calendar date.
81
- v1.1.22 — Added statuses for mat-chips.
53
+ - **v1.0.91** — Upgrade `MatLegacyCheckbox` and `MatSlideToggle` to `MDC`.
54
+ - **v1.0.92** — Add default buttons for Confirm and Cancel buttons on dialog.
55
+ - **v1.0.93** — Update progress colors for percentage.
56
+ - **v1.0.94** — Upgrade `MatLegacyTabs` to `MDC`.
57
+ - **v1.0.95** — Upgrade `MatLegacyTooltip` to `MDC`.
58
+ - **v1.0.96** — Add missing styles for nested columns on `Table`.
59
+ - **v1.0.97** — Correct misaligned icon and text on `EcabsNotes`.
60
+ - **v1.0.98** — Upgrade `MatLegacyAutocomplete` to `MDC`.
61
+ - **v1.0.99** — Add `mini` and `maxi` directive and validators to `EcabsInput`.
62
+ - **v1.1.0** — Upgrade `MatLegacyMenu` to `MDC`.
63
+ - **v1.1.1** — Hide `Timepicker` options on input blur.
64
+ - **v1.1.2** — Introduce new select component (`EcabsSelectV2`) to deprecate `EcabsSelect`.
65
+ - **v1.1.3** — Upgrade `MatLegacyCard` to `MDC`.
66
+ - **v1.1.4** — Fixed blur issue for input.
67
+ - **v1.1.5** — added slider
68
+ - **v1.1.6** — accumulate all directives
69
+ - **v1.1.7** — Add a message for alphanumeric-only validation.
70
+ - **v1.1.8** — Add directive show-on-truncated to directives.
71
+ - **v1.1.9** — Fixed i18n issue.
72
+ - **v1.1.10** — Added color styles for prompt title message.
73
+ - **v1.1.12** — Extend @Input properties of `EcabsSelectV2` from `@ng-select` lib.
74
+ - **v1.1.13** — Fix `overflow-y` issue on `MatCardContent`.
75
+ - **v1.1.14** — Update styles for disabled indeterminate checkboxes.
76
+ - **v1.1.15** — Cleanup `EcabsComponentsService` and provide default config via `config` property.
77
+ - **v1.1.16** — Implemented custom phone number control.
78
+ - **v1.1.17** — Fix peerDependency on `libphonenumber-js`.
79
+ - **v1.1.18** — Adjust position of `sticky` header on `MatTable`.
80
+ - **v1.1.19** — Increase delay for phone control and to config.
81
+ - **v1.1.20** — Improve the appearance for the scrollbar.
82
+ - **v1.1.21** — Improve style for hovered disabled calendar date.
83
+ - **v1.1.22** — Added statuses for mat-chips.
82
84
  - Added badges for menu items.
83
- v1.1.23 — Update styling for map markers.
84
- v1.1.24 — Fixed date range picker when reset value.
85
- v1.1.25 — Fixed date range picker when choose one date only.
86
- v1.1.26 — Implement dynamic titles for `EcabsDialogComponent`.
87
- v1.1.27 — Added results for the dialog message.
88
- v1.1.28 — Fixed issue related to the prev version.
89
- v1.1.29 — Added handling manual updates data of date range picker.
90
- v1.1.30 — Added blur event handling and support for special keys in `EcabsTimePickerComponent`.
85
+ - **v1.1.23** — Update styling for map markers.
86
+ - **v1.1.24** — Fixed date range picker when reset value.
87
+ - **v1.1.25** — Fixed date range picker when choose one date only.
88
+ - **v1.1.26** — Implement dynamic titles for `EcabsDialogComponent`.
89
+ - **v1.1.27** — Added results for the dialog message.
90
+ - **v1.1.28** — Fixed issue related to the prev version.
91
+ - **v1.1.29** — Added handling manual updates data of date range picker.
92
+ - **v1.1.30** — Added blur event handling and support for special keys in `EcabsTimePickerComponent`.
93
+ - **v1.1.31** — Prevent hover state persistence on disabled buttons.
94
+ - **v1.1.32** — Return falsey value when no input is available in `DateTime` selector.
@@ -1,7 +1,7 @@
1
1
  import { format, isValid, parse, setHours, setMinutes, setSeconds, } from 'date-fns';
2
2
  import { takeUntil } from 'rxjs';
3
3
  import { DecimalPipe } from '@angular/common';
4
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
4
+ import { Component, forwardRef, Input, } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR, NgControl, } from '@angular/forms';
6
6
  import EcabsElementBaseComponent from '../base/element-base';
7
7
  import { UnsubscribeService } from '../base/services/unsubscribe.service';
@@ -32,7 +32,6 @@ export class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
32
32
  cancelLabel;
33
33
  applyLabel;
34
34
  applyMinDateAuto = true;
35
- onblur = new EventEmitter();
36
35
  _hours = '12';
37
36
  _minutes = '00';
38
37
  _seconds = '00';
@@ -84,33 +83,36 @@ export class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
84
83
  }
85
84
  }
86
85
  set pickerValue(val) {
87
- if (val) {
88
- const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
89
- if (isValid(date) && this._pickerValue !== val) {
90
- if (this.minDate && date < this.minDate && this.applyMinDateAuto) {
91
- this.setValues(this.minDate);
92
- this._pickerValue = val;
93
- this.preventCallSetterPickerValue = true;
94
- this.value = this.minDate;
95
- this.runTimeout = true;
96
- this.refreshPickerValue(this.minDate);
97
- return;
98
- }
99
- if (this.maxDate && date > this.maxDate) {
100
- this.setValues(this.maxDate);
101
- this._pickerValue = val;
102
- this.preventCallSetterPickerValue = true;
103
- this.value = this.maxDate;
104
- this.runTimeout = true;
105
- this.refreshPickerValue(this.maxDate);
106
- return;
107
- }
108
- this.runTimeout = false;
86
+ if (!val) {
87
+ this.value = undefined;
88
+ this.setValues(undefined);
89
+ return;
90
+ }
91
+ const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
92
+ if (isValid(date) && this._pickerValue !== val) {
93
+ if (this.minDate && date < this.minDate && this.applyMinDateAuto) {
94
+ this.setValues(this.minDate);
109
95
  this._pickerValue = val;
110
96
  this.preventCallSetterPickerValue = true;
111
- this.value = date;
112
- this.setValues(date);
97
+ this.value = this.minDate;
98
+ this.runTimeout = true;
99
+ this.refreshPickerValue(this.minDate);
100
+ return;
113
101
  }
102
+ if (this.maxDate && date > this.maxDate) {
103
+ this.setValues(this.maxDate);
104
+ this._pickerValue = val;
105
+ this.preventCallSetterPickerValue = true;
106
+ this.value = this.maxDate;
107
+ this.runTimeout = true;
108
+ this.refreshPickerValue(this.maxDate);
109
+ return;
110
+ }
111
+ this.runTimeout = false;
112
+ this._pickerValue = val;
113
+ this.preventCallSetterPickerValue = true;
114
+ this.value = date;
115
+ this.setValues(date);
114
116
  }
115
117
  }
116
118
  constructor(injector, decimalPipe, cd, ecabsDatePickerHeaderService, unsubscribeService) {
@@ -150,13 +152,9 @@ export class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
150
152
  registerOnTouched(fn) {
151
153
  this.onTouch = fn;
152
154
  }
153
- blurChange(e) {
154
- this.onblur.emit(e);
155
- }
156
155
  onApply() {
157
156
  if (this._date && this._seconds && this._minutes && this._hours) {
158
- const date = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
159
- this.value = date;
157
+ this.value = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
160
158
  }
161
159
  }
162
160
  refreshPickerValue(date) {
@@ -190,10 +188,10 @@ export class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
190
188
  }
191
189
  }
192
190
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }, { token: i2.EcabsDatePickerHeaderService }, { token: i3.UnsubscribeService }], target: i0.ɵɵFactoryTarget.Component });
193
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancelLabel: "cancelLabel", applyLabel: "applyLabel", applyMinDateAuto: "applyMinDateAuto" }, outputs: { onblur: "onblur" }, providers: [
191
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancelLabel: "cancelLabel", applyLabel: "applyLabel", applyMinDateAuto: "applyMinDateAuto" }, providers: [
194
192
  {
195
193
  provide: NG_VALUE_ACCESSOR,
196
- useExisting: EcabsDateTimePickerComponent,
194
+ useExisting: forwardRef(() => EcabsDateTimePickerComponent),
197
195
  multi: true,
198
196
  },
199
197
  DecimalPipe,
@@ -205,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
205
203
  args: [{ selector: 'ecabs-date-time-picker', providers: [
206
204
  {
207
205
  provide: NG_VALUE_ACCESSOR,
208
- useExisting: EcabsDateTimePickerComponent,
206
+ useExisting: forwardRef(() => EcabsDateTimePickerComponent),
209
207
  multi: true,
210
208
  },
211
209
  DecimalPipe,
@@ -225,7 +223,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
225
223
  type: Input
226
224
  }], applyMinDateAuto: [{
227
225
  type: Input
228
- }], onblur: [{
229
- type: Output
230
226
  }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsS0FBSyxFQUNMLFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxHQUNYLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEdBRVYsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLHlCQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBRzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWdCeEksTUFBTSxPQUFPLDRCQUNYLFNBQVEseUJBQXlCO0lBa0hkO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuSFYsT0FBTyxDQUFPO0lBQ2QsT0FBTyxDQUFPO0lBQ2QsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixXQUFXLEdB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LFNBQVM7K0JBQ0Usd0JBQXdCLGFBR3ZCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsOEJBQThCOzRCQUN6QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxXQUFXO3dCQUNYLGtCQUFrQjtxQkFDbkI7cU9BTVEsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgZm9ybWF0LFxyXG4gIGlzVmFsaWQsXHJcbiAgcGFyc2UsXHJcbiAgc2V0SG91cnMsXHJcbiAgc2V0TWludXRlcyxcclxuICBzZXRTZWNvbmRzLFxyXG59IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7IEVjYWJzRGF0ZVBpY2tlclRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL2VjYWJzLWRhdGUtcGlja2VyLXRyYW5zbGF0aW9ucy5tb2RlbHMnO1xyXG5pbXBvcnQgeyBFY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS9zZXJ2aWNlcy9lY2Ficy1kYXRlLXBpY2tlci10cmFuc2xhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IFVuc3Vic2NyaWJlU2VydmljZSB9IGZyb20gJy4uL2Jhc2Uvc2VydmljZXMvdW5zdWJzY3JpYmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVjYWJzRGF0ZVRpbWVQaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci1oZWFkZXIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtZGF0ZS10aW1lLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic0RhdGVUaW1lUGlja2VyQ29tcG9uZW50LFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBEZWNpbWFsUGlwZSxcclxuICAgIFVuc3Vic2NyaWJlU2VydmljZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNEYXRlVGltZVBpY2tlckNvbXBvbmVudFxyXG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZTtcclxuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlO1xyXG4gIEBJbnB1dCgpIHRvdWNoVWkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlU2Vjb25kcyA9IHRydWU7XHJcbiAgQElucHV0KCkgY2FuY2VsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBseUxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBwbHlNaW5EYXRlQXV0byA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgX2hvdXJzID0gJzEyJztcclxuICBfbWludXRlcyA9ICcwMCc7XHJcbiAgX3NlY29uZHMgPSAnMDAnO1xyXG4gIF9kYXRlOiBEYXRlO1xyXG4gIF9waWNrZXJWYWx1ZTogc3RyaW5nO1xyXG4gIHZhbDogRGF0ZTtcclxuICBoZWFkZXIgPSBFY2Fic0RhdGVUaW1lUGlja2VySGVhZGVyQ29tcG9uZW50O1xyXG4gIG1heFZhbHVlSG91cnMgPSAyMztcclxuICBtYXhWYWx1ZU1pbnV0ZXNTZWNvbmRzID0gNTk7XHJcbiAgcHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IGZhbHNlO1xyXG4gIHJ1blRpbWVvdXQgPSBmYWxzZTtcclxuICB0cmFuc2xhdGlvbkNvbmZpZzogRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICBnZXQgdmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWw7XHJcbiAgfVxyXG5cclxuICBnZXQgcGlja2VyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNrZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBob3VycygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hvdXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbnV0ZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9taW51dGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlY29uZHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGhvdXJzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2hvdXJzICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9ob3VycyA9IHRoaXMucm91bmROdW1iZXIoK3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCBtaW51dGVzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX21pbnV0ZXMgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX21pbnV0ZXMgPSB0aGlzLnJvdW5kTnVtYmVyKCt2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgc2Vjb25kcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9zZWNvbmRzICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9zZWNvbmRzID0gdGhpcy5yb3VuZE51bWJlcigrdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKHZhbCkge1xyXG4gICAgaWYgKHZhbCAmJiB0aGlzLnZhbD8uZ2V0VGltZSgpICE9PSBuZXcgRGF0ZSh2YWwpLmdldFRpbWUoKSkge1xyXG4gICAgICBpZiAoIXRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMucGlja2VyVmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lKHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmV2ZW50Q2FsbFNldHRlclBpY2tlclZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgcGlja2VyVmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IHBhcnNlKFxyXG4gICAgICAgIHZhbC5yZXBsYWNlKCdfJywgJycpLFxyXG4gICAgICAgIHRoaXMuaGlkZVNlY29uZHMgPyBgZGQvTU0veXl5eSwgSEg6bW1gIDogYGRkL01NL3l5eXksIEhIOm1tOnNzYCxcclxuICAgICAgICBuZXcgRGF0ZSgpLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGlzVmFsaWQoZGF0ZSkgJiYgdGhpcy5fcGlja2VyVmFsdWUgIT09IHZhbCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSAmJiB0aGlzLmFwcGx5TWluRGF0ZUF1dG8pIHtcclxuICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKHRoaXMubWluRGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLl9waWNrZXJWYWx1ZSA9IHZhbDtcclxuICAgICAgICAgIHRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW5EYXRlO1xyXG4gICAgICAgICAgdGhpcy5ydW5UaW1lb3V0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFBpY2tlclZhbHVlKHRoaXMubWluRGF0ZSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXRlID4gdGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFZhbHVlcyh0aGlzLm1heERhdGUpO1xyXG4gICAgICAgICAgdGhpcy5fcGlja2VyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICB0aGlzLnByZXZlbnRDYWxsU2V0dGVyUGlja2VyVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4RGF0ZTtcclxuICAgICAgICAgIHRoaXMucnVuVGltZW91dCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hQaWNrZXJWYWx1ZSh0aGlzLm1heERhdGUpO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucnVuVGltZW91dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclZhbHVlID0gdmFsO1xyXG4gICAgICAgIHRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZXMoZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlOiBFY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZVNlcnZpY2U6IFVuc3Vic2NyaWJlU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWNhYnNEYXRlUGlja2VySGVhZGVyU2VydmljZVxyXG4gICAgICAuZ2V0Q29uZmlnKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVTZXJ2aWNlLnN1YnNjcmlwdGlvbigpKSlcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiAodGhpcy50cmFuc2xhdGlvbkNvbmZpZyA9IGNvbmZpZykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBjb250cm9sRGF0ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRyb2xEYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFZhbHVlcyhjb250cm9sRGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIGJsdXJDaGFuZ2UoZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uYmx1ci5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kYXRlICYmIHRoaXMuX3NlY29uZHMgJiYgdGhpcy5fbWludXRlcyAmJiB0aGlzLl9ob3Vycykge1xyXG4gICAgICBjb25zdCBkYXRlID0gc2V0U2Vjb25kcyhcclxuICAgICAgICBzZXRNaW51dGVzKFxyXG4gICAgICAgICAgc2V0SG91cnMobmV3IERhdGUodGhpcy5fZGF0ZSksICt0aGlzLl9ob3VycyksXHJcbiAgICAgICAgICArdGhpcy5fbWludXRlcyxcclxuICAgICAgICApLFxyXG4gICAgICAgICt0aGlzLl9zZWNvbmRzLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnZhbHVlID0gZGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2hQaWNrZXJWYWx1ZShkYXRlOiBEYXRlKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucnVuVGltZW91dCkge1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclZhbHVlID0gdGhpcy5mb3JtYXREYXRlVGltZShkYXRlKTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMzAwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGlmIChkYXRlICYmIGlzVmFsaWQobmV3IERhdGUoZGF0ZSkpKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaGlkZVNlY29uZHNcclxuICAgICAgICA/IGZvcm1hdChuZXcgRGF0ZShkYXRlKSwgYGRkL01NL3l5eXksIEhIOm1tYClcclxuICAgICAgICA6IGZvcm1hdChuZXcgRGF0ZShkYXRlKSwgYGRkL01NL3l5eXksIEhIOm1tOnNzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcm91bmROdW1iZXIobnVtOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShudW0sICcyLjAtMCcpID8/ICcwMCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlcyhkYXRlOiBEYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xyXG4gICAgdGhpcy5vblRvdWNoKGRhdGUpO1xyXG4gICAgdGhpcy5fZGF0ZSA9IGRhdGU7XHJcblxyXG4gICAgaWYgKGRhdGUgJiYgaXNWYWxpZChkYXRlKSkge1xyXG4gICAgICB0aGlzLmhvdXJzID0gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMubWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS13cmFwcGVyIHctZnVsbFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZmFrZS1pbnB1dFwiXHJcbiAgICAgIFtpZF09XCJfZGF0ZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiX2RhdGVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICBbbWF4XT1cIm1heERhdGVcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgLz5cclxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJoZWFkZXJcIiBbdG91Y2hVaV09XCJ0b3VjaFVpXCIgY2xhc3M9XCJkYXRlcGlja2VyLXVpXCI+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS0taW5wdXRzXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdGltZVwiXHJcbiAgICAgICAgICAgICAgZWNhYnNEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgZWNhYnNOdW1iZXJCb3JkZXJcclxuICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaG91cnNcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJfaG91cnNcIlxyXG4gICAgICAgICAgICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZUhvdXJzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhvdXJzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHRpbWVcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJtaW51dGVzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgIGVjYWJzRGlnaXRzT25seVxyXG4gICAgICAgICAgICAgIGVjYWJzTnVtYmVyQm9yZGVyXHJcbiAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW21heFZhbHVlXT1cIm1heFZhbHVlTWludXRlc1NlY29uZHNcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdGltZVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwic2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZHNcIlxyXG4gICAgICAgICAgICAgICAgZWNhYnNEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgICBlY2Fic051bWJlckJvcmRlclxyXG4gICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbbWF4VmFsdWVdPVwibWF4VmFsdWVNaW51dGVzU2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZWNhYnMtZGF0ZS1waWNrZXItYWN0aW9ucyBbYXBwbHlMYWJlbF09XCJhcHBseUxhYmVsID8/IHRyYW5zbGF0aW9uQ29uZmlnPy5hcHBseUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCJjYW5jZWxMYWJlbCA/PyB0cmFuc2xhdGlvbkNvbmZpZz8uY2FuY2VsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cIm9uQXBwbHkoKVwiPlxyXG4gICAgICAgICAgPC9lY2Ficy1kYXRlLXBpY2tlci1hY3Rpb25zPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XHJcbiAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdy1mdWxsIGRhdGUtaW5wdXRcIlxyXG4gICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGlja2VyVmFsdWVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBlY2Fic01hc2tEYXRlXHJcbiAgICAgIFtpc0RhdGVUaW1lTWFza109XCJ0cnVlXCJcclxuICAgICAgW2NvbnNpZGVyU2Vjb25kc109XCIhaGlkZVNlY29uZHNcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgLz5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiZGF0ZXBpY2tlci11aV9fdG9nZ2xlIHRleHQtZ3JheS01MDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtZGF0ZS10aW1lLXBpY2tlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kYXRlLXRpbWUtcGlja2VyL2VjYWJzLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBbUMsU0FBUyxFQUFFLFVBQVUsRUFBWSxLQUFLLEdBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxTQUFTLEdBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkcsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsa0NBQWtDLEVBQ25DLE1BQU0sb0ZBQW9GLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZ0I1RixNQUFNLE9BQU8sNEJBQ1gsU0FBUSx5QkFBeUI7SUFxSGQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXRIVixPQUFPLENBQU87SUFDZCxPQUFPLENBQU87SUFDZCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFdBQVcsR0FBRyxJQUFJ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RUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxXQUFXO3dCQUNYLGtCQUFrQjtxQkFDbkI7cU9BTVEsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXQsIGlzVmFsaWQsIHBhcnNlLCBzZXRIb3Vycywgc2V0TWludXRlcywgc2V0U2Vjb25kcyx9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtEZWNpbWFsUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7RWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zfSBmcm9tICcuLi9iYXNlL21vZGVscy9lY2Ficy1kYXRlLXBpY2tlci10cmFuc2xhdGlvbnMubW9kZWxzJztcclxuaW1wb3J0IHtFY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlfSBmcm9tICcuLi9iYXNlL3NlcnZpY2VzL2VjYWJzLWRhdGUtcGlja2VyLXRyYW5zbGF0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtVbnN1YnNjcmliZVNlcnZpY2V9IGZyb20gJy4uL2Jhc2Uvc2VydmljZXMvdW5zdWJzY3JpYmUuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRWNhYnNEYXRlVGltZVBpY2tlckhlYWRlckNvbXBvbmVudFxyXG59IGZyb20gJy4vY29tcG9uZW50cy9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLWhlYWRlci9lY2Ficy1kYXRlLXRpbWUtcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1kYXRlLXRpbWUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWNhYnNEYXRlVGltZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIERlY2ltYWxQaXBlLFxyXG4gICAgVW5zdWJzY3JpYmVTZXJ2aWNlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic0RhdGVUaW1lUGlja2VyQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBFY2Fic0VsZW1lbnRCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0XHJcbntcclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XHJcbiAgQElucHV0KCkgdG91Y2hVaSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTZWNvbmRzID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5jZWxMYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwcGx5TGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBhcHBseU1pbkRhdGVBdXRvID0gdHJ1ZTtcclxuXHJcbiAgX2hvdXJzID0gJzEyJztcclxuICBfbWludXRlcyA9ICcwMCc7XHJcbiAgX3NlY29uZHMgPSAnMDAnO1xyXG4gIF9kYXRlOiBEYXRlO1xyXG4gIF9waWNrZXJWYWx1ZTogc3RyaW5nO1xyXG4gIHZhbDogRGF0ZTtcclxuICBoZWFkZXIgPSBFY2Fic0RhdGVUaW1lUGlja2VySGVhZGVyQ29tcG9uZW50O1xyXG4gIG1heFZhbHVlSG91cnMgPSAyMztcclxuICBtYXhWYWx1ZU1pbnV0ZXNTZWNvbmRzID0gNTk7XHJcbiAgcHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IGZhbHNlO1xyXG4gIHJ1blRpbWVvdXQgPSBmYWxzZTtcclxuICB0cmFuc2xhdGlvbkNvbmZpZzogRWNhYnNEYXRlUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICBnZXQgdmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWw7XHJcbiAgfVxyXG5cclxuICBnZXQgcGlja2VyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNrZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBob3VycygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hvdXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbnV0ZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9taW51dGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlY29uZHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGhvdXJzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2hvdXJzICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9ob3VycyA9IHRoaXMucm91bmROdW1iZXIoK3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldCBtaW51dGVzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX21pbnV0ZXMgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX21pbnV0ZXMgPSB0aGlzLnJvdW5kTnVtYmVyKCt2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgc2Vjb25kcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9zZWNvbmRzICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9zZWNvbmRzID0gdGhpcy5yb3VuZE51bWJlcigrdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKHZhbCkge1xyXG4gICAgaWYgKHZhbCAmJiB0aGlzLnZhbD8uZ2V0VGltZSgpICE9PSBuZXcgRGF0ZSh2YWwpLmdldFRpbWUoKSkge1xyXG4gICAgICBpZiAoIXRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMucGlja2VyVmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lKHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmV2ZW50Q2FsbFNldHRlclBpY2tlclZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgcGlja2VyVmFsdWUodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVzKHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IHBhcnNlKFxyXG4gICAgICB2YWwucmVwbGFjZSgnXycsICcnKSxcclxuICAgICAgdGhpcy5oaWRlU2Vjb25kcyA/IGBkZC9NTS95eXl5LCBISDptbWAgOiBgZGQvTU0veXl5eSwgSEg6bW06c3NgLFxyXG4gICAgICBuZXcgRGF0ZSgpLFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZChkYXRlKSAmJiB0aGlzLl9waWNrZXJWYWx1ZSAhPT0gdmFsKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSAmJiB0aGlzLmFwcGx5TWluRGF0ZUF1dG8pIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlcyh0aGlzLm1pbkRhdGUpO1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclZhbHVlID0gdmFsO1xyXG4gICAgICAgIHRoaXMucHJldmVudENhbGxTZXR0ZXJQaWNrZXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluRGF0ZTtcclxuICAgICAgICB0aGlzLnJ1blRpbWVvdXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFBpY2tlclZhbHVlKHRoaXMubWluRGF0ZSk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXRlID4gdGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZXModGhpcy5tYXhEYXRlKTtcclxuICAgICAgICB0aGlzLl9waWNrZXJWYWx1ZSA9IHZhbDtcclxuICAgICAgICB0aGlzLnByZXZlbnRDYWxsU2V0dGVyUGlja2VyVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heERhdGU7XHJcbiAgICAgICAgdGhpcy5ydW5UaW1lb3V0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hQaWNrZXJWYWx1ZSh0aGlzLm1heERhdGUpO1xyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucnVuVGltZW91dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9waWNrZXJWYWx1ZSA9IHZhbDtcclxuICAgICAgdGhpcy5wcmV2ZW50Q2FsbFNldHRlclBpY2tlclZhbHVlID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVzKGRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2U6IEVjYWJzRGF0ZVBpY2tlckhlYWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlU2VydmljZTogVW5zdWJzY3JpYmVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lY2Fic0RhdGVQaWNrZXJIZWFkZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb25maWcoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZVNlcnZpY2Uuc3Vic2NyaXB0aW9uKCkpKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWcpID0+ICh0aGlzLnRyYW5zbGF0aW9uQ29uZmlnID0gY29uZmlnKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xEYXRlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoY29udHJvbERhdGUpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKGNvbnRyb2xEYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIG9uQXBwbHkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZGF0ZSAmJiB0aGlzLl9zZWNvbmRzICYmIHRoaXMuX21pbnV0ZXMgJiYgdGhpcy5faG91cnMpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHNldFNlY29uZHMoXHJcbiAgICAgICAgc2V0TWludXRlcyhcclxuICAgICAgICAgIHNldEhvdXJzKG5ldyBEYXRlKHRoaXMuX2RhdGUpLCArdGhpcy5faG91cnMpLFxyXG4gICAgICAgICAgK3RoaXMuX21pbnV0ZXMsXHJcbiAgICAgICAgKSxcclxuICAgICAgICArdGhpcy5fc2Vjb25kcyxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2hQaWNrZXJWYWx1ZShkYXRlOiBEYXRlKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucnVuVGltZW91dCkge1xyXG4gICAgICAgIHRoaXMuX3BpY2tlclZhbHVlID0gdGhpcy5mb3JtYXREYXRlVGltZShkYXRlKTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMzAwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGlmIChkYXRlICYmIGlzVmFsaWQobmV3IERhdGUoZGF0ZSkpKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaGlkZVNlY29uZHNcclxuICAgICAgICA/IGZvcm1hdChuZXcgRGF0ZShkYXRlKSwgYGRkL01NL3l5eXksIEhIOm1tYClcclxuICAgICAgICA6IGZvcm1hdChuZXcgRGF0ZShkYXRlKSwgYGRkL01NL3l5eXksIEhIOm1tOnNzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcm91bmROdW1iZXIobnVtOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShudW0sICcyLjAtMCcpID8/ICcwMCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlcyhkYXRlOiBEYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xyXG4gICAgdGhpcy5vblRvdWNoKGRhdGUpO1xyXG4gICAgdGhpcy5fZGF0ZSA9IGRhdGU7XHJcblxyXG4gICAgaWYgKGRhdGUgJiYgaXNWYWxpZChkYXRlKSkge1xyXG4gICAgICB0aGlzLmhvdXJzID0gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMubWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxlY2Ficy1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS13cmFwcGVyIHctZnVsbFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZmFrZS1pbnB1dFwiXHJcbiAgICAgIFtpZF09XCJfZGF0ZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiX2RhdGVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICBbbWF4XT1cIm1heERhdGVcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgLz5cclxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJoZWFkZXJcIiBbdG91Y2hVaV09XCJ0b3VjaFVpXCIgY2xhc3M9XCJkYXRlcGlja2VyLXVpXCI+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS0taW5wdXRzXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdGltZVwiXHJcbiAgICAgICAgICAgICAgZWNhYnNEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgZWNhYnNOdW1iZXJCb3JkZXJcclxuICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaG91cnNcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJfaG91cnNcIlxyXG4gICAgICAgICAgICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZUhvdXJzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhvdXJzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHRpbWVcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJtaW51dGVzXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1pbnV0ZXNcIlxyXG4gICAgICAgICAgICAgIGVjYWJzRGlnaXRzT25seVxyXG4gICAgICAgICAgICAgIGVjYWJzTnVtYmVyQm9yZGVyXHJcbiAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW21heFZhbHVlXT1cIm1heFZhbHVlTWludXRlc1NlY29uZHNcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU2Vjb25kc1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdGltZVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwic2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZHNcIlxyXG4gICAgICAgICAgICAgICAgZWNhYnNEaWdpdHNPbmx5XHJcbiAgICAgICAgICAgICAgICBlY2Fic051bWJlckJvcmRlclxyXG4gICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbbWF4VmFsdWVdPVwibWF4VmFsdWVNaW51dGVzU2Vjb25kc1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZWNhYnMtZGF0ZS1waWNrZXItYWN0aW9ucyBbYXBwbHlMYWJlbF09XCJhcHBseUxhYmVsID8/IHRyYW5zbGF0aW9uQ29uZmlnPy5hcHBseUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCJjYW5jZWxMYWJlbCA/PyB0cmFuc2xhdGlvbkNvbmZpZz8uY2FuY2VsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cIm9uQXBwbHkoKVwiPlxyXG4gICAgICAgICAgPC9lY2Ficy1kYXRlLXBpY2tlci1hY3Rpb25zPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XHJcbiAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQgdy1mdWxsIGRhdGUtaW5wdXRcIlxyXG4gICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGlja2VyVmFsdWVcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBlY2Fic01hc2tEYXRlXHJcbiAgICAgIFtpc0RhdGVUaW1lTWFza109XCJ0cnVlXCJcclxuICAgICAgW2NvbnNpZGVyU2Vjb25kc109XCIhaGlkZVNlY29uZHNcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoKClcIlxyXG4gICAgLz5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiZGF0ZXBpY2tlci11aV9fdG9nZ2xlIHRleHQtZ3JheS01MDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=
@@ -2527,7 +2527,6 @@ class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
2527
2527
  cancelLabel;
2528
2528
  applyLabel;
2529
2529
  applyMinDateAuto = true;
2530
- onblur = new EventEmitter();
2531
2530
  _hours = '12';
2532
2531
  _minutes = '00';
2533
2532
  _seconds = '00';
@@ -2579,33 +2578,36 @@ class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
2579
2578
  }
2580
2579
  }
2581
2580
  set pickerValue(val) {
2582
- if (val) {
2583
- const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
2584
- if (isValid(date) && this._pickerValue !== val) {
2585
- if (this.minDate && date < this.minDate && this.applyMinDateAuto) {
2586
- this.setValues(this.minDate);
2587
- this._pickerValue = val;
2588
- this.preventCallSetterPickerValue = true;
2589
- this.value = this.minDate;
2590
- this.runTimeout = true;
2591
- this.refreshPickerValue(this.minDate);
2592
- return;
2593
- }
2594
- if (this.maxDate && date > this.maxDate) {
2595
- this.setValues(this.maxDate);
2596
- this._pickerValue = val;
2597
- this.preventCallSetterPickerValue = true;
2598
- this.value = this.maxDate;
2599
- this.runTimeout = true;
2600
- this.refreshPickerValue(this.maxDate);
2601
- return;
2602
- }
2603
- this.runTimeout = false;
2581
+ if (!val) {
2582
+ this.value = undefined;
2583
+ this.setValues(undefined);
2584
+ return;
2585
+ }
2586
+ const date = parse(val.replace('_', ''), this.hideSeconds ? `dd/MM/yyyy, HH:mm` : `dd/MM/yyyy, HH:mm:ss`, new Date());
2587
+ if (isValid(date) && this._pickerValue !== val) {
2588
+ if (this.minDate && date < this.minDate && this.applyMinDateAuto) {
2589
+ this.setValues(this.minDate);
2604
2590
  this._pickerValue = val;
2605
2591
  this.preventCallSetterPickerValue = true;
2606
- this.value = date;
2607
- this.setValues(date);
2592
+ this.value = this.minDate;
2593
+ this.runTimeout = true;
2594
+ this.refreshPickerValue(this.minDate);
2595
+ return;
2608
2596
  }
2597
+ if (this.maxDate && date > this.maxDate) {
2598
+ this.setValues(this.maxDate);
2599
+ this._pickerValue = val;
2600
+ this.preventCallSetterPickerValue = true;
2601
+ this.value = this.maxDate;
2602
+ this.runTimeout = true;
2603
+ this.refreshPickerValue(this.maxDate);
2604
+ return;
2605
+ }
2606
+ this.runTimeout = false;
2607
+ this._pickerValue = val;
2608
+ this.preventCallSetterPickerValue = true;
2609
+ this.value = date;
2610
+ this.setValues(date);
2609
2611
  }
2610
2612
  }
2611
2613
  constructor(injector, decimalPipe, cd, ecabsDatePickerHeaderService, unsubscribeService) {
@@ -2645,13 +2647,9 @@ class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
2645
2647
  registerOnTouched(fn) {
2646
2648
  this.onTouch = fn;
2647
2649
  }
2648
- blurChange(e) {
2649
- this.onblur.emit(e);
2650
- }
2651
2650
  onApply() {
2652
2651
  if (this._date && this._seconds && this._minutes && this._hours) {
2653
- const date = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
2654
- this.value = date;
2652
+ this.value = setSeconds(setMinutes(setHours(new Date(this._date), +this._hours), +this._minutes), +this._seconds);
2655
2653
  }
2656
2654
  }
2657
2655
  refreshPickerValue(date) {
@@ -2685,10 +2683,10 @@ class EcabsDateTimePickerComponent extends EcabsElementBaseComponent {
2685
2683
  }
2686
2684
  }
2687
2685
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateTimePickerComponent, deps: [{ token: i0.Injector }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }, { token: EcabsDatePickerHeaderService }, { token: UnsubscribeService }], target: i0.ɵɵFactoryTarget.Component });
2688
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancelLabel: "cancelLabel", applyLabel: "applyLabel", applyMinDateAuto: "applyMinDateAuto" }, outputs: { onblur: "onblur" }, providers: [
2686
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDateTimePickerComponent, selector: "ecabs-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", touchUi: "touchUi", hideSeconds: "hideSeconds", cancelLabel: "cancelLabel", applyLabel: "applyLabel", applyMinDateAuto: "applyMinDateAuto" }, providers: [
2689
2687
  {
2690
2688
  provide: NG_VALUE_ACCESSOR,
2691
- useExisting: EcabsDateTimePickerComponent,
2689
+ useExisting: forwardRef(() => EcabsDateTimePickerComponent),
2692
2690
  multi: true,
2693
2691
  },
2694
2692
  DecimalPipe,
@@ -2700,7 +2698,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2700
2698
  args: [{ selector: 'ecabs-date-time-picker', providers: [
2701
2699
  {
2702
2700
  provide: NG_VALUE_ACCESSOR,
2703
- useExisting: EcabsDateTimePickerComponent,
2701
+ useExisting: forwardRef(() => EcabsDateTimePickerComponent),
2704
2702
  multi: true,
2705
2703
  },
2706
2704
  DecimalPipe,
@@ -2720,8 +2718,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2720
2718
  type: Input
2721
2719
  }], applyMinDateAuto: [{
2722
2720
  type: Input
2723
- }], onblur: [{
2724
- type: Output
2725
2721
  }] } });
2726
2722
 
2727
2723
  class EcabsMaskDateDirectiveModule {