@ng-nest/ui 15.0.6 → 15.0.8

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 (174) hide show
  1. package/core/config/config.d.ts +1 -0
  2. package/core/functions/date.d.ts +1 -0
  3. package/date-picker/date-picker.property.d.ts +129 -3
  4. package/date-picker/date-range-portal.component.d.ts +9 -8
  5. package/date-picker/date-range.component.d.ts +12 -10
  6. package/date-picker/picker-date.component.d.ts +15 -6
  7. package/esm2020/core/config/config.mjs +1 -1
  8. package/esm2020/core/functions/date.mjs +20 -29
  9. package/esm2020/date-picker/date-picker.property.mjs +23 -2
  10. package/esm2020/date-picker/date-range-portal.component.mjs +36 -33
  11. package/esm2020/date-picker/date-range.component.mjs +75 -53
  12. package/esm2020/date-picker/picker-date.component.mjs +133 -17
  13. package/esm2020/input/input.component.mjs +2 -2
  14. package/esm2020/loading/loading.component.mjs +13 -6
  15. package/esm2020/loading/loading.property.mjs +1 -1
  16. package/esm2020/switch/switch.component.mjs +13 -6
  17. package/esm2020/switch/switch.module.mjs +6 -4
  18. package/esm2020/switch/switch.property.mjs +39 -4
  19. package/esm2020/table/drag.directive.mjs +13 -5
  20. package/esm2020/table/table-head.component.mjs +22 -6
  21. package/esm2020/table/table.property.mjs +23 -2
  22. package/fesm2015/ng-nest-ui-anchor.mjs +1 -0
  23. package/fesm2015/ng-nest-ui-api.mjs +1 -0
  24. package/fesm2015/ng-nest-ui-auto-complete.mjs +1 -0
  25. package/fesm2015/ng-nest-ui-avatar.mjs +1 -0
  26. package/fesm2015/ng-nest-ui-back-top.mjs +1 -0
  27. package/fesm2015/ng-nest-ui-badge.mjs +1 -0
  28. package/fesm2015/ng-nest-ui-base-form.mjs +1 -0
  29. package/fesm2015/ng-nest-ui-border.mjs +1 -0
  30. package/fesm2015/ng-nest-ui-button.mjs +1 -0
  31. package/fesm2015/ng-nest-ui-calendar.mjs +1 -0
  32. package/fesm2015/ng-nest-ui-card.mjs +1 -0
  33. package/fesm2015/ng-nest-ui-carousel.mjs +1 -0
  34. package/fesm2015/ng-nest-ui-cascade.mjs +1 -0
  35. package/fesm2015/ng-nest-ui-checkbox.mjs +1 -0
  36. package/fesm2015/ng-nest-ui-collapse.mjs +1 -0
  37. package/fesm2015/ng-nest-ui-color-picker.mjs +1 -0
  38. package/fesm2015/ng-nest-ui-color.mjs +1 -0
  39. package/fesm2015/ng-nest-ui-comment.mjs +1 -0
  40. package/fesm2015/ng-nest-ui-container.mjs +1 -0
  41. package/fesm2015/ng-nest-ui-core.mjs +20 -29
  42. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  43. package/fesm2015/ng-nest-ui-date-picker.mjs +263 -99
  44. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  45. package/fesm2015/ng-nest-ui-dialog.mjs +1 -0
  46. package/fesm2015/ng-nest-ui-drawer.mjs +1 -0
  47. package/fesm2015/ng-nest-ui-dropdown.mjs +1 -0
  48. package/fesm2015/ng-nest-ui-find.mjs +1 -0
  49. package/fesm2015/ng-nest-ui-form.mjs +1 -0
  50. package/fesm2015/ng-nest-ui-highlight.mjs +1 -0
  51. package/fesm2015/ng-nest-ui-i18n.mjs +1 -0
  52. package/fesm2015/ng-nest-ui-icon.mjs +1 -0
  53. package/fesm2015/ng-nest-ui-image.mjs +1 -0
  54. package/fesm2015/ng-nest-ui-inner.mjs +1 -0
  55. package/fesm2015/ng-nest-ui-input-number.mjs +1 -0
  56. package/fesm2015/ng-nest-ui-input.mjs +2 -1
  57. package/fesm2015/ng-nest-ui-input.mjs.map +1 -1
  58. package/fesm2015/ng-nest-ui-link.mjs +1 -0
  59. package/fesm2015/ng-nest-ui-list.mjs +1 -0
  60. package/fesm2015/ng-nest-ui-loading.mjs +13 -5
  61. package/fesm2015/ng-nest-ui-loading.mjs.map +1 -1
  62. package/fesm2015/ng-nest-ui-menu.mjs +1 -0
  63. package/fesm2015/ng-nest-ui-message-box.mjs +1 -0
  64. package/fesm2015/ng-nest-ui-message.mjs +1 -0
  65. package/fesm2015/ng-nest-ui-notification.mjs +1 -0
  66. package/fesm2015/ng-nest-ui-pagination.mjs +1 -0
  67. package/fesm2015/ng-nest-ui-popconfirm.mjs +1 -0
  68. package/fesm2015/ng-nest-ui-popover.mjs +1 -0
  69. package/fesm2015/ng-nest-ui-progress.mjs +1 -0
  70. package/fesm2015/ng-nest-ui-radio.mjs +1 -0
  71. package/fesm2015/ng-nest-ui-rate.mjs +1 -0
  72. package/fesm2015/ng-nest-ui-result.mjs +1 -0
  73. package/fesm2015/ng-nest-ui-select.mjs +1 -0
  74. package/fesm2015/ng-nest-ui-skeleton.mjs +1 -0
  75. package/fesm2015/ng-nest-ui-slider-select.mjs +1 -0
  76. package/fesm2015/ng-nest-ui-slider.mjs +1 -0
  77. package/fesm2015/ng-nest-ui-steps.mjs +1 -0
  78. package/fesm2015/ng-nest-ui-switch.mjs +54 -11
  79. package/fesm2015/ng-nest-ui-switch.mjs.map +1 -1
  80. package/fesm2015/ng-nest-ui-table.mjs +55 -10
  81. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  82. package/fesm2015/ng-nest-ui-tabs.mjs +1 -0
  83. package/fesm2015/ng-nest-ui-tag.mjs +1 -0
  84. package/fesm2015/ng-nest-ui-text-retract.mjs +1 -0
  85. package/fesm2015/ng-nest-ui-textarea.mjs +1 -0
  86. package/fesm2015/ng-nest-ui-time-picker.mjs +1 -0
  87. package/fesm2015/ng-nest-ui-timeline.mjs +1 -0
  88. package/fesm2015/ng-nest-ui-tooltip.mjs +1 -0
  89. package/fesm2015/ng-nest-ui-transfer.mjs +1 -0
  90. package/fesm2015/ng-nest-ui-tree-file.mjs +1 -0
  91. package/fesm2015/ng-nest-ui-tree-select.mjs +1 -0
  92. package/fesm2015/ng-nest-ui-tree.mjs +1 -0
  93. package/fesm2015/ng-nest-ui-upload.mjs +1 -0
  94. package/fesm2020/ng-nest-ui-anchor.mjs +1 -0
  95. package/fesm2020/ng-nest-ui-api.mjs +1 -0
  96. package/fesm2020/ng-nest-ui-auto-complete.mjs +1 -0
  97. package/fesm2020/ng-nest-ui-avatar.mjs +1 -0
  98. package/fesm2020/ng-nest-ui-back-top.mjs +1 -0
  99. package/fesm2020/ng-nest-ui-badge.mjs +1 -0
  100. package/fesm2020/ng-nest-ui-base-form.mjs +1 -0
  101. package/fesm2020/ng-nest-ui-border.mjs +1 -0
  102. package/fesm2020/ng-nest-ui-button.mjs +1 -0
  103. package/fesm2020/ng-nest-ui-calendar.mjs +1 -0
  104. package/fesm2020/ng-nest-ui-card.mjs +1 -0
  105. package/fesm2020/ng-nest-ui-carousel.mjs +1 -0
  106. package/fesm2020/ng-nest-ui-cascade.mjs +1 -0
  107. package/fesm2020/ng-nest-ui-checkbox.mjs +1 -0
  108. package/fesm2020/ng-nest-ui-collapse.mjs +1 -0
  109. package/fesm2020/ng-nest-ui-color-picker.mjs +1 -0
  110. package/fesm2020/ng-nest-ui-color.mjs +1 -0
  111. package/fesm2020/ng-nest-ui-comment.mjs +1 -0
  112. package/fesm2020/ng-nest-ui-container.mjs +1 -0
  113. package/fesm2020/ng-nest-ui-core.mjs +20 -29
  114. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  115. package/fesm2020/ng-nest-ui-date-picker.mjs +262 -99
  116. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  117. package/fesm2020/ng-nest-ui-dialog.mjs +1 -0
  118. package/fesm2020/ng-nest-ui-drawer.mjs +1 -0
  119. package/fesm2020/ng-nest-ui-dropdown.mjs +1 -0
  120. package/fesm2020/ng-nest-ui-find.mjs +1 -0
  121. package/fesm2020/ng-nest-ui-form.mjs +1 -0
  122. package/fesm2020/ng-nest-ui-highlight.mjs +1 -0
  123. package/fesm2020/ng-nest-ui-i18n.mjs +1 -0
  124. package/fesm2020/ng-nest-ui-icon.mjs +1 -0
  125. package/fesm2020/ng-nest-ui-image.mjs +1 -0
  126. package/fesm2020/ng-nest-ui-inner.mjs +1 -0
  127. package/fesm2020/ng-nest-ui-input-number.mjs +1 -0
  128. package/fesm2020/ng-nest-ui-input.mjs +2 -1
  129. package/fesm2020/ng-nest-ui-input.mjs.map +1 -1
  130. package/fesm2020/ng-nest-ui-link.mjs +1 -0
  131. package/fesm2020/ng-nest-ui-list.mjs +1 -0
  132. package/fesm2020/ng-nest-ui-loading.mjs +13 -5
  133. package/fesm2020/ng-nest-ui-loading.mjs.map +1 -1
  134. package/fesm2020/ng-nest-ui-menu.mjs +1 -0
  135. package/fesm2020/ng-nest-ui-message-box.mjs +1 -0
  136. package/fesm2020/ng-nest-ui-message.mjs +1 -0
  137. package/fesm2020/ng-nest-ui-notification.mjs +1 -0
  138. package/fesm2020/ng-nest-ui-pagination.mjs +1 -0
  139. package/fesm2020/ng-nest-ui-popconfirm.mjs +1 -0
  140. package/fesm2020/ng-nest-ui-popover.mjs +1 -0
  141. package/fesm2020/ng-nest-ui-progress.mjs +1 -0
  142. package/fesm2020/ng-nest-ui-radio.mjs +1 -0
  143. package/fesm2020/ng-nest-ui-rate.mjs +1 -0
  144. package/fesm2020/ng-nest-ui-result.mjs +1 -0
  145. package/fesm2020/ng-nest-ui-select.mjs +1 -0
  146. package/fesm2020/ng-nest-ui-skeleton.mjs +1 -0
  147. package/fesm2020/ng-nest-ui-slider-select.mjs +1 -0
  148. package/fesm2020/ng-nest-ui-slider.mjs +1 -0
  149. package/fesm2020/ng-nest-ui-steps.mjs +1 -0
  150. package/fesm2020/ng-nest-ui-switch.mjs +54 -11
  151. package/fesm2020/ng-nest-ui-switch.mjs.map +1 -1
  152. package/fesm2020/ng-nest-ui-table.mjs +55 -10
  153. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  154. package/fesm2020/ng-nest-ui-tabs.mjs +1 -0
  155. package/fesm2020/ng-nest-ui-tag.mjs +1 -0
  156. package/fesm2020/ng-nest-ui-text-retract.mjs +1 -0
  157. package/fesm2020/ng-nest-ui-textarea.mjs +1 -0
  158. package/fesm2020/ng-nest-ui-time-picker.mjs +1 -0
  159. package/fesm2020/ng-nest-ui-timeline.mjs +1 -0
  160. package/fesm2020/ng-nest-ui-tooltip.mjs +1 -0
  161. package/fesm2020/ng-nest-ui-transfer.mjs +1 -0
  162. package/fesm2020/ng-nest-ui-tree-file.mjs +1 -0
  163. package/fesm2020/ng-nest-ui-tree-select.mjs +1 -0
  164. package/fesm2020/ng-nest-ui-tree.mjs +1 -0
  165. package/fesm2020/ng-nest-ui-upload.mjs +1 -0
  166. package/loading/loading.component.d.ts +1 -0
  167. package/loading/loading.property.d.ts +1 -1
  168. package/package.json +1 -1
  169. package/switch/switch.component.d.ts +2 -1
  170. package/switch/switch.module.d.ts +3 -1
  171. package/switch/switch.property.d.ts +47 -1
  172. package/table/drag.directive.d.ts +12 -2
  173. package/table/table-head.component.d.ts +11 -1
  174. package/table/table.property.d.ts +55 -1
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
2
- import { XChunk, XIsChange } from '@ng-nest/ui/core';
2
+ import { XChunk, XIsChange, XIsNull } from '@ng-nest/ui/core';
3
3
  import { XPickerDatePrefix, XPickerDateProperty } from './date-picker.property';
4
4
  import { Subject } from 'rxjs';
5
5
  import { map, takeUntil } from 'rxjs/operators';
@@ -29,6 +29,7 @@ export class XPickerDateComponent extends XPickerDateProperty {
29
29
  ];
30
30
  this.now = new Date();
31
31
  this.dates = [];
32
+ this.weekDates = [];
32
33
  this.locale = {};
33
34
  this._unSubject = new Subject();
34
35
  }
@@ -63,6 +64,94 @@ export class XPickerDateComponent extends XPickerDateProperty {
63
64
  init() {
64
65
  this.setDays(this.display);
65
66
  }
67
+ isStartDate(date) {
68
+ if (!this.rangeType || !this.rangeValue)
69
+ return;
70
+ if (!XIsNull(this.rangeValue[0])) {
71
+ return this.datePipe.transform(this.rangeValue[0], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
72
+ }
73
+ return;
74
+ }
75
+ isEndDate(date) {
76
+ if (!this.rangeType || !this.rangeValue)
77
+ return;
78
+ if (!XIsNull(this.rangeValue[1])) {
79
+ return this.datePipe.transform(this.rangeValue[1], 'yyyyMMdd') === this.datePipe.transform(date, 'yyyyMMdd');
80
+ }
81
+ return;
82
+ }
83
+ setDatesState(cell) {
84
+ this.clearState(...this.dates);
85
+ for (let item of this.dates) {
86
+ this.setDayState(item);
87
+ }
88
+ this.onTdMouseenter(cell, false);
89
+ }
90
+ onTdMouseenter(cell, isEmit = true) {
91
+ const [start, end] = this.rangeValue;
92
+ if (!XIsNull(start) || !XIsNull(end)) {
93
+ const time = cell.date.getTime();
94
+ for (let item of this.dates) {
95
+ const itemTime = item.date.getTime();
96
+ this.clearState(item);
97
+ if (!XIsNull(start) && XIsNull(end)) {
98
+ item.isRangeHoverStartLeft = time < start && itemTime === start;
99
+ item.isRangeHoverStartRight = time > start && itemTime === start;
100
+ item.isRangeHover =
101
+ (time < start && itemTime >= time && itemTime < start) || (time > start && itemTime > start && itemTime <= time);
102
+ item.isRangeHoverStart = itemTime === time && time < start;
103
+ item.isRangeHoverEnd = itemTime === time && time > start;
104
+ }
105
+ else if (XIsNull(start) && !XIsNull(end)) {
106
+ item.isRangeHoverEndLeft = time < end && itemTime === end;
107
+ item.isRangeHoverEndRight = time > end && itemTime === end;
108
+ item.isRangeHover = (time < end && itemTime >= time && itemTime < end) || (time > end && itemTime > end && itemTime <= time);
109
+ item.isRangeHoverStart = itemTime === time && time < end;
110
+ item.isRangeHoverEnd = itemTime === time && time > end;
111
+ }
112
+ else if (!XIsNull(start) && !XIsNull(end)) {
113
+ item.isRangeHoverStartLeft = time < start && itemTime === start;
114
+ item.isRangeHoverEndRight = time > end && itemTime === end;
115
+ item.isRangeHover =
116
+ (time < start && itemTime >= time && itemTime < start) || (time > end && itemTime > end && itemTime <= time);
117
+ item.isRangeHoverStart = itemTime === time && time < start;
118
+ item.isRangeHoverEnd = itemTime === time && time > end;
119
+ if (this.rangeType === 'start') {
120
+ item.isInRangeHover = itemTime >= time && itemTime <= end;
121
+ }
122
+ else if (this.rangeType === 'end') {
123
+ item.isInRangeHover = itemTime >= start && itemTime <= time;
124
+ }
125
+ }
126
+ }
127
+ if (isEmit) {
128
+ this.rangeTdMouseenter.emit(cell);
129
+ }
130
+ else {
131
+ this.cdr.detectChanges();
132
+ }
133
+ }
134
+ }
135
+ onTdMouseleave(cell, isEmit = true) {
136
+ const [start, end] = this.rangeValue;
137
+ if (!XIsNull(start) || !XIsNull(end)) {
138
+ this.clearState(...this.dates);
139
+ if (isEmit)
140
+ this.rangeTdMouseleave.emit(cell);
141
+ }
142
+ }
143
+ clearState(...cells) {
144
+ for (let cell of cells) {
145
+ cell.isInRangeHover = false;
146
+ cell.isRangeHover = false;
147
+ cell.isRangeHoverStart = false;
148
+ cell.isRangeHoverEnd = false;
149
+ cell.isRangeHoverStartLeft = false;
150
+ cell.isRangeHoverStartRight = false;
151
+ cell.isRangeHoverEndLeft = false;
152
+ cell.isRangeHoverEndRight = false;
153
+ }
154
+ }
66
155
  setDays(date) {
67
156
  let dates = [];
68
157
  const year = date.getFullYear();
@@ -76,33 +165,60 @@ export class XPickerDateComponent extends XPickerDateProperty {
76
165
  let index = 1;
77
166
  while (day !== 1) {
78
167
  index--;
79
- let date = new Date(year, month, index);
80
- dates = [date, ...dates];
81
- day = date.getDay();
168
+ const cell = { date: new Date(year, month, index) };
169
+ dates = [this.setDayState(cell), ...dates];
170
+ day = cell.date.getDay();
82
171
  }
83
172
  index = 1;
84
173
  do {
85
- dates = [...dates, new Date(year, month, index)];
174
+ const cell = { date: new Date(year, month, index), isFirstDay: index === 1, isLastDay: index === lastDate };
175
+ dates = [...dates, this.setDayState(cell)];
86
176
  index++;
87
177
  } while (index <= lastDate);
88
178
  index = 0;
89
179
  day = lastDay;
90
180
  while (day !== 0 || dates.length !== 7 * 6) {
91
181
  index++;
92
- let date = new Date(year, month + 1, index);
93
- dates = [...dates, date];
94
- day = date.getDay();
182
+ const cell = { date: new Date(year, month + 1, index) };
183
+ dates = [...dates, this.setDayState(cell)];
184
+ day = cell.date.getDay();
95
185
  }
96
- this.dates = XChunk(dates, 7);
186
+ this.dates = dates;
187
+ this.weekDates = XChunk(dates, 7);
97
188
  if (this.dates.length > 0) {
98
- this.rangeChange.emit([dates[0], dates[dates.length - 1]]);
189
+ this.rangeChange.emit([dates[0].date, dates[dates.length - 1].date]);
99
190
  }
100
191
  this.cdr.detectChanges();
101
192
  }
102
- dateClick(date) {
103
- this.model = date;
104
- this.modelChange.emit(date);
105
- this.cdr.markForCheck();
193
+ setDayState(cell) {
194
+ const time = cell.date?.getTime();
195
+ const fdate = this.datePipe.transform(cell.date, 'yyyyMMdd');
196
+ const fdatem = this.datePipe.transform(cell.date, 'yyyyMM');
197
+ const fdisplaym = this.datePipe.transform(this.display, 'yyyyMM');
198
+ const fnow = this.datePipe.transform(this.now, 'yyyyMMdd');
199
+ cell.isLastOrNext = fdatem !== fdisplaym;
200
+ cell.isNow = fdate === fnow;
201
+ if (this.rangePicker) {
202
+ if (!this.rangeValue)
203
+ return cell;
204
+ const [start, end] = this.rangeValue;
205
+ cell.isInRange = !!start && !!end && time >= start && time <= end;
206
+ cell.isRangeStartRight = !!start && !!end && fdate === this.datePipe.transform(start, 'yyyyMMdd');
207
+ cell.isRangeEndLeft = !!start && !!end && fdate === this.datePipe.transform(end, 'yyyyMMdd');
208
+ }
209
+ return cell;
210
+ }
211
+ dateClick(cell) {
212
+ this.model = cell.date;
213
+ this.modelChange.emit(cell.date);
214
+ if (this.rangePicker) {
215
+ this.clearState(...this.dates);
216
+ for (let item of this.dates) {
217
+ this.setDayState(item);
218
+ }
219
+ this.rangeDateClick.emit(cell);
220
+ }
221
+ this.cdr.detectChanges();
106
222
  }
107
223
  getLocaleMonth(date) {
108
224
  return this.locale[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
@@ -145,9 +261,9 @@ export class XPickerDateComponent extends XPickerDateProperty {
145
261
  }
146
262
  }
147
263
  /** @nocollapse */ XPickerDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XPickerDateComponent, deps: [{ token: i0.Renderer2 }, { token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XConfigService }, { token: i3.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
148
- /** @nocollapse */ XPickerDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPickerDateComponent, selector: "x-picker-date", providers: [DatePipe, LowerCasePipe], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n <div class=\"x-picker-date-header\" *ngIf=\"showHeader\">\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-button>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('year')\">{{ display | date: 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-button>\r\n </div>\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let title of titles; trackBy: trackByNode\">{{ title | xI18n }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let weeks of dates\">\r\n <ng-container *ngFor=\"let week of weeks; trackBy: trackByNode\">\r\n <td\r\n [class.x-date-last-or-next]=\"(week | date: 'yyyyMM') !== (display | date: 'yyyyMM')\"\r\n [class.x-date-now]=\"(week | date: 'yyyyMMdd') === (now | date: 'yyyyMMdd')\"\r\n (click)=\"dateTemp && dateClick(week)\"\r\n >\r\n <x-button\r\n *ngIf=\"!dateTemp\"\r\n type=\"text\"\r\n size=\"mini\"\r\n title=\"{{ week | date: 'yyyy-MM-dd' }}\"\r\n [activated]=\"!rangePicker && (week | date: 'yyyyMMdd') === (model | date: 'yyyyMMdd')\"\r\n [disabled]=\"false\"\r\n (click)=\"dateClick(week)\"\r\n >{{ week | date: 'd' }}</x-button\r\n >\r\n <ng-container *ngIf=\"dateTemp\">\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week }\"></ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem;border-bottom:var(--x-border-width) solid var(--x-border)}.x-picker-date-year-month{flex:1;text-align:center}.x-picker-date-body{padding:.5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table th{font-weight:400;height:2rem;color:var(--x-text-400)}.x-picker-date-body>table td{padding:.25rem 0;text-align:center}.x-picker-date-body>table td x-button .x-button{width:1.625rem;height:1.5rem;margin:0 auto;border:.0625rem solid transparent}.x-picker-date-body>table td x-button .x-button:hover{background-color:var(--x-primary-900)}.x-picker-date-body>table td x-button .x-button-activated{color:var(--x-background-100);background-color:var(--x-primary)}.x-picker-date-body>table td x-button .x-button-activated:hover{color:var(--x-background-100);background-color:var(--x-primary)}.x-picker-date-body>table td.x-date-last-or-next x-button .x-button{color:var(--x-text-700)}.x-picker-date-body>table td.x-date-now x-button .x-button:not(.x-button-activated){color:var(--x-primary);background-color:transparent;border-color:var(--x-primary)}.x-picker-date .x-visibility{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.XButtonComponent, selector: "x-button" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
264
+ /** @nocollapse */ XPickerDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPickerDateComponent, selector: "x-picker-date", providers: [DatePipe, LowerCasePipe], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n <div class=\"x-picker-date-header\" *ngIf=\"showHeader\">\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-button>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('year')\">{{ display | date : 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-button>\r\n </div>\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let title of titles; trackBy: trackByNode\">{{ title | xI18n }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let weeks of weekDates\">\r\n <ng-container *ngFor=\"let week of weeks; trackBy: trackByNode\">\r\n <td\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"rangePicker && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"rangePicker && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"rangePicker && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"rangePicker && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"rangePicker && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"rangePicker && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"rangePicker && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"rangePicker && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"rangePicker && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"rangePicker && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"rangePicker && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"rangePicker && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"rangePicker && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"rangePicker && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"rangePicker && week.isInRangeHover\"\r\n [class.x-date-active]=\"!rangePicker && (week.date | date : 'yyyyMMdd') === (model | date : 'yyyyMMdd')\"\r\n title=\"{{ week.date | date : 'yyyy-MM-dd' }}\"\r\n (click)=\"dateClick(week)\"\r\n (mouseenter)=\"rangePicker && onTdMouseenter(week)\"\r\n (mouseleave)=\"rangePicker && onTdMouseleave(week)\"\r\n >\r\n <div *ngIf=\"!dateTemp\" class=\"x-date-text\">\r\n {{ week.date | date : 'd' }}\r\n </div>\r\n <ng-container *ngIf=\"dateTemp\">\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week.date }\"></ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem;border-bottom:var(--x-border-width) solid var(--x-border)}.x-picker-date-year-month{flex:1;text-align:center}.x-picker-date-body{padding:.5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table th{font-weight:400;height:2rem;color:var(--x-text-400)}.x-picker-date-body>table td{padding:.25rem 0;text-align:center;cursor:pointer;color:var(--x-text-300);position:relative}.x-picker-date-body>table td .x-date-text{width:1.75rem;height:1.5rem;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body>table td:before,.x-picker-date-body>table td:after{position:absolute;top:50%;right:0;left:0;z-index:1;height:1.5rem;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-picker-date-body>table td:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next),.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next),.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next):hover,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next):hover,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next):hover .x-date-text,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body>table td.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-picker-date-body>table td.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body>table td.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem;transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-picker-date-body>table td.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body>table td.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem;transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-picker-date-body>table td.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-picker-date-body>table td.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-picker-date-body>table td.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date .x-visibility{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.XButtonComponent, selector: "x-button" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
149
265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XPickerDateComponent, decorators: [{
150
266
  type: Component,
151
- args: [{ selector: `${XPickerDatePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n <div class=\"x-picker-date-header\" *ngIf=\"showHeader\">\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-button>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('year')\">{{ display | date: 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-button>\r\n </div>\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let title of titles; trackBy: trackByNode\">{{ title | xI18n }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let weeks of dates\">\r\n <ng-container *ngFor=\"let week of weeks; trackBy: trackByNode\">\r\n <td\r\n [class.x-date-last-or-next]=\"(week | date: 'yyyyMM') !== (display | date: 'yyyyMM')\"\r\n [class.x-date-now]=\"(week | date: 'yyyyMMdd') === (now | date: 'yyyyMMdd')\"\r\n (click)=\"dateTemp && dateClick(week)\"\r\n >\r\n <x-button\r\n *ngIf=\"!dateTemp\"\r\n type=\"text\"\r\n size=\"mini\"\r\n title=\"{{ week | date: 'yyyy-MM-dd' }}\"\r\n [activated]=\"!rangePicker && (week | date: 'yyyyMMdd') === (model | date: 'yyyyMMdd')\"\r\n [disabled]=\"false\"\r\n (click)=\"dateClick(week)\"\r\n >{{ week | date: 'd' }}</x-button\r\n >\r\n <ng-container *ngIf=\"dateTemp\">\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week }\"></ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem;border-bottom:var(--x-border-width) solid var(--x-border)}.x-picker-date-year-month{flex:1;text-align:center}.x-picker-date-body{padding:.5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table th{font-weight:400;height:2rem;color:var(--x-text-400)}.x-picker-date-body>table td{padding:.25rem 0;text-align:center}.x-picker-date-body>table td x-button .x-button{width:1.625rem;height:1.5rem;margin:0 auto;border:.0625rem solid transparent}.x-picker-date-body>table td x-button .x-button:hover{background-color:var(--x-primary-900)}.x-picker-date-body>table td x-button .x-button-activated{color:var(--x-background-100);background-color:var(--x-primary)}.x-picker-date-body>table td x-button .x-button-activated:hover{color:var(--x-background-100);background-color:var(--x-primary)}.x-picker-date-body>table td.x-date-last-or-next x-button .x-button{color:var(--x-text-700)}.x-picker-date-body>table td.x-date-now x-button .x-button:not(.x-button-activated){color:var(--x-primary);background-color:transparent;border-color:var(--x-primary)}.x-picker-date .x-visibility{visibility:hidden}\n"] }]
267
+ args: [{ selector: `${XPickerDatePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-picker-date\" [class.x-date-picker-datetemp]=\"dateTemp\">\r\n <div class=\"x-picker-date-header\" *ngIf=\"showHeader\">\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\" [class.x-visibility]=\"!lastYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\" [class.x-visibility]=\"!lastMonthBtn\"></x-button>\r\n <div class=\"x-picker-date-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('year')\">{{ display | date : 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeOnChange('month')\">{{ getLocaleMonth(display) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon (click)=\"nextMonth(1)\" [class.x-visibility]=\"!nextYearBtn\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon (click)=\"nextYear(1)\" [class.x-visibility]=\"!nextMonthBtn\"></x-button>\r\n </div>\r\n <div class=\"x-picker-date-body\">\r\n <table cellspacing=\"0\" cellpadding=\"0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let title of titles; trackBy: trackByNode\">{{ title | xI18n }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let weeks of weekDates\">\r\n <ng-container *ngFor=\"let week of weeks; trackBy: trackByNode\">\r\n <td\r\n [class.x-date-last-or-next]=\"week.isLastOrNext\"\r\n [class.x-date-now]=\"week.isNow\"\r\n [class.x-date-first-day]=\"week.isFirstDay\"\r\n [class.x-date-last-day]=\"week.isLastDay\"\r\n [class.x-date-range-start]=\"rangePicker && isStartDate(week.date!)\"\r\n [class.x-date-range-end]=\"rangePicker && isEndDate(week.date!)\"\r\n [class.x-date-range-start-left]=\"rangePicker && week.isRangeStartLeft\"\r\n [class.x-date-range-start-right]=\"rangePicker && week.isRangeStartRight\"\r\n [class.x-date-range-end-left]=\"rangePicker && week.isRangeEndLeft\"\r\n [class.x-date-range-end-right]=\"rangePicker && week.isRangeEndRight\"\r\n [class.x-date-range-hover]=\"rangePicker && week.isRangeHover\"\r\n [class.x-date-range-hover-start-left]=\"rangePicker && week.isRangeHoverStartLeft\"\r\n [class.x-date-range-hover-start-right]=\"rangePicker && week.isRangeHoverStartRight\"\r\n [class.x-date-range-hover-end-left]=\"rangePicker && week.isRangeHoverEndLeft\"\r\n [class.x-date-range-hover-end-right]=\"rangePicker && week.isRangeHoverEndRight\"\r\n [class.x-date-range-hover-start]=\"rangePicker && week.isRangeHoverStart\"\r\n [class.x-date-range-hover-end]=\"rangePicker && week.isRangeHoverEnd\"\r\n [class.x-date-in-range]=\"rangePicker && week.isInRange\"\r\n [class.x-date-in-range-hover]=\"rangePicker && week.isInRangeHover\"\r\n [class.x-date-active]=\"!rangePicker && (week.date | date : 'yyyyMMdd') === (model | date : 'yyyyMMdd')\"\r\n title=\"{{ week.date | date : 'yyyy-MM-dd' }}\"\r\n (click)=\"dateClick(week)\"\r\n (mouseenter)=\"rangePicker && onTdMouseenter(week)\"\r\n (mouseleave)=\"rangePicker && onTdMouseleave(week)\"\r\n >\r\n <div *ngIf=\"!dateTemp\" class=\"x-date-text\">\r\n {{ week.date | date : 'd' }}\r\n </div>\r\n <ng-container *ngIf=\"dateTemp\">\r\n <ng-container *ngTemplateOutlet=\"dateTemp; context: { date$: week.date }\"></ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.x-picker-date{margin:0;padding:0}.x-picker-date-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem;border-bottom:var(--x-border-width) solid var(--x-border)}.x-picker-date-year-month{flex:1;text-align:center}.x-picker-date-body{padding:.5rem}.x-picker-date-body>table{width:100%;border-collapse:collapse;border-spacing:0}.x-picker-date-body>table th{font-weight:400;height:2rem;color:var(--x-text-400)}.x-picker-date-body>table td{padding:.25rem 0;text-align:center;cursor:pointer;color:var(--x-text-300);position:relative}.x-picker-date-body>table td .x-date-text{width:1.75rem;height:1.5rem;margin:0 auto;border:var(--x-border-width) var(--x-border-style) transparent;border-radius:var(--x-border-radius);transition:var(--x-animation-duration-base);position:relative}.x-picker-date-body>table td:before,.x-picker-date-body>table td:after{position:absolute;top:50%;right:0;left:0;z-index:1;height:1.5rem;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-picker-date-body>table td:hover:not(.x-date-in-range) .x-date-text{background-color:var(--x-background-a200)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next),.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next),.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next):hover,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next):hover,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-picker-date-body>table td.x-date-active:not(.x-date-last-or-next):hover .x-date-text,.x-picker-date-body>table td.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-picker-date-body>table td.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-picker-date-body>table td.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-picker-date-body>table td.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-picker-date-body>table td.x-date-last-or-next{color:var(--x-text-700)}.x-picker-date-body>table td.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-picker-date-body>table td.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-picker-date-body>table td.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{width:1.75rem;transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-picker-date-body>table td.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-picker-date-body>table td.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{width:1.75rem;transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-picker-date-body>table td.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-picker-date-body>table td.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-picker-date-body>table td.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-picker-date-body>table td.x-date-now:not(.x-date-active):not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{color:var(--x-primary);border-color:var(--x-primary)}.x-picker-date .x-visibility{visibility:hidden}\n"] }]
152
268
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.DatePipe }, { type: i1.LowerCasePipe }, { type: i0.ChangeDetectorRef }, { type: i2.XConfigService }, { type: i3.XI18nService }]; } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBVTFELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUE2QjNELFlBQ1MsUUFBbUIsRUFDbkIsUUFBa0IsRUFDbEIsYUFBNEIsRUFDNUIsR0FBc0IsRUFDdEIsYUFBNkIsRUFDN0IsSUFBa0I7UUFFekIsS0FBSyxFQUFFLENBQUM7UUFQRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLFNBQUksR0FBSixJQUFJLENBQWM7UUFsQzNCLFdBQU0sR0FBRztZQUNQLG1CQUFtQjtZQUNuQixvQkFB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TUFBTSxhQUNwQyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENodW5rLCBYSXNDaGFuZ2UsIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhEYXRlUGlja2VyVHlwZSwgWFBpY2tlckRhdGVQcmVmaXgsIFhQaWNrZXJEYXRlUHJvcGVydHkgfSBmcm9tICcuL2RhdGUtcGlja2VyLnByb3BlcnR5JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYSTE4bkRhdGVQaWNrZXIsIFhJMThuU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hQaWNrZXJEYXRlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9waWNrZXItZGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYUGlja2VyRGF0ZUNvbXBvbmVudCBleHRlbmRzIFhQaWNrZXJEYXRlUHJvcGVydHkgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHRpdGxlcyA9IFtcclxuICAgICdkYXRlUGlja2VyLm1vbmRheScsXHJcbiAgICAnZGF0ZVBpY2tlci50dWVzZGF5JyxcclxuICAgICdkYXRlUGlja2VyLndlZG5lc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci50aHVyc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci5mcmlkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc2F0dXJkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuc3VuZGF5J1xyXG4gIF07XHJcbiAgbm93ID0gbmV3IERhdGUoKTtcclxuICBkYXRlczogRGF0ZVtdW10gPSBbXTtcclxuICBsb2NhbGU6IFhJMThuRGF0ZVBpY2tlciA9IHt9O1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCByYW5nZVN0YXJ0KCkge1xyXG4gICAgaWYgKHRoaXMucmFuZ2VWYWx1ZSAmJiB0aGlzLnJhbmdlVmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYW5nZVZhbHVlWzBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhbmdlRW5kKCkge1xyXG4gICAgaWYgKHRoaXMucmFuZ2VWYWx1ZSAmJiB0aGlzLnJhbmdlVmFsdWUubGVuZ3RoID4gMSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYW5nZVZhbHVlWzFdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwdWJsaWMgbG93ZXJDYXNlUGlwZTogTG93ZXJDYXNlUGlwZSxcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGkxOG46IFhJMThuU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhzaW1wbGVzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IGRpc3BsYXkgfSA9IHNpbXBsZXM7XHJcbiAgICBYSXNDaGFuZ2UoZGlzcGxheSkgJiYgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLnNldERheXModGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIHNldERheXMoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGRhdGVzOiBEYXRlW10gPSBbXTtcclxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGZpcnN0ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3QgbGFzdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7XHJcbiAgICBjb25zdCBsYXN0RGF0ZSA9IGxhc3QuZ2V0RGF0ZSgpO1xyXG4gICAgY29uc3QgZmlyc3REYXkgPSBmaXJzdC5nZXREYXkoKTtcclxuICAgIGNvbnN0IGxhc3REYXkgPSBsYXN0LmdldERheSgpO1xyXG5cclxuICAgIGxldCBkYXkgPSBmaXJzdERheTtcclxuICAgIGxldCBpbmRleCA9IDE7XHJcbiAgICB3aGlsZSAoZGF5ICE9PSAxKSB7XHJcbiAgICAgIGluZGV4LS07XHJcbiAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGluZGV4KTtcclxuICAgICAgZGF0ZXMgPSBbZGF0ZSwgLi4uZGF0ZXNdO1xyXG4gICAgICBkYXkgPSBkYXRlLmdldERheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluZGV4ID0gMTtcclxuICAgIGRvIHtcclxuICAgICAgZGF0ZXMgPSBbLi4uZGF0ZXMsIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBpbmRleCldO1xyXG4gICAgICBpbmRleCsrO1xyXG4gICAgfSB3aGlsZSAoaW5kZXggPD0gbGFzdERhdGUpO1xyXG5cclxuICAgIGluZGV4ID0gMDtcclxuICAgIGRheSA9IGxhc3REYXk7XHJcbiAgICB3aGlsZSAoZGF5ICE9PSAwIHx8IGRhdGVzLmxlbmd0aCAhPT0gNyAqIDYpIHtcclxuICAgICAgaW5kZXgrKztcclxuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIGluZGV4KTtcclxuICAgICAgZGF0ZXMgPSBbLi4uZGF0ZXMsIGRhdGVdO1xyXG4gICAgICBkYXkgPSBkYXRlLmdldERheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZXMgPSBYQ2h1bmsoZGF0ZXMsIDcpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KFtkYXRlc1swXSwgZGF0ZXNbZGF0ZXMubGVuZ3RoIC0gMV1dKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2xpY2soZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5tb2RlbCA9IGRhdGU7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICByYW5nZURpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTdGFydCAhPT0gJycgJiYgZGF0ZS5nZXRUaW1lKCkgPCB0aGlzLnJhbmdlU3RhcnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2VUeXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlRW5kICE9PSAnJyAmJiBkYXRlLmdldFRpbWUoKSA+IHRoaXMucmFuZ2VFbmQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgIHRoaXMuZGlzcGxheUNoYW5nZS5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICB0aGlzLnNldERheXModGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIG5leHRNb250aChudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KG51bSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcihudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy55ZWFyQ2hhbmdlLmVtaXQobnVtKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHR5cGVPbkNoYW5nZSh0eXBlOiBYRGF0ZVBpY2tlclR5cGUpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLnR5cGVDaGFuZ2UuZW1pdCh0eXBlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlOb2RlKF9pbmRleDogbnVtYmVyLCBpdGVtOiBzdHJpbmcgfCBEYXRlKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtcGlja2VyLWRhdGVcIiBbY2xhc3MueC1kYXRlLXBpY2tlci1kYXRldGVtcF09XCJkYXRlVGVtcFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLWhlYWRlclwiICpuZ0lmPVwic2hvd0hlYWRlclwiPlxyXG4gICAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtbGVmdFwiIHNpemU9XCJzbWFsbFwiIG9ubHlJY29uIChjbGljayk9XCJuZXh0WWVhcigtMSlcIiBbY2xhc3MueC12aXNpYmlsaXR5XT1cIiFsYXN0WWVhckJ0blwiPjwveC1idXR0b24+XHJcbiAgICA8eC1idXR0b24gaWNvbj1cImZ0by1jaGV2cm9uLWxlZnRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dE1vbnRoKC0xKVwiIFtjbGFzcy54LXZpc2liaWxpdHldPVwiIWxhc3RNb250aEJ0blwiPjwveC1idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZS15ZWFyLW1vbnRoXCI+XHJcbiAgICAgIDx4LWJ1dHRvbiB0eXBlPVwidGV4dFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJ0eXBlT25DaGFuZ2UoJ3llYXInKVwiPnt7IGRpc3BsYXkgfCBkYXRlOiAneXl5eScgfX17eyBsb2NhbGUueWVhciB9fTwveC1idXR0b24+XHJcbiAgICAgIDx4LWJ1dHRvbiB0eXBlPVwidGV4dFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJ0eXBlT25DaGFuZ2UoJ21vbnRoJylcIj57eyBnZXRMb2NhbGVNb250aChkaXNwbGF5KSB9fTwveC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dE1vbnRoKDEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbmV4dFllYXJCdG5cIj48L3gtYnV0dG9uPlxyXG4gICAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dFllYXIoMSlcIiBbY2xhc3MueC12aXNpYmlsaXR5XT1cIiFuZXh0TW9udGhCdG5cIj48L3gtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLWJvZHlcIj5cclxuICAgIDx0YWJsZSBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgdGl0bGUgb2YgdGl0bGVzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiPnt7IHRpdGxlIHwgeEkxOG4gfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWtzIG9mIGRhdGVzXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiPlxyXG4gICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWxhc3Qtb3ItbmV4dF09XCIod2VlayB8IGRhdGU6ICd5eXl5TU0nKSAhPT0gKGRpc3BsYXkgfCBkYXRlOiAneXl5eU1NJylcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtbm93XT1cIih3ZWVrIHwgZGF0ZTogJ3l5eXlNTWRkJykgPT09IChub3cgfCBkYXRlOiAneXl5eU1NZGQnKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVUZW1wICYmIGRhdGVDbGljayh3ZWVrKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8eC1idXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhdGVUZW1wXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIHNpemU9XCJtaW5pXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgd2VlayB8IGRhdGU6ICd5eXl5LU1NLWRkJyB9fVwiXHJcbiAgICAgICAgICAgICAgICBbYWN0aXZhdGVkXT1cIiFyYW5nZVBpY2tlciAmJiAod2VlayB8IGRhdGU6ICd5eXl5TU1kZCcpID09PSAobW9kZWwgfCBkYXRlOiAneXl5eU1NZGQnKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDbGljayh3ZWVrKVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgd2VlayB8IGRhdGU6ICdkJyB9fTwveC1idXR0b25cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUZW1wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRlbXA7IGNvbnRleHQ6IHsgZGF0ZSQ6IHdlZWsgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvcGlja2VyLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQThCLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVUxRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBK0IzRCxZQUNTLFFBQW1CLEVBQ25CLFFBQWtCLEVBQ2xCLGFBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLGFBQTZCLEVBQzdCLElBQWtCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBUEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBcEMzQixXQUFNLEdBQUc7WUFDUCxtQkFBbUI7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QUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxzRUN0QnRDLGcwSEE0REE7MkZEcENhLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxHQUFHLGlCQUFpQixFQUFFLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYQ2h1bmssIFhJc0NoYW5nZSwgWENvbmZpZ1NlcnZpY2UsIFhJc051bGwgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgWERhdGVDZWxsLCBYRGF0ZVBpY2tlclR5cGUsIFhQaWNrZXJEYXRlUHJlZml4LCBYUGlja2VyRGF0ZVByb3BlcnR5IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWEkxOG5EYXRlUGlja2VyLCBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYUGlja2VyRGF0ZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9waWNrZXItZGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGlja2VyLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFBpY2tlckRhdGVDb21wb25lbnQgZXh0ZW5kcyBYUGlja2VyRGF0ZVByb3BlcnR5IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICB0aXRsZXMgPSBbXHJcbiAgICAnZGF0ZVBpY2tlci5tb25kYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIudHVlc2RheScsXHJcbiAgICAnZGF0ZVBpY2tlci53ZWRuZXNkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIudGh1cnNkYXknLFxyXG4gICAgJ2RhdGVQaWNrZXIuZnJpZGF5JyxcclxuICAgICdkYXRlUGlja2VyLnNhdHVyZGF5JyxcclxuICAgICdkYXRlUGlja2VyLnN1bmRheSdcclxuICBdO1xyXG4gIG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgZGF0ZXM6IFhEYXRlQ2VsbFtdID0gW107XHJcbiAgd2Vla0RhdGVzOiBYRGF0ZUNlbGxbXVtdID0gW107XHJcbiAgY2xpY2tDZWxsPzogWERhdGVDZWxsO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IHJhbmdlU3RhcnQoKSB7XHJcbiAgICBpZiAodGhpcy5yYW5nZVZhbHVlICYmIHRoaXMucmFuZ2VWYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlVmFsdWVbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgcmFuZ2VFbmQoKSB7XHJcbiAgICBpZiAodGhpcy5yYW5nZVZhbHVlICYmIHRoaXMucmFuZ2VWYWx1ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlVmFsdWVbMV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT4geC5kYXRlUGlja2VyIGFzIFhJMThuRGF0ZVBpY2tlciksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGlzcGxheSB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZShkaXNwbGF5KSAmJiB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RGF5cyh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgaXNTdGFydERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKCF0aGlzLnJhbmdlVHlwZSB8fCAhdGhpcy5yYW5nZVZhbHVlKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc051bGwodGhpcy5yYW5nZVZhbHVlWzBdKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5yYW5nZVZhbHVlWzBdLCAneXl5eU1NZGQnKSA9PT0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXlNTWRkJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpc0VuZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgaWYgKCF0aGlzLnJhbmdlVHlwZSB8fCAhdGhpcy5yYW5nZVZhbHVlKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc051bGwodGhpcy5yYW5nZVZhbHVlWzFdKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5yYW5nZVZhbHVlWzFdLCAneXl5eU1NZGQnKSA9PT0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3l5eXlNTWRkJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBzZXREYXRlc1N0YXRlKGNlbGw6IFhEYXRlQ2VsbCkge1xyXG4gICAgdGhpcy5jbGVhclN0YXRlKC4uLnRoaXMuZGF0ZXMpO1xyXG4gICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmRhdGVzKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF5U3RhdGUoaXRlbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uVGRNb3VzZWVudGVyKGNlbGwsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uVGRNb3VzZWVudGVyKGNlbGw6IFhEYXRlQ2VsbCwgaXNFbWl0ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5yYW5nZVZhbHVlO1xyXG4gICAgaWYgKCFYSXNOdWxsKHN0YXJ0KSB8fCAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSBjZWxsLmRhdGUhLmdldFRpbWUoKTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmRhdGVzKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbVRpbWUgPSBpdGVtLmRhdGUhLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLmNsZWFyU3RhdGUoaXRlbSk7XHJcbiAgICAgICAgaWYgKCFYSXNOdWxsKHN0YXJ0KSAmJiBYSXNOdWxsKGVuZCkpIHtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnRMZWZ0ID0gdGltZSA8IHN0YXJ0ISAmJiBpdGVtVGltZSA9PT0gc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydFJpZ2h0ID0gdGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA9PT0gc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXIgPVxyXG4gICAgICAgICAgICAodGltZSA8IHN0YXJ0ISAmJiBpdGVtVGltZSA+PSB0aW1lICYmIGl0ZW1UaW1lIDwgc3RhcnQhKSB8fCAodGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA+IHN0YXJ0ISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lIDwgc3RhcnQhO1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lID4gc3RhcnQhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJFbmRMZWZ0ID0gdGltZSA8IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlckVuZFJpZ2h0ID0gdGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9ICh0aW1lIDwgZW5kISAmJiBpdGVtVGltZSA+PSB0aW1lICYmIGl0ZW1UaW1lIDwgZW5kISkgfHwgKHRpbWUgPiBlbmQhICYmIGl0ZW1UaW1lID4gZW5kISAmJiBpdGVtVGltZSA8PSB0aW1lKTtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyU3RhcnQgPSBpdGVtVGltZSA9PT0gdGltZSAmJiB0aW1lIDwgZW5kITtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IGVuZCE7XHJcbiAgICAgICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICAgICAgaXRlbS5pc1JhbmdlSG92ZXJTdGFydExlZnQgPSB0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID09PSBzdGFydCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlckVuZFJpZ2h0ID0gdGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPT09IGVuZCE7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlciA9XHJcbiAgICAgICAgICAgICh0aW1lIDwgc3RhcnQhICYmIGl0ZW1UaW1lID49IHRpbWUgJiYgaXRlbVRpbWUgPCBzdGFydCEpIHx8ICh0aW1lID4gZW5kISAmJiBpdGVtVGltZSA+IGVuZCEgJiYgaXRlbVRpbWUgPD0gdGltZSk7XHJcbiAgICAgICAgICBpdGVtLmlzUmFuZ2VIb3ZlclN0YXJ0ID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA8IHN0YXJ0ITtcclxuICAgICAgICAgIGl0ZW0uaXNSYW5nZUhvdmVyRW5kID0gaXRlbVRpbWUgPT09IHRpbWUgJiYgdGltZSA+IGVuZCE7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZVR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2VIb3ZlciA9IGl0ZW1UaW1lID49IHRpbWUhICYmIGl0ZW1UaW1lIDw9IGVuZCE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2VUeXBlID09PSAnZW5kJykge1xyXG4gICAgICAgICAgICBpdGVtLmlzSW5SYW5nZUhvdmVyID0gaXRlbVRpbWUgPj0gc3RhcnQhICYmIGl0ZW1UaW1lIDw9IHRpbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc0VtaXQpIHtcclxuICAgICAgICB0aGlzLnJhbmdlVGRNb3VzZWVudGVyLmVtaXQoY2VsbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRkTW91c2VsZWF2ZShjZWxsOiBYRGF0ZUNlbGwsIGlzRW1pdCA9IHRydWUpIHtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucmFuZ2VWYWx1ZTtcclxuICAgIGlmICghWElzTnVsbChzdGFydCkgfHwgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLmNsZWFyU3RhdGUoLi4udGhpcy5kYXRlcyk7XHJcbiAgICAgIGlmIChpc0VtaXQpIHRoaXMucmFuZ2VUZE1vdXNlbGVhdmUuZW1pdChjZWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyU3RhdGUoLi4uY2VsbHM6IFhEYXRlQ2VsbFtdKSB7XHJcbiAgICBmb3IgKGxldCBjZWxsIG9mIGNlbGxzKSB7XHJcbiAgICAgIGNlbGwuaXNJblJhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXIgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJTdGFydCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlckVuZCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0TGVmdCA9IGZhbHNlO1xyXG4gICAgICBjZWxsLmlzUmFuZ2VIb3ZlclN0YXJ0UmlnaHQgPSBmYWxzZTtcclxuICAgICAgY2VsbC5pc1JhbmdlSG92ZXJFbmRMZWZ0ID0gZmFsc2U7XHJcbiAgICAgIGNlbGwuaXNSYW5nZUhvdmVyRW5kUmlnaHQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERheXMoZGF0ZTogRGF0ZSkge1xyXG4gICAgbGV0IGRhdGVzOiBYRGF0ZUNlbGxbXSA9IFtdO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZmlyc3QgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XHJcbiAgICBjb25zdCBsYXN0ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKTtcclxuICAgIGNvbnN0IGxhc3REYXRlID0gbGFzdC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheSA9IGZpcnN0LmdldERheSgpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IGxhc3QuZ2V0RGF5KCk7XHJcblxyXG4gICAgbGV0IGRheSA9IGZpcnN0RGF5O1xyXG4gICAgbGV0IGluZGV4ID0gMTtcclxuICAgIHdoaWxlIChkYXkgIT09IDEpIHtcclxuICAgICAgaW5kZXgtLTtcclxuICAgICAgY29uc3QgY2VsbCA9IHsgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGluZGV4KSB9O1xyXG4gICAgICBkYXRlcyA9IFt0aGlzLnNldERheVN0YXRlKGNlbGwpLCAuLi5kYXRlc107XHJcbiAgICAgIGRheSA9IGNlbGwuZGF0ZS5nZXREYXkoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbmRleCA9IDE7XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvbnN0IGNlbGw6IFhEYXRlQ2VsbCA9IHsgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGluZGV4KSwgaXNGaXJzdERheTogaW5kZXggPT09IDEsIGlzTGFzdERheTogaW5kZXggPT09IGxhc3REYXRlIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgaW5kZXgrKztcclxuICAgIH0gd2hpbGUgKGluZGV4IDw9IGxhc3REYXRlKTtcclxuXHJcbiAgICBpbmRleCA9IDA7XHJcbiAgICBkYXkgPSBsYXN0RGF5O1xyXG4gICAgd2hpbGUgKGRheSAhPT0gMCB8fCBkYXRlcy5sZW5ndGggIT09IDcgKiA2KSB7XHJcbiAgICAgIGluZGV4Kys7XHJcbiAgICAgIGNvbnN0IGNlbGwgPSB7IGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaW5kZXgpIH07XHJcbiAgICAgIGRhdGVzID0gWy4uLmRhdGVzLCB0aGlzLnNldERheVN0YXRlKGNlbGwpXTtcclxuICAgICAgZGF5ID0gY2VsbC5kYXRlLmdldERheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZXMgPSBkYXRlcztcclxuICAgIHRoaXMud2Vla0RhdGVzID0gWENodW5rKGRhdGVzLCA3KTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdChbZGF0ZXNbMF0uZGF0ZSEsIGRhdGVzW2RhdGVzLmxlbmd0aCAtIDFdLmRhdGUhXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF5U3RhdGUoY2VsbDogWERhdGVDZWxsKTogWERhdGVDZWxsIHtcclxuICAgIGNvbnN0IHRpbWUgPSBjZWxsLmRhdGU/LmdldFRpbWUoKSE7XHJcbiAgICBjb25zdCBmZGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGNlbGwuZGF0ZSwgJ3l5eXlNTWRkJyk7XHJcbiAgICBjb25zdCBmZGF0ZW0gPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjZWxsLmRhdGUsICd5eXl5TU0nKTtcclxuICAgIGNvbnN0IGZkaXNwbGF5bSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGlzcGxheSwgJ3l5eXlNTScpO1xyXG4gICAgY29uc3QgZm5vdyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMubm93LCAneXl5eU1NZGQnKTtcclxuICAgIGNlbGwuaXNMYXN0T3JOZXh0ID0gZmRhdGVtICE9PSBmZGlzcGxheW07XHJcbiAgICBjZWxsLmlzTm93ID0gZmRhdGUgPT09IGZub3c7XHJcbiAgICBpZiAodGhpcy5yYW5nZVBpY2tlcikge1xyXG4gICAgICBpZiAoIXRoaXMucmFuZ2VWYWx1ZSkgcmV0dXJuIGNlbGw7XHJcbiAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMucmFuZ2VWYWx1ZTtcclxuICAgICAgY2VsbC5pc0luUmFuZ2UgPSAhIXN0YXJ0ICYmICEhZW5kICYmIHRpbWUgPj0gc3RhcnQhICYmIHRpbWUgPD0gZW5kITtcclxuICAgICAgY2VsbC5pc1JhbmdlU3RhcnRSaWdodCA9ICEhc3RhcnQgJiYgISFlbmQgJiYgZmRhdGUgPT09IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHN0YXJ0ISwgJ3l5eXlNTWRkJyk7XHJcbiAgICAgIGNlbGwuaXNSYW5nZUVuZExlZnQgPSAhIXN0YXJ0ICYmICEhZW5kICYmIGZkYXRlID09PSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShlbmQhLCAneXl5eU1NZGQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjZWxsO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNsaWNrKGNlbGw6IFhEYXRlQ2VsbCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IGNlbGwuZGF0ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChjZWxsLmRhdGUpO1xyXG4gICAgaWYgKHRoaXMucmFuZ2VQaWNrZXIpIHtcclxuICAgICAgdGhpcy5jbGVhclN0YXRlKC4uLnRoaXMuZGF0ZXMpO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZGF0ZXMpIHtcclxuICAgICAgICB0aGlzLnNldERheVN0YXRlKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmFuZ2VEYXRlQ2xpY2suZW1pdChjZWxsKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICByYW5nZURpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLnJhbmdlVHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTdGFydCAhPT0gJycgJiYgZGF0ZS5nZXRUaW1lKCkgPCB0aGlzLnJhbmdlU3RhcnQhO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJhbmdlVHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5yYW5nZUVuZCAhPT0gJycgJiYgZGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnJhbmdlRW5kITtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldERpc3BsYXkoZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpO1xyXG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIHRoaXMuc2V0RGF5cyh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQobnVtKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFyKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLnllYXJDaGFuZ2UuZW1pdChudW0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHlwZU9uQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMudHlwZUNoYW5nZS5lbWl0KHR5cGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeU5vZGUoX2luZGV4OiBudW1iZXIsIGl0ZW06IHN0cmluZyB8IERhdGUgfCBYRGF0ZUNlbGwpIHtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1waWNrZXItZGF0ZVwiIFtjbGFzcy54LWRhdGUtcGlja2VyLWRhdGV0ZW1wXT1cImRhdGVUZW1wXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtcGlja2VyLWRhdGUtaGVhZGVyXCIgKm5nSWY9XCJzaG93SGVhZGVyXCI+XHJcbiAgICA8eC1idXR0b24gaWNvbj1cImZ0by1jaGV2cm9ucy1sZWZ0XCIgc2l6ZT1cInNtYWxsXCIgb25seUljb24gKGNsaWNrKT1cIm5leHRZZWFyKC0xKVwiIFtjbGFzcy54LXZpc2liaWxpdHldPVwiIWxhc3RZZWFyQnRuXCI+PC94LWJ1dHRvbj5cclxuICAgIDx4LWJ1dHRvbiBpY29uPVwiZnRvLWNoZXZyb24tbGVmdFwiIHNpemU9XCJzbWFsbFwiIG9ubHlJY29uIChjbGljayk9XCJuZXh0TW9udGgoLTEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbGFzdE1vbnRoQnRuXCI+PC94LWJ1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLXllYXItbW9udGhcIj5cclxuICAgICAgPHgtYnV0dG9uIHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cInR5cGVPbkNoYW5nZSgneWVhcicpXCI+e3sgZGlzcGxheSB8IGRhdGUgOiAneXl5eScgfX17eyBsb2NhbGUueWVhciB9fTwveC1idXR0b24+XHJcbiAgICAgIDx4LWJ1dHRvbiB0eXBlPVwidGV4dFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJ0eXBlT25DaGFuZ2UoJ21vbnRoJylcIj57eyBnZXRMb2NhbGVNb250aChkaXNwbGF5KSB9fTwveC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dE1vbnRoKDEpXCIgW2NsYXNzLngtdmlzaWJpbGl0eV09XCIhbmV4dFllYXJCdG5cIj48L3gtYnV0dG9uPlxyXG4gICAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dFllYXIoMSlcIiBbY2xhc3MueC12aXNpYmlsaXR5XT1cIiFuZXh0TW9udGhCdG5cIj48L3gtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXBpY2tlci1kYXRlLWJvZHlcIj5cclxuICAgIDx0YWJsZSBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgdGl0bGUgb2YgdGl0bGVzOyB0cmFja0J5OiB0cmFja0J5Tm9kZVwiPnt7IHRpdGxlIHwgeEkxOG4gfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWtzIG9mIHdlZWtEYXRlc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgd2VlayBvZiB3ZWVrczsgdHJhY2tCeTogdHJhY2tCeU5vZGVcIj5cclxuICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1sYXN0LW9yLW5leHRdPVwid2Vlay5pc0xhc3RPck5leHRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtbm93XT1cIndlZWsuaXNOb3dcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtZmlyc3QtZGF5XT1cIndlZWsuaXNGaXJzdERheVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1sYXN0LWRheV09XCJ3ZWVrLmlzTGFzdERheVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1zdGFydF09XCJyYW5nZVBpY2tlciAmJiBpc1N0YXJ0RGF0ZSh3ZWVrLmRhdGUhKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1lbmRdPVwicmFuZ2VQaWNrZXIgJiYgaXNFbmREYXRlKHdlZWsuZGF0ZSEpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXN0YXJ0LWxlZnRdPVwicmFuZ2VQaWNrZXIgJiYgd2Vlay5pc1JhbmdlU3RhcnRMZWZ0XCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXN0YXJ0LXJpZ2h0XT1cInJhbmdlUGlja2VyICYmIHdlZWsuaXNSYW5nZVN0YXJ0UmlnaHRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtZW5kLWxlZnRdPVwicmFuZ2VQaWNrZXIgJiYgd2Vlay5pc1JhbmdlRW5kTGVmdFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1lbmQtcmlnaHRdPVwicmFuZ2VQaWNrZXIgJiYgd2Vlay5pc1JhbmdlRW5kUmlnaHRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXJdPVwicmFuZ2VQaWNrZXIgJiYgd2Vlay5pc1JhbmdlSG92ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItc3RhcnQtbGVmdF09XCJyYW5nZVBpY2tlciAmJiB3ZWVrLmlzUmFuZ2VIb3ZlclN0YXJ0TGVmdFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1ob3Zlci1zdGFydC1yaWdodF09XCJyYW5nZVBpY2tlciAmJiB3ZWVrLmlzUmFuZ2VIb3ZlclN0YXJ0UmlnaHRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kLWxlZnRdPVwicmFuZ2VQaWNrZXIgJiYgd2Vlay5pc1JhbmdlSG92ZXJFbmRMZWZ0XCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyLWVuZC1yaWdodF09XCJyYW5nZVBpY2tlciAmJiB3ZWVrLmlzUmFuZ2VIb3ZlckVuZFJpZ2h0XCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLWhvdmVyLXN0YXJ0XT1cInJhbmdlUGlja2VyICYmIHdlZWsuaXNSYW5nZUhvdmVyU3RhcnRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtaG92ZXItZW5kXT1cInJhbmdlUGlja2VyICYmIHdlZWsuaXNSYW5nZUhvdmVyRW5kXCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWluLXJhbmdlXT1cInJhbmdlUGlja2VyICYmIHdlZWsuaXNJblJhbmdlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MueC1kYXRlLWluLXJhbmdlLWhvdmVyXT1cInJhbmdlUGlja2VyICYmIHdlZWsuaXNJblJhbmdlSG92ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy54LWRhdGUtYWN0aXZlXT1cIiFyYW5nZVBpY2tlciAmJiAod2Vlay5kYXRlIHwgZGF0ZSA6ICd5eXl5TU1kZCcpID09PSAobW9kZWwgfCBkYXRlIDogJ3l5eXlNTWRkJylcIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgd2Vlay5kYXRlIHwgZGF0ZSA6ICd5eXl5LU1NLWRkJyB9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDbGljayh3ZWVrKVwiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmFuZ2VQaWNrZXIgJiYgb25UZE1vdXNlZW50ZXIod2VlaylcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInJhbmdlUGlja2VyICYmIG9uVGRNb3VzZWxlYXZlKHdlZWspXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0ZVRlbXBcIiBjbGFzcz1cIngtZGF0ZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyB3ZWVrLmRhdGUgfCBkYXRlIDogJ2QnIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGVUZW1wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRlbXA7IGNvbnRleHQ6IHsgZGF0ZSQ6IHdlZWsuZGF0ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -100,8 +100,8 @@ export class XInputComponent extends XInputProperty {
100
100
  const clearValue = this.value;
101
101
  this.value = '';
102
102
  this.change(this.value);
103
- this.clearEmit.emit(clearValue);
104
103
  this.inputRef.nativeElement.focus();
104
+ this.clearEmit.emit(clearValue);
105
105
  }
106
106
  setFlexClass() {
107
107
  if (this.flexClass.length > 0) {
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
191
191
  type: HostBinding,
192
192
  args: ['style.width.px']
193
193
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBSXZCLFNBQVMsRUFHVCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBa0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVd2RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0lBZ0RqRCxZQUNTLFFBQW1CLEVBQ25CLFVBQW1DLEVBQzFCLEdBQXNCLEVBQy9CLGFBQTZCLEVBQ2pCLFVBQWdDO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBTkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUF0Q3JELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQzFCLGlCQUFZLEdBQVcsR0FBRyxD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QUM7SUFDM0IsQ0FBQzs7K0hBbkxVLGVBQWU7bUhBQWYsZUFBZSwrRkFGZixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyx3WUMzQjlDLHN2SEFtRkE7MkZEdERhLGVBQWU7a0JBUjNCLFNBQVM7K0JBQ0UsR0FBRyxZQUFZLEVBQUUsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsaUJBQWlCLENBQUM7OzBCQXVEekMsUUFBUTs0Q0FwRGtDLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRixRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1gsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUVTLFFBQVE7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPcHRpb25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBIb3N0QmluZGluZ1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXRQcmVmaXgsIFhJbnB1dFByb3BlcnR5IH0gZnJvbSAnLi9pbnB1dC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYSXNDaGFuZ2UsIFhDbGVhckNsYXNzLCBYQ29uZmlnU2VydmljZSwgWElzVW5kZWZpbmVkLCBYSXNGdW5jdGlvbiB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WElucHV0UHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWElucHV0Q29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhJbnB1dENvbXBvbmVudCBleHRlbmRzIFhJbnB1dFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VmFsdWVSZWYnKSBpbnB1dFZhbHVlUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKSBnZXQgZ2V0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aWR0aDtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2UodmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgbGVuZ3RoVG90YWw6IHN0cmluZyA9ICcnO1xyXG4gIHBhZGRpbmdMZWZ0OiBudW1iZXIgPSAwLjQ7XHJcbiAgcGFkZGluZ1JpZ2h0OiBudW1iZXIgPSAwLjQ7XHJcbiAgY2xlYXJTaG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmxleENsYXNzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGdldEljb24oKSB7XHJcbiAgICByZXR1cm4gIVhJc0VtcHR5KHRoaXMuaWNvbik7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SWNvbkxheW91dExlZnQoKSB7XHJcbiAgICByZXR1cm4gIVhJc0VtcHR5KHRoaXMuaWNvbikgJiYgdGhpcy5pY29uTGF5b3V0ID09PSAnbGVmdCc7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SWNvbkxheW91dFJpZ2h0KCkge1xyXG4gICAgcmV0dXJuICFYSXNFbXB0eSh0aGlzLmljb24pICYmIHRoaXMuaWNvbkxheW91dCA9PT0gJ3JpZ2h0JztcclxuICB9XHJcblxyXG4gIGdldCBiZWZvcmVJc1RlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XHJcbiAgfVxyXG5cclxuICBnZXQgYWZ0ZXJJc1RlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWZ0ZXIgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcclxuICB9XHJcblxyXG4gIGdldCBnZXRUZW1wbGF0ZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQgKyB0aGlzLnBhZGRpbmdSaWdodH1yZW0pYDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEdyb3VwOiBYSW5wdXRHcm91cENvbXBvbmVudFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgICB0aGlzLnNldEZsZXhDbGFzcygpO1xyXG4gICAgdGhpcy5zZXRJbmhlcml0ZWRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBjbGVhcmFibGUsIHNpemUsIGxhYmVsQWxpZ24sIGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24sIGljb24sIGljb25TcGluLCBjbGVhclNob3cgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoY2xlYXJhYmxlKSAmJiB0aGlzLnNldENsZWFyYWJsZSgpO1xyXG4gICAgWElzQ2hhbmdlKHNpemUsIGxhYmVsQWxpZ24pICYmIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICAgIFhJc0NoYW5nZShqdXN0aWZ5LCBhbGlnbiwgZGlyZWN0aW9uKSAmJiB0aGlzLnNldEZsZXhDbGFzcygpO1xyXG4gICAgWElzQ2hhbmdlKGljb24sIGljb25TcGluLCBjbGVhclNob3cpICYmIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9yZXF1aXJlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlcXVpcmVkID0gWElzRW1wdHkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDbGVhcmFibGUoKTtcclxuICAgIGlmICh0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZhbHVlTGVuZ3RoID0gWElzRW1wdHkodmFsdWUpID8gMCA6IGAke3ZhbHVlfWAubGVuZ3RoO1xyXG4gICAgICB0aGlzLmxlbmd0aFRvdGFsID0gYCR7dGhpcy52YWx1ZUxlbmd0aH0vJHt0aGlzLm1heGxlbmd0aH1gO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChbJycsIHVuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy52YWxpZGF0b3IgJiYgWElzRnVuY3Rpb24odGhpcy5pbnB1dFZhbGlkYXRvcikpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkSW5wdXRWYWxpZGF0b3IgPSAhdGhpcy5pbnB1dFZhbGlkYXRvcih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyKCkge1xyXG4gICAgY29uc3QgY2xlYXJWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuY2xlYXJFbWl0LmVtaXQoY2xlYXJWYWx1ZSk7XHJcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHNldEZsZXhDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmZsZXhDbGFzcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGNscyBvZiB0aGlzLmZsZXhDbGFzcykge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgY2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mbGV4Q2xhc3MgPSB0aGlzLnNldEZsZXgodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRDbGVhcmFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jbGVhclNob3cgPSAhWElzRW1wdHkodGhpcy52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyU2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgfVxyXG5cclxuICBzZXRJbmhlcml0ZWRWYWx1ZSgpIHtcclxuICAgIGlmICghdGhpcy5pbnB1dEdyb3VwKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc1VuZGVmaW5lZCh0aGlzLmlucHV0R3JvdXAuc2l6ZSkpIHtcclxuICAgICAgdGhpcy5zaXplID0gdGhpcy5pbnB1dEdyb3VwLnNpemU7XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc1VuZGVmaW5lZCh0aGlzLmlucHV0R3JvdXAuYm9yZGVyZWQpKSB7XHJcbiAgICAgIHRoaXMuYm9yZGVyZWQgPSB0aGlzLmlucHV0R3JvdXAuYm9yZGVyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYWRkaW5nKCkge1xyXG4gICAgdGhpcy5wYWRkaW5nTGVmdCA9XHJcbiAgICAgIHRoaXMubWF4bGVuZ3RoICYmIHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdyaWdodCdcclxuICAgICAgICA/ICh0aGlzLmxlbmd0aFRvdGFsLmxlbmd0aCArIDIpICogMC4zODVcclxuICAgICAgICA6IHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdsZWZ0J1xyXG4gICAgICAgID8gTnVtYmVyKHRoaXMuaW5wdXRJY29uUGFkZGluZylcclxuICAgICAgICA6IE51bWJlcih0aGlzLmlucHV0UGFkZGluZyk7XHJcbiAgICB0aGlzLnBhZGRpbmdSaWdodCA9XHJcbiAgICAgIHRoaXMubWF4bGVuZ3RoICYmIHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdsZWZ0J1xyXG4gICAgICAgID8gKHRoaXMubGVuZ3RoVG90YWwubGVuZ3RoICsgMikgKiAwLjM4NVxyXG4gICAgICAgIDogKHRoaXMuaWNvbiB8fCB0aGlzLmNsZWFyU2hvdykgJiYgdGhpcy5pY29uTGF5b3V0ID09PSAncmlnaHQnXHJcbiAgICAgICAgPyBOdW1iZXIodGhpcy5pbnB1dEljb25QYWRkaW5nKVxyXG4gICAgICAgIDogdGhpcy5tYXhsZW5ndGggJiYgIXRoaXMuaWNvblxyXG4gICAgICAgID8gKHRoaXMubGVuZ3RoVG90YWwubGVuZ3RoICsgMikgKiAwLjM4NVxyXG4gICAgICAgIDogTnVtYmVyKHRoaXMuaW5wdXRQYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIGlucHV0Rm9jdXModHlwZTogJ2ZvY3VzJyB8ICdzZWxlY3QnIHwgJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJykge1xyXG4gICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUpIHJldHVybjtcclxuICAgIGlmICh0eXBlID09PSAnYWZ0ZXInKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlLmxlbmd0aCwgdGhpcy52YWx1ZS5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVmb3JlJykge1xyXG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB0aGlzLnZhbHVlLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMuY2xhc3NNYXAsIHRoaXMubGFiZWxNYXApO1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYSW5wdXRQcmVmaXh9LSR7dGhpcy5zaXplfWBdID0gdGhpcy5zaXplID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5sYWJlbE1hcFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWdufWBdID0gdGhpcy5sYWJlbEFsaWduID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5jaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjaW5wdXRFbGVtZW50XHJcbiAgY2xhc3M9XCJ4LWlucHV0XCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy54LWNsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gIFtjbGFzcy54LWNsZWFyLXNob3ddPVwiY2xlYXJTaG93XCJcclxuICBbY2xhc3MueC1pbnB1dC1pY29uXT1cImdldEljb25cIlxyXG4gIFtjbGFzcy54LWlucHV0LWFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gIFtjbGFzcy54LWlucHV0LXBvaW50ZXJdPVwicG9pbnRlclwiXHJcbiAgW2NsYXNzLngtaW5wdXQtYm9yZGVyZWRdPVwiYm9yZGVyZWRcIlxyXG4gIFtjbGFzcy54LWlucHV0LWljb24tbGVmdF09XCJnZXRJY29uTGF5b3V0TGVmdFwiXHJcbiAgW2NsYXNzLngtaW5wdXQtaWNvbi1yaWdodF09XCJnZXRJY29uTGF5b3V0UmlnaHRcIlxyXG4gIFtjbGFzcy54LWlucHV0LWFmdGVyXT1cImFmdGVyXCJcclxuICBbY2xhc3MueC1pbnB1dC1iZWZvcmVdPVwiYmVmb3JlXCJcclxuICBbY2xhc3MueC1pbnB1dC1hZnRlci10ZW1wbGF0ZV09XCJhZnRlcklzVGVtcGxhdGVcIlxyXG4gIFtjbGFzcy54LWlucHV0LWJlZm9yZS10ZW1wbGF0ZV09XCJiZWZvcmVJc1RlbXBsYXRlXCJcclxuICBbY2xhc3MueC1pbnB1dC12YWx1ZS10ZW1wbGF0ZV09XCJ2YWx1ZVRwbFwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbY2xhc3MueC1pbnB1dC1sYWJlbC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoXCIgW25nQ2xhc3NdPVwibGFiZWxNYXBcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cIngtaW5wdXQtcm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1pbnB1dC1yb3ctYmVmb3JlXCIgKm5nSWY9XCJiZWZvcmVcIiBbY2xhc3MueC1pbnB1dC1yb3ctYmVmb3JlLXRlbXBsYXRlXT1cImJlZm9yZUlzVGVtcGxhdGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImJlZm9yZVwiPnt7IGJlZm9yZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1pbnB1dC1pbnB1dFwiIChtb3VzZWVudGVyKT1cInhNb3VzZWVudGVyLmVtaXQoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cInhNb3VzZWxlYXZlLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgI2lucHV0VmFsdWVSZWZcclxuICAgICAgICBjbGFzcz1cIngtaW5wdXQtdmFsdWUtdGVtcGxhdGUtdmFsdWVcIlxyXG4gICAgICAgIFtzdHlsZS5sZWZ0LnJlbV09XCJwYWRkaW5nTGVmdFwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdF09XCIwXCJcclxuICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodF09XCIwXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0VGVtcGxhdGVXaWR0aFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInhDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICpuZ0lmPVwidmFsdWVUcGxcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVHBsOyBjb250ZXh0OiB2YWx1ZVRwbENvbnRleHQgPyB2YWx1ZVRwbENvbnRleHQgOiB7ICR2YWx1ZTogdmFsdWUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI2lucHV0UmVmXHJcbiAgICAgICAgW2NsYXNzLngtaW5wdXQtaGFzLXZhbHVlLXRlbXBsYXRlXT1cInZhbHVlVHBsXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5yZW1dPVwicGFkZGluZ0xlZnRcIlxyXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0LnJlbV09XCJwYWRkaW5nUmlnaHRcIlxyXG4gICAgICAgIChmb2N1cyk9XCJ4Rm9jdXMuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJ4Qmx1ci5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChpbnB1dCk9XCJ4SW5wdXQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJmb3JtQ29udHJvbFZhbGlkYXRvcigpOyB4S2V5ZG93bi5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChjbGljayk9XCJ4Q2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoY29tcG9zaXRpb25zdGFydCk9XCJ4Q29tcG9zaXRpb24ubmV4dCh0cnVlKVwiXHJcbiAgICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cInhDb21wb3NpdGlvbi5uZXh0KGZhbHNlKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDx4LWljb24gKm5nSWY9XCJjbGVhclNob3cgJiYgIWljb25TcGluXCIgY2xhc3M9XCJ4LWlucHV0LWNsZWFyXCIgdHlwZT1cImZ0by14XCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPjwveC1pY29uPlxyXG4gICAgICA8eC1pY29uXHJcbiAgICAgICAgKm5nSWY9XCJpY29uICYmICgoIWNsZWFyU2hvdyAmJiBnZXRJY29uTGF5b3V0UmlnaHQpIHx8IGdldEljb25MYXlvdXRMZWZ0IHx8IGljb25TcGluKVwiXHJcbiAgICAgICAgW3R5cGVdPVwiaWNvblwiXHJcbiAgICAgICAgW3NwaW5dPVwiaWNvblNwaW5cIlxyXG4gICAgICAgIChjbGljayk9XCJ4Q2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgPjwveC1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIngtaW5wdXQtbWF4LWxlbmd0aFwiICpuZ0lmPVwibWF4bGVuZ3RoXCI+e3sgbGVuZ3RoVG90YWwgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwieC1pbnB1dC1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpbnZhbGlkXCI+e3sgaW52YWxpZE1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZElzRW1wdHkgfHwgaW52YWxpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LXRvcC1sZWZ0XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtdG9wLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC1ib3R0b20tcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWlucHV0LXJvdy1hZnRlclwiICpuZ0lmPVwiYWZ0ZXJcIiBbY2xhc3MueC1pbnB1dC1yb3ctYWZ0ZXItdGVtcGxhdGVdPVwiYWZ0ZXJJc1RlbXBsYXRlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJhZnRlclwiPnt7IGFmdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBSXZCLFNBQVMsRUFHVCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBa0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVd2RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0lBZ0RqRCxZQUNTLFFBQW1CLEVBQ25CLFVBQW1DLEVBQzFCLEdBQXNCLEVBQy9CLGFBQTZCLEVBQ2pCLFVBQWdDO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBTkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDakIsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUF0Q3JELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsR0FBRyxDQUFDO1FBQzFCLGlCQUFZLEdBQVcsR0FBRyxD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QUM7SUFDM0IsQ0FBQzs7K0hBbkxVLGVBQWU7bUhBQWYsZUFBZSwrRkFGZixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyx3WUMzQjlDLHN2SEFtRkE7MkZEdERhLGVBQWU7a0JBUjNCLFNBQVM7K0JBQ0UsR0FBRyxZQUFZLEVBQUUsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsaUJBQWlCLENBQUM7OzBCQXVEekMsUUFBUTs0Q0FwRGtDLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRixRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1gsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUVTLFFBQVE7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPcHRpb25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBIb3N0QmluZGluZ1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXRQcmVmaXgsIFhJbnB1dFByb3BlcnR5IH0gZnJvbSAnLi9pbnB1dC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYSXNDaGFuZ2UsIFhDbGVhckNsYXNzLCBYQ29uZmlnU2VydmljZSwgWElzVW5kZWZpbmVkLCBYSXNGdW5jdGlvbiB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuaW1wb3J0IHsgWElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WElucHV0UHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWElucHV0Q29tcG9uZW50KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhJbnB1dENvbXBvbmVudCBleHRlbmRzIFhJbnB1dFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VmFsdWVSZWYnKSBpbnB1dFZhbHVlUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKSBnZXQgZ2V0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aWR0aDtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2UodmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVMZW5ndGg6IG51bWJlciA9IDA7XHJcbiAgbGVuZ3RoVG90YWw6IHN0cmluZyA9ICcnO1xyXG4gIHBhZGRpbmdMZWZ0OiBudW1iZXIgPSAwLjQ7XHJcbiAgcGFkZGluZ1JpZ2h0OiBudW1iZXIgPSAwLjQ7XHJcbiAgY2xlYXJTaG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmxleENsYXNzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGdldEljb24oKSB7XHJcbiAgICByZXR1cm4gIVhJc0VtcHR5KHRoaXMuaWNvbik7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SWNvbkxheW91dExlZnQoKSB7XHJcbiAgICByZXR1cm4gIVhJc0VtcHR5KHRoaXMuaWNvbikgJiYgdGhpcy5pY29uTGF5b3V0ID09PSAnbGVmdCc7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SWNvbkxheW91dFJpZ2h0KCkge1xyXG4gICAgcmV0dXJuICFYSXNFbXB0eSh0aGlzLmljb24pICYmIHRoaXMuaWNvbkxheW91dCA9PT0gJ3JpZ2h0JztcclxuICB9XHJcblxyXG4gIGdldCBiZWZvcmVJc1RlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XHJcbiAgfVxyXG5cclxuICBnZXQgYWZ0ZXJJc1RlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWZ0ZXIgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcclxuICB9XHJcblxyXG4gIGdldCBnZXRUZW1wbGF0ZVdpZHRoKCkge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQgKyB0aGlzLnBhZGRpbmdSaWdodH1yZW0pYDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEdyb3VwOiBYSW5wdXRHcm91cENvbXBvbmVudFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgICB0aGlzLnNldEZsZXhDbGFzcygpO1xyXG4gICAgdGhpcy5zZXRJbmhlcml0ZWRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBjbGVhcmFibGUsIHNpemUsIGxhYmVsQWxpZ24sIGp1c3RpZnksIGFsaWduLCBkaXJlY3Rpb24sIGljb24sIGljb25TcGluLCBjbGVhclNob3cgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoY2xlYXJhYmxlKSAmJiB0aGlzLnNldENsZWFyYWJsZSgpO1xyXG4gICAgWElzQ2hhbmdlKHNpemUsIGxhYmVsQWxpZ24pICYmIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICAgIFhJc0NoYW5nZShqdXN0aWZ5LCBhbGlnbiwgZGlyZWN0aW9uKSAmJiB0aGlzLnNldEZsZXhDbGFzcygpO1xyXG4gICAgWElzQ2hhbmdlKGljb24sIGljb25TcGluLCBjbGVhclNob3cpICYmIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9yZXF1aXJlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlcXVpcmVkID0gWElzRW1wdHkodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDbGVhcmFibGUoKTtcclxuICAgIGlmICh0aGlzLm1heGxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZhbHVlTGVuZ3RoID0gWElzRW1wdHkodmFsdWUpID8gMCA6IGAke3ZhbHVlfWAubGVuZ3RoO1xyXG4gICAgICB0aGlzLmxlbmd0aFRvdGFsID0gYCR7dGhpcy52YWx1ZUxlbmd0aH0vJHt0aGlzLm1heGxlbmd0aH1gO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmIChbJycsIHVuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy52YWxpZGF0b3IgJiYgWElzRnVuY3Rpb24odGhpcy5pbnB1dFZhbGlkYXRvcikpIHtcclxuICAgICAgdGhpcy5pbnZhbGlkSW5wdXRWYWxpZGF0b3IgPSAhdGhpcy5pbnB1dFZhbGlkYXRvcih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyKCkge1xyXG4gICAgY29uc3QgY2xlYXJWYWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5jbGVhckVtaXQuZW1pdChjbGVhclZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldEZsZXhDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmZsZXhDbGFzcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGNscyBvZiB0aGlzLmZsZXhDbGFzcykge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgY2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mbGV4Q2xhc3MgPSB0aGlzLnNldEZsZXgodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRDbGVhcmFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jbGVhclNob3cgPSAhWElzRW1wdHkodGhpcy52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyU2hvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XHJcbiAgfVxyXG5cclxuICBzZXRJbmhlcml0ZWRWYWx1ZSgpIHtcclxuICAgIGlmICghdGhpcy5pbnB1dEdyb3VwKSByZXR1cm47XHJcbiAgICBpZiAoIVhJc1VuZGVmaW5lZCh0aGlzLmlucHV0R3JvdXAuc2l6ZSkpIHtcclxuICAgICAgdGhpcy5zaXplID0gdGhpcy5pbnB1dEdyb3VwLnNpemU7XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc1VuZGVmaW5lZCh0aGlzLmlucHV0R3JvdXAuYm9yZGVyZWQpKSB7XHJcbiAgICAgIHRoaXMuYm9yZGVyZWQgPSB0aGlzLmlucHV0R3JvdXAuYm9yZGVyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRQYWRkaW5nKCkge1xyXG4gICAgdGhpcy5wYWRkaW5nTGVmdCA9XHJcbiAgICAgIHRoaXMubWF4bGVuZ3RoICYmIHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdyaWdodCdcclxuICAgICAgICA/ICh0aGlzLmxlbmd0aFRvdGFsLmxlbmd0aCArIDIpICogMC4zODVcclxuICAgICAgICA6IHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdsZWZ0J1xyXG4gICAgICAgID8gTnVtYmVyKHRoaXMuaW5wdXRJY29uUGFkZGluZylcclxuICAgICAgICA6IE51bWJlcih0aGlzLmlucHV0UGFkZGluZyk7XHJcbiAgICB0aGlzLnBhZGRpbmdSaWdodCA9XHJcbiAgICAgIHRoaXMubWF4bGVuZ3RoICYmIHRoaXMuaWNvbiAmJiB0aGlzLmljb25MYXlvdXQgPT09ICdsZWZ0J1xyXG4gICAgICAgID8gKHRoaXMubGVuZ3RoVG90YWwubGVuZ3RoICsgMikgKiAwLjM4NVxyXG4gICAgICAgIDogKHRoaXMuaWNvbiB8fCB0aGlzLmNsZWFyU2hvdykgJiYgdGhpcy5pY29uTGF5b3V0ID09PSAncmlnaHQnXHJcbiAgICAgICAgPyBOdW1iZXIodGhpcy5pbnB1dEljb25QYWRkaW5nKVxyXG4gICAgICAgIDogdGhpcy5tYXhsZW5ndGggJiYgIXRoaXMuaWNvblxyXG4gICAgICAgID8gKHRoaXMubGVuZ3RoVG90YWwubGVuZ3RoICsgMikgKiAwLjM4NVxyXG4gICAgICAgIDogTnVtYmVyKHRoaXMuaW5wdXRQYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIGlucHV0Rm9jdXModHlwZTogJ2ZvY3VzJyB8ICdzZWxlY3QnIHwgJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJykge1xyXG4gICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUpIHJldHVybjtcclxuICAgIGlmICh0eXBlID09PSAnYWZ0ZXInKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlLmxlbmd0aCwgdGhpcy52YWx1ZS5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnYmVmb3JlJykge1xyXG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB0aGlzLnZhbHVlLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMuY2xhc3NNYXAsIHRoaXMubGFiZWxNYXApO1xyXG4gICAgdGhpcy5jbGFzc01hcFtgJHtYSW5wdXRQcmVmaXh9LSR7dGhpcy5zaXplfWBdID0gdGhpcy5zaXplID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5sYWJlbE1hcFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWdufWBdID0gdGhpcy5sYWJlbEFsaWduID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5jaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjaW5wdXRFbGVtZW50XHJcbiAgY2xhc3M9XCJ4LWlucHV0XCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy54LWNsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxyXG4gIFtjbGFzcy54LWNsZWFyLXNob3ddPVwiY2xlYXJTaG93XCJcclxuICBbY2xhc3MueC1pbnB1dC1pY29uXT1cImdldEljb25cIlxyXG4gIFtjbGFzcy54LWlucHV0LWFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gIFtjbGFzcy54LWlucHV0LXBvaW50ZXJdPVwicG9pbnRlclwiXHJcbiAgW2NsYXNzLngtaW5wdXQtYm9yZGVyZWRdPVwiYm9yZGVyZWRcIlxyXG4gIFtjbGFzcy54LWlucHV0LWljb24tbGVmdF09XCJnZXRJY29uTGF5b3V0TGVmdFwiXHJcbiAgW2NsYXNzLngtaW5wdXQtaWNvbi1yaWdodF09XCJnZXRJY29uTGF5b3V0UmlnaHRcIlxyXG4gIFtjbGFzcy54LWlucHV0LWFmdGVyXT1cImFmdGVyXCJcclxuICBbY2xhc3MueC1pbnB1dC1iZWZvcmVdPVwiYmVmb3JlXCJcclxuICBbY2xhc3MueC1pbnB1dC1hZnRlci10ZW1wbGF0ZV09XCJhZnRlcklzVGVtcGxhdGVcIlxyXG4gIFtjbGFzcy54LWlucHV0LWJlZm9yZS10ZW1wbGF0ZV09XCJiZWZvcmVJc1RlbXBsYXRlXCJcclxuICBbY2xhc3MueC1pbnB1dC12YWx1ZS10ZW1wbGF0ZV09XCJ2YWx1ZVRwbFwiXHJcbiAgW25nQ2xhc3NdPVwiY2xhc3NNYXBcIlxyXG4+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbY2xhc3MueC1pbnB1dC1sYWJlbC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtzdHlsZS53aWR0aF09XCJsYWJlbFdpZHRoXCIgW25nQ2xhc3NdPVwibGFiZWxNYXBcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cIngtaW5wdXQtcm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1pbnB1dC1yb3ctYmVmb3JlXCIgKm5nSWY9XCJiZWZvcmVcIiBbY2xhc3MueC1pbnB1dC1yb3ctYmVmb3JlLXRlbXBsYXRlXT1cImJlZm9yZUlzVGVtcGxhdGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImJlZm9yZVwiPnt7IGJlZm9yZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1pbnB1dC1pbnB1dFwiIChtb3VzZWVudGVyKT1cInhNb3VzZWVudGVyLmVtaXQoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cInhNb3VzZWxlYXZlLmVtaXQoJGV2ZW50KVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgI2lucHV0VmFsdWVSZWZcclxuICAgICAgICBjbGFzcz1cIngtaW5wdXQtdmFsdWUtdGVtcGxhdGUtdmFsdWVcIlxyXG4gICAgICAgIFtzdHlsZS5sZWZ0LnJlbV09XCJwYWRkaW5nTGVmdFwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdF09XCIwXCJcclxuICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodF09XCIwXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0VGVtcGxhdGVXaWR0aFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInhDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICpuZ0lmPVwidmFsdWVUcGxcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVHBsOyBjb250ZXh0OiB2YWx1ZVRwbENvbnRleHQgPyB2YWx1ZVRwbENvbnRleHQgOiB7ICR2YWx1ZTogdmFsdWUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI2lucHV0UmVmXHJcbiAgICAgICAgW2NsYXNzLngtaW5wdXQtaGFzLXZhbHVlLXRlbXBsYXRlXT1cInZhbHVlVHBsXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctbGVmdC5yZW1dPVwicGFkZGluZ0xlZnRcIlxyXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0LnJlbV09XCJwYWRkaW5nUmlnaHRcIlxyXG4gICAgICAgIChmb2N1cyk9XCJ4Rm9jdXMuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJ4Qmx1ci5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChpbnB1dCk9XCJ4SW5wdXQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJmb3JtQ29udHJvbFZhbGlkYXRvcigpOyB4S2V5ZG93bi5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChjbGljayk9XCJ4Q2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoY29tcG9zaXRpb25zdGFydCk9XCJ4Q29tcG9zaXRpb24ubmV4dCh0cnVlKVwiXHJcbiAgICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cInhDb21wb3NpdGlvbi5uZXh0KGZhbHNlKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDx4LWljb24gKm5nSWY9XCJjbGVhclNob3cgJiYgIWljb25TcGluXCIgY2xhc3M9XCJ4LWlucHV0LWNsZWFyXCIgdHlwZT1cImZ0by14XCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPjwveC1pY29uPlxyXG4gICAgICA8eC1pY29uXHJcbiAgICAgICAgKm5nSWY9XCJpY29uICYmICgoIWNsZWFyU2hvdyAmJiBnZXRJY29uTGF5b3V0UmlnaHQpIHx8IGdldEljb25MYXlvdXRMZWZ0IHx8IGljb25TcGluKVwiXHJcbiAgICAgICAgW3R5cGVdPVwiaWNvblwiXHJcbiAgICAgICAgW3NwaW5dPVwiaWNvblNwaW5cIlxyXG4gICAgICAgIChjbGljayk9XCJ4Q2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgPjwveC1pY29uPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIngtaW5wdXQtbWF4LWxlbmd0aFwiICpuZ0lmPVwibWF4bGVuZ3RoXCI+e3sgbGVuZ3RoVG90YWwgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwieC1pbnB1dC1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpbnZhbGlkXCI+e3sgaW52YWxpZE1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZElzRW1wdHkgfHwgaW52YWxpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LWJvcmRlci1lcnJvciB4LXRvcC1sZWZ0XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtdG9wLXJpZ2h0XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIngtYm9yZGVyLWVycm9yIHgtYm90dG9tLWxlZnRcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieC1ib3JkZXItZXJyb3IgeC1ib3R0b20tcmlnaHRcIj48L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWlucHV0LXJvdy1hZnRlclwiICpuZ0lmPVwiYWZ0ZXJcIiBbY2xhc3MueC1pbnB1dC1yb3ctYWZ0ZXItdGVtcGxhdGVdPVwiYWZ0ZXJJc1RlbXBsYXRlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJhZnRlclwiPnt7IGFmdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==