@acorex/components 7.1.15 → 7.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/calendar/src/calendar.component.mjs +14 -62
- package/esm2022/common/src/components/value-component.class.mjs +3 -8
- package/esm2022/common/src/services/hotkey.service.mjs +13 -6
- package/esm2022/menu/src/menu.component.mjs +2 -2
- package/esm2022/popover/src/dropdown-component.class.mjs +7 -8
- package/esm2022/popover/src/popover.component.mjs +10 -13
- package/fesm2022/acorex-components-calendar.mjs +12 -60
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +14 -12
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +2 -2
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +12 -16
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/package.json +1 -1
- package/popover/src/dropdown-component.class.d.ts +3 -3
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';
|
2
2
|
import { AXDateTime, AXDateTimeRange } from '@acorex/core/dateTime';
|
3
3
|
import { MXInteractiveComponent, MXValueComponent } from '@acorex/components/common';
|
4
4
|
import { AXConfig } from '@acorex/core/config';
|
@@ -70,7 +70,7 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
70
70
|
const applyCellClass = (slot, cellClass = this.cellClass) => {
|
71
71
|
switch (typeof cellClass) {
|
72
72
|
case 'string':
|
73
|
-
cellClass.split(' ').forEach(c => slot.cssClass[c] = true);
|
73
|
+
cellClass.split(' ').forEach(c => (slot.cssClass[c] = true));
|
74
74
|
break;
|
75
75
|
case 'object':
|
76
76
|
Object.assign(slot.cssClass, cellClass);
|
@@ -80,7 +80,6 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
80
80
|
break;
|
81
81
|
}
|
82
82
|
};
|
83
|
-
debugger;
|
84
83
|
this.views = [];
|
85
84
|
for (let i = 0; i < this.count; i++) {
|
86
85
|
let unit = 'month';
|
@@ -98,11 +97,11 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
98
97
|
unit = 'year';
|
99
98
|
value = i * 10;
|
100
99
|
}
|
101
|
-
//
|
100
|
+
//
|
102
101
|
const current = this._viewStartDate.add(unit, value);
|
103
102
|
const view = {
|
104
103
|
range: this._setDisplayRange(current),
|
105
|
-
slots: []
|
104
|
+
slots: [],
|
106
105
|
};
|
107
106
|
this.views.push(view);
|
108
107
|
//
|
@@ -118,15 +117,11 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
118
117
|
//
|
119
118
|
r.today = d.equal(this._today, 'year');
|
120
119
|
//
|
121
|
-
r.selected =
|
122
|
-
this.value && this.depth == 'year' &&
|
123
|
-
d.equal(this.value, 'year');
|
120
|
+
r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');
|
124
121
|
//
|
125
122
|
const focused = d.year == this._footPrint.year;
|
126
123
|
//
|
127
|
-
r.disabled =
|
128
|
-
(this.min && d.compare(this.min, 'year') == -1) ||
|
129
|
-
(this.max && d.compare(this.max, 'year') == 1);
|
124
|
+
r.disabled = (this.min && d.compare(this.min, 'year') == -1) || (this.max && d.compare(this.max, 'year') == 1);
|
130
125
|
//
|
131
126
|
if (r.disabled) {
|
132
127
|
r.cssClass = {
|
@@ -154,13 +149,9 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
154
149
|
r.tooltip = d.format('MMMM YYYY');
|
155
150
|
r.today = d.equal(this._today, 'month');
|
156
151
|
//
|
157
|
-
r.disabled =
|
158
|
-
(this.min && d.compare(this.min, 'month') == -1) ||
|
159
|
-
(this.max && d.compare(this.max, 'month') == 1);
|
152
|
+
r.disabled = (this.min && d.compare(this.min, 'month') == -1) || (this.max && d.compare(this.max, 'month') == 1);
|
160
153
|
//
|
161
|
-
r.selected =
|
162
|
-
this.value && this.depth == 'month' &&
|
163
|
-
d.equal(this.value, 'month');
|
154
|
+
r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');
|
164
155
|
//
|
165
156
|
const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;
|
166
157
|
//
|
@@ -191,10 +182,7 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
191
182
|
r.today = d.equal(this._today, 'day');
|
192
183
|
r.selected = this.value && d.equal(this.value, 'day');
|
193
184
|
r.holiday = this.isHoliday(d) || this.isWeekend(d);
|
194
|
-
r.disabled =
|
195
|
-
(this.min && d.compare(this.min, 'day') == -1) ||
|
196
|
-
(this.max && d.compare(this.max, 'day') == 1) ||
|
197
|
-
this.isDisabled(d);
|
185
|
+
r.disabled = (this.min && d.compare(this.min, 'day') == -1) || (this.max && d.compare(this.max, 'day') == 1) || this.isDisabled(d);
|
198
186
|
//
|
199
187
|
const focused = d.dayOfMonth == this._footPrint.day && d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;
|
200
188
|
//
|
@@ -253,8 +241,7 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
253
241
|
else if (this.activeView == 'month' && this.depth == 'month') {
|
254
242
|
this._setDate(slot.date);
|
255
243
|
}
|
256
|
-
else if (this.activeView == 'year' &&
|
257
|
-
(this.depth == 'day' || this.depth == 'month')) {
|
244
|
+
else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {
|
258
245
|
this.activeView = 'month';
|
259
246
|
this._footPrint.year = val.year;
|
260
247
|
this.navTo(slot.date);
|
@@ -275,10 +262,7 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
275
262
|
this.activeView = 'year';
|
276
263
|
}
|
277
264
|
_handleOnOptionChanged(e) {
|
278
|
-
if (e.name == 'depth' ||
|
279
|
-
e.name == 'activeView' ||
|
280
|
-
e.name == 'disabledDates' ||
|
281
|
-
e.name == 'holidayDates') {
|
265
|
+
if (e.name == 'depth' || e.name == 'activeView' || e.name == 'disabledDates' || e.name == 'holidayDates') {
|
282
266
|
this.render();
|
283
267
|
}
|
284
268
|
if (e.name == 'type') {
|
@@ -309,8 +293,7 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
309
293
|
}
|
310
294
|
focus() {
|
311
295
|
const func = (s) => this.getHostElement().querySelector(s);
|
312
|
-
const div = func('.ax-calendar-slots>div.ax-state-selected') ||
|
313
|
-
func('.ax-calendar-slots>div');
|
296
|
+
const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');
|
314
297
|
div?.focus();
|
315
298
|
}
|
316
299
|
_navNextPrev(prev) {
|
@@ -383,40 +366,9 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
|
|
383
366
|
export { AXCalendarComponent };
|
384
367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AXCalendarComponent, decorators: [{
|
385
368
|
type: Component,
|
386
|
-
args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [
|
387
|
-
'rtl',
|
388
|
-
'readonly',
|
389
|
-
'value',
|
390
|
-
'name',
|
391
|
-
'disabled',
|
392
|
-
'depth',
|
393
|
-
'activeView',
|
394
|
-
'min',
|
395
|
-
'max',
|
396
|
-
'disabledDates',
|
397
|
-
'holidayDates',
|
398
|
-
'type',
|
399
|
-
'cellTemplate',
|
400
|
-
'cellClass',
|
401
|
-
'showNavigation',
|
402
|
-
'count'
|
403
|
-
], outputs: [
|
404
|
-
'onOptionChanged',
|
405
|
-
'valueChange',
|
406
|
-
'onValueChanged',
|
407
|
-
'onBlur',
|
408
|
-
'onFocus',
|
409
|
-
'depthChange',
|
410
|
-
'typeChange',
|
411
|
-
'activeViewChange',
|
412
|
-
'disabledDatesChange',
|
413
|
-
'holidayDatesChange',
|
414
|
-
'onNavigate',
|
415
|
-
'onSlotClick',
|
416
|
-
'countChange'
|
417
|
-
], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-body\">\n <ng-container *ngFor=\"let v of views;let first = first;let last = last;\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-state-disabled\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'month')\">\n {{ v.range.startTime.format('MMM') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));width:max-content}@media (max-width: 599px){ax-calendar{width:100%}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:row}ax-calendar .ax-calendar-body>div{flex:1}@media (max-width: 599px){ax-calendar .ax-calendar-body>div{width:100%}}@media (min-width: 600px){ax-calendar .ax-calendar-body>div{width:20rem}}@media (min-width: 1200px){ax-calendar .ax-calendar-body>div{width:19rem}}@media (min-width: 1800px){ax-calendar .ax-calendar-body>div{width:21rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;padding:.5rem;border-bottom:1px solid;border-bottom-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-color-primary-500));border-width:1px;border-style:solid;border-color:rgba(var(--ax-color-primary-200))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-style:solid;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}@media (max-width: 599px){ax-calendar .ax-calendar-body{flex-direction:column}}@media (min-width: 600px){ax-calendar .ax-calendar-body{flex-direction:column}}@media (min-width: 1200px){ax-calendar .ax-calendar-body{flex-direction:row}}@media (min-width: 1800px){ax-calendar .ax-calendar-body{flex-direction:row}}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
|
369
|
+
args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['rtl', 'readonly', 'value', 'name', 'disabled', 'depth', 'activeView', 'min', 'max', 'disabledDates', 'holidayDates', 'type', 'cellTemplate', 'cellClass', 'showNavigation', 'count'], outputs: ['onOptionChanged', 'valueChange', 'onValueChanged', 'onBlur', 'onFocus', 'depthChange', 'typeChange', 'activeViewChange', 'disabledDatesChange', 'holidayDatesChange', 'onNavigate', 'onSlotClick', 'countChange'], template: "<ng-container *ngIf=\"interface === 'calendar'; else pickerTemplate\">\n <ng-content select=\"ax-header\"></ng-content>\n <div class=\"ax-calendar-body\">\n <ng-container *ngFor=\"let v of views;let first = first;let last = last;\">\n <div [ngSwitch]=\"activeView\">\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-state-disabled\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else yearTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #yearTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else monthTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #monthTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button\" (click)=\"_handleNavClick($event,'month')\">\n {{ v.range.startTime.format('MMM') }}\n </button>\n </div>\n <div class=\"ax-calendar-header-buttons\" *ngIf=\"last\">\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handlePrevClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl\n }\"></i>\n </button>\n <button [attr.disabled]=\"disabled ? '' : null\" class=\"ax-general-button ax-button-icon\"\n (click)=\"_handleNextClick()\">\n <i class=\"ax-icon\" [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl\n }\"></i>\n </button>\n </div>\n </div>\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _dayNames\">{{ d }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{'ax-default':!cellTemplate}\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n <ng-container *ngIf=\"cellTemplate; else dayTpl\">\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate;context: { $implicit: {slot:slot} }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #dayTpl>\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <ng-content select=\"ax-footer\"></ng-content>\n</ng-container>\n<ng-template #pickerTemplate>\n <div class=\"ax-calendar-picker\">//TODO: picker</div>\n</ng-template>", styles: [".ax-dark ax-calendar{background:rgba(var(--ax-color-on-surface))}ax-calendar{display:block;background:rgba(var(--ax-color-surface));color:rgba(var(--ax-color-text-default));width:max-content}@media (max-width: 599px){ax-calendar{width:100%}}ax-calendar.ax-state-disabled .ax-calendar-slots{opacity:.5;cursor:default}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-top:.25rem;padding-left:.25rem;padding-right:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:row}ax-calendar .ax-calendar-body>div{flex:1}@media (max-width: 599px){ax-calendar .ax-calendar-body>div{width:100%}}@media (min-width: 600px){ax-calendar .ax-calendar-body>div{width:20rem}}@media (min-width: 1200px){ax-calendar .ax-calendar-body>div{width:19rem}}@media (min-width: 1800px){ax-calendar .ax-calendar-body>div{width:21rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;padding:.5rem;border-bottom:1px solid;border-bottom-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.875rem;color:rgba(var(--ax-color-text-default));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";padding-top:100%;float:left}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";display:block;clear:both}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-style:solid;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-width:2px;outline-style:dashed}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-col-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-color-primary-500));border-width:1px;border-style:solid;border-color:rgba(var(--ax-color-primary-200))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-style:solid;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{font-size:.875rem;text-align:center;position:relative;display:flex;align-items:center;justify-content:center;cursor:text;margin:.125rem}@media (max-width: 599px){ax-calendar .ax-calendar-body{flex-direction:column}}@media (min-width: 600px){ax-calendar .ax-calendar-body{flex-direction:column}}@media (min-width: 1200px){ax-calendar .ax-calendar-body{flex-direction:row}}@media (min-width: 1800px){ax-calendar .ax-calendar-body{flex-direction:row}}ax-calendar .ax-calendar-footer{display:flex;justify-content:center;align-items:center;margin-top:1.125rem}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;height:var(--ax-size-default);padding:0 1rem;font-size:.875rem;text-align:center;display:block;background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore));border-radius:var(--ax-rounded-border-default);cursor:pointer}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-400))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-600))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
|
418
370
|
}], ctorParameters: function () { return []; }, propDecorators: { __hostClass: [{
|
419
371
|
type: HostBinding,
|
420
372
|
args: ['class']
|
421
373
|
}] } });
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFZLE1BQU0sdUJBQXVCLENBQUM7QUFDOUUsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUEwRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUVuQyxNQXdDYSxtQkFDWCxTQUNBLE9BQU8sQ0FBQyxDQUFBLGdCQUFzQixDQUFBLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLENBQUM7SUFFaEYsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFtQjtRQUMxQyxRQUFRLElBQUksQ0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlLCBUaW1lVW5pdCB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XG5pbXBvcnQge1xuICBBWENsaWNrRXZlbnQsXG4gIEFYT3B0aW9uQ2hhbmdlZEV2ZW50LFxuICBBWFZhbHVlQ2hhbmdlZEV2ZW50LFxuICBNWEludGVyYWN0aXZlQ29tcG9uZW50LFxuICBNWFZhbHVlQ29tcG9uZW50XG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuXG5cbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyVmlldywgQVhDYWxlbmRhclZpZXdTbG90LCBBWENhbGVuZGFyVmlld1R5cGUsIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFtcbiAgICAncnRsJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd2YWx1ZScsXG4gICAgJ25hbWUnLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2RlcHRoJyxcbiAgICAnYWN0aXZlVmlldycsXG4gICAgJ21pbicsXG4gICAgJ21heCcsXG4gICAgJ2Rpc2FibGVkRGF0ZXMnLFxuICAgICdob2xpZGF5RGF0ZXMnLFxuICAgICd0eXBlJyxcbiAgICAnY2VsbFRlbXBsYXRlJyxcbiAgICAnY2VsbENsYXNzJyxcbiAgICAnc2hvd05hdmlnYXRpb24nLFxuICAgICdjb3VudCdcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICdvbk9wdGlvbkNoYW5nZWQnLFxuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ29uVmFsdWVDaGFuZ2VkJyxcbiAgICAnb25CbHVyJyxcbiAgICAnb25Gb2N1cycsXG4gICAgJ2RlcHRoQ2hhbmdlJyxcbiAgICAndHlwZUNoYW5nZScsXG4gICAgJ2FjdGl2ZVZpZXdDaGFuZ2UnLFxuICAgICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcbiAgICAnaG9saWRheURhdGVzQ2hhbmdlJyxcbiAgICAnb25OYXZpZ2F0ZScsXG4gICAgJ29uU2xvdENsaWNrJyxcbiAgICAnY291bnRDaGFuZ2UnXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckNvbXBvbmVudFxuICBleHRlbmRzXG4gIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxEYXRlPiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXG57XG4gIHB1YmxpYyBnZXQgZGlzcGxheVJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcy52aWV3c1swXS5yYW5nZS5zdGFydFRpbWUsIHRoaXMudmlld3NbdGhpcy52aWV3cy5sZW5ndGggLSAxXS5yYW5nZS5lbmRUaW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERpc3BsYXlSYW5nZShjdXJyZW50OiBBWERhdGVUaW1lKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIGxldCB5ID0gY3VycmVudC5zdGFydE9mKCd5ZWFyJykueWVhcjtcbiAgICAgICAgbGV0IG1pbiA9IHkgLSAoeSAlIDEwKTtcbiAgICAgICAgbGV0IG1heCA9IG1pbiArIDk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAgICAgICAgIEFYRGF0ZVRpbWUuZnJvbSh7XG4gICAgICAgICAgICB5ZWFyOiBtaW4sXG4gICAgICAgICAgICBtb250aDogMSxcbiAgICAgICAgICAgIGRhdGU6IDEsXG4gICAgICAgICAgICBjYWxlbmRhcjogdGhpcy5fdmlld1N0YXJ0RGF0ZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgQVhEYXRlVGltZS5mcm9tKHtcbiAgICAgICAgICAgIHllYXI6IG1heCxcbiAgICAgICAgICAgIG1vbnRoOiAxMixcbiAgICAgICAgICAgIGRhdGU6IDI4LFxuICAgICAgICAgICAgY2FsZW5kYXI6IHRoaXMuX3ZpZXdTdGFydERhdGUuY2FsZW5kYXIubmFtZSgpLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKFxuICAgICAgICAgIGN1cnJlbnQuc3RhcnRPZigneWVhcicpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgY3VycmVudC5zdGFydE9mKCdtb250aCcpLFxuICAgICAgICAgIGN1cnJlbnQuZW5kT2YoJ21vbnRoJylcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvZGF5ID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgcHJpdmF0ZSBfdmlld1N0YXJ0RGF0ZSE6IEFYRGF0ZVRpbWU7XG4gIHByaXZhdGUgX2Zvb3RQcmludCA9IHtcbiAgICB5ZWFyOiBudWxsLFxuICAgIG1vbnRoOiBudWxsLFxuICAgIGRheTogbnVsbCxcbiAgfVxuXG4gIHByb3RlY3RlZCB2aWV3czogQVhDYWxlbmRhclZpZXdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX2RheU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG5cbiAgcHJpdmF0ZSBfaW5pdFZhbHVlcygpIHtcbiAgICB0aGlzLl90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fZGF5TmFtZXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci5kYXlTaG9ydE5hbWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQuc3Vic2NyaWJlKHRoaXMuX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIH1cbiAgfVxuXG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGFwcGx5Q2VsbENsYXNzID0gKHNsb3Q6IEFYQ2FsZW5kYXJWaWV3U2xvdCwgY2VsbENsYXNzOiBhbnkgPSB0aGlzLmNlbGxDbGFzcykgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlb2YgY2VsbENsYXNzKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgY2VsbENsYXNzLnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHNsb3QuY3NzQ2xhc3NbY10gPSB0cnVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHNsb3QuY3NzQ2xhc3MsIGNlbGxDbGFzcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhzbG90LCBjZWxsQ2xhc3Moc2xvdC5kYXRlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGRlYnVnZ2VyO1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQ7IGkrKykge1xuICAgICAgbGV0IHVuaXQ6IFRpbWVVbml0ID0gJ21vbnRoJztcbiAgICAgIGxldCB2YWx1ZTogbnVtYmVyID0gaTtcbiAgICAgIC8vXG4gICAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB7XG4gICAgICAgIHVuaXQgPSAnbW9udGgnO1xuICAgICAgICB2YWx1ZSA9IGk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgICB1bml0ID0gJ3llYXInO1xuICAgICAgICB2YWx1ZSA9IGk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICAgICAgdmFsdWUgPSBpICogMTA7XG4gICAgICB9XG4gICAgICAvLyBcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmFkZCh1bml0LCB2YWx1ZSk7XG4gICAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgICAgcmFuZ2U6IHRoaXMuX3NldERpc3BsYXlSYW5nZShjdXJyZW50KSxcbiAgICAgICAgc2xvdHM6IFtdXG4gICAgICB9XG4gICAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgICAvL1xuICAgICAgLy8geWVhciB2aWV3XG4gICAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJykge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ3llYXInKTtcbiAgICAgICAgdmlldy5zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgICAgci5kYXRlID0gZC5kYXRlO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ1lZWVknKTtcbiAgICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnWVlZWScpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICd5ZWFyJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLnNlbGVjdGVkID1cbiAgICAgICAgICAgIHRoaXMudmFsdWUgJiYgdGhpcy5kZXB0aD09J3llYXInICYmIFxuICAgICAgICAgICAgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpXG4gICAgICAgICAgLy9cbiAgICAgICAgICBjb25zdCBmb2N1c2VkID0gZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyXG4gICAgICAgICAgLy9cbiAgICAgICAgICByLmRpc2FibGVkID1cbiAgICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8XG4gICAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAneWVhcicpID09IDEpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBtb250aCB2aWV3XG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ21vbnRoJyk7XG4gICAgICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICAgIHIuZGF0ZSA9IGQuZGF0ZTtcbiAgICAgICAgICByLnRleHQgPSBkLmZvcm1hdCgnTU1NJyk7XG4gICAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ01NTU0gWVlZWScpO1xuICAgICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnbW9udGgnKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAgICAgKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ21vbnRoJykgPT0gLTEpIHx8XG4gICAgICAgICAgICAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnbW9udGgnKSA9PSAxKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuc2VsZWN0ZWQgPVxuICAgICAgICAgICAgdGhpcy52YWx1ZSAmJiB0aGlzLmRlcHRoPT0nbW9udGgnICYmXG4gICAgICAgICAgICBkLmVxdWFsKHRoaXMudmFsdWUsICdtb250aCcpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gZGF5IHZpZXdcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ2RheScpO1xuICAgICAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgICByLmRhdGUgPSBkLmRhdGU7XG4gICAgICAgICAgci50ZXh0ID0gZC5kYXlPZk1vbnRoO1xuICAgICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCk7XG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdkYXknKTtcbiAgICAgICAgICByLnNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdkYXknKTtcbiAgICAgICAgICByLmhvbGlkYXkgPSB0aGlzLmlzSG9saWRheShkKSB8fCB0aGlzLmlzV2Vla2VuZChkKTtcbiAgICAgICAgICByLmRpc2FibGVkID1cbiAgICAgICAgICAgICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICdkYXknKSA9PSAtMSkgfHxcbiAgICAgICAgICAgICh0aGlzLm1heCAmJiBkLmNvbXBhcmUodGhpcy5tYXgsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkKGQpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQuZGF5T2ZNb250aCA9PSB0aGlzLl9mb290UHJpbnQuZGF5ICYmIGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWhvbGlkYXknOiByLmhvbGlkYXksXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHIuY3NzQ2xhc3NbYGF4LWNvbC1zdGFydC0ke3ZpZXcucmFuZ2Uuc3RhcnRUaW1lLmRheU9mV2Vla31gXSA9IGkgPT0gMDtcbiAgICAgICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpXG4gICAgICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5wcmV2KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdDogQVhDYWxlbmRhclZpZXdTbG90KSB7XG4gICAgaWYgKHNsb3QuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIC8vXG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGl0ZW06IHNsb3QuZGF0ZSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gICAgLy9cbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShzbG90LmRhdGUsIHRoaXMudHlwZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcgJiYgdGhpcy5kZXB0aCA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheSc7XG4gICAgICB0aGlzLl9mb290UHJpbnQubW9udGggPSB2YWwubW9udGhPZlllYXI7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJlxuICAgICAgKHRoaXMuZGVwdGggPT0gJ2RheScgfHwgdGhpcy5kZXB0aCA9PSAnbW9udGgnKVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuX2Zvb3RQcmludC55ZWFyID0gdmFsLnllYXI7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXInICYmIHRoaXMuZGVwdGggPT0gJ3llYXInKSB7XG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVOYXZDbGljayhlOiBBWENsaWNrRXZlbnQgfCBhbnksIHZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlVmlldyA9IHZpZXc7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVZpZXcoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5JylcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aCc7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpXG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAneWVhcic7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZChlOiBBWE9wdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIGlmIChcbiAgICAgIGUubmFtZSA9PSAnZGVwdGgnIHx8XG4gICAgICBlLm5hbWUgPT0gJ2FjdGl2ZVZpZXcnIHx8XG4gICAgICBlLm5hbWUgPT0gJ2Rpc2FibGVkRGF0ZXMnIHx8XG4gICAgICBlLm5hbWUgPT0gJ2hvbGlkYXlEYXRlcydcbiAgICApIHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICAgIGlmIChlLm5hbWUgPT0gJ3R5cGUnKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT25WYWx1ZUNoYW5nZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIGNvbnN0IHZhbCA9IG5ldyBBWERhdGVUaW1lKGUudmFsdWUsIHRoaXMudHlwZSk7XG4gICAgaWYgKCF0aGlzLl92aWV3U3RhcnREYXRlIHx8IHZhbC5jb21wYXJlKHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAtMSB8fCB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZS5lbmRUaW1lLCB0aGlzLmFjdGl2ZVZpZXcpID09IDEpIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSBuZXcgQVhEYXRlVGltZShlLnZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIH1cbiAgICB0aGlzLl9mb290UHJpbnQueWVhciA9IHZhbC55ZWFyO1xuICAgIHRoaXMuX2Zvb3RQcmludC5tb250aCA9IHZhbC5tb250aE9mWWVhcjtcbiAgICB0aGlzLl9mb290UHJpbnQuZGF5ID0gdmFsLmRheU9mTW9udGg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXREYXRlKHRoaXMuX3RvZGF5LmRhdGUpO1xuICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIHRoaXMuaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XG4gICAgY29uc3QgZGl2ID1cbiAgICAgIGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fFxuICAgICAgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdicpO1xuICAgIGRpdj8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKVxuICAgICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJylcbiAgICAgIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTAgKiB0aGlzLmNvdW50KSk7XG4gIH1cblxuICBnb1RvZGF5KCkge1xuICAgIHRoaXMubmF2VG8odGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgbmF2VG8oZGF0ZTogRGF0ZSB8IEFYRGF0ZVRpbWUpIHtcbiAgICBjb25zdCB2YWwgPSBBWERhdGVUaW1lLmNvbnZlcnQoXG4gICAgICBkYXRlLFxuICAgICAgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpXG4gICAgKVxuICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSB2YWwuc3RhcnRPZigpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgLy90byBtYWtlIHN1cmUgaXRzIHJlbmRyZWQgYW5kIGRpc3BsYXlSYW5nZSBpcyBub3QgbnVsbFxuICAgIGlmICh0aGlzLnZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHZyID0gdGhpcy5kaXNwbGF5UmFuZ2U7XG4gICAgICB0aGlzLm9uTmF2aWdhdGUuZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgICAgIHN0YXJ0OiB2ci5zdGFydFRpbWU/LmRhdGUsXG4gICAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9jbGFzc2VzID0ge1xuICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCxcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhfY2xhc3NlcylcbiAgICAgIC5maWx0ZXIoYyA9PiBjWzFdKVxuICAgICAgLm1hcChjID0+IGNbMF0pXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLnZhbHVlID0gQVhEYXRlVGltZS5jb252ZXJ0KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLl90b2RheS5jYWxlbmRhci5uYW1lKClcbiAgICApLnN0YXJ0T2YoKS5kYXRlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGlzYWJsZWREYXRlcykgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMoZGF0ZS5kYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzSG9saWRheShkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ob2xpZGF5RGF0ZXMpICYmIHRoaXMuaG9saWRheURhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ob2xpZGF5RGF0ZXMuc29tZShkID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmhvbGlkYXlEYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5ob2xpZGF5RGF0ZXMoZGF0ZS5kYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzV2Vla2VuZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgd2Vla2VuZCA9IEFYQ29uZmlnLmdldChcbiAgICAgIGBkYXRlVGltZS5jYWxlbmRhcnMuJHt0aGlzLnR5cGV9LndlZWtlbmRgXG4gICAgKSBhcyBudW1iZXJbXTtcbiAgICByZXR1cm4gd2Vla2VuZC5pbmNsdWRlcyhkYXRlLmRheU9mV2Vlayk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcmZhY2UgPT09ICdjYWxlbmRhcic7IGVsc2UgcGlja2VyVGVtcGxhdGVcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHYgb2Ygdmlld3M7bGV0IGZpcnN0ID0gZmlyc3Q7bGV0IGxhc3QgPSBsYXN0O1wiPlxuICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiYWN0aXZlVmlld1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItdmlldy1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1zdGF0ZS1kaXNhYmxlZFwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCd5ZWFyJylcIj5cbiAgICAgICAgICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fSAtIHt7IHYucmFuZ2UuZW5kVGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCIgKm5nSWY9XCJsYXN0XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIXJ0bCxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiBydGxcbiAgICAgICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiBydGwsXG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogIXJ0bFxuICAgICAgICAgICAgICAgIH1cIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLXllYXJcIiBbbmdDbGFzc109XCJ7J2F4LWRlZmF1bHQnOiFjZWxsVGVtcGxhdGV9XCI+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIHYuc2xvdHNcIiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIHllYXJUcGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3llYXJUcGw+XG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICB7eyBzbG90LnRleHQgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRoJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsJ3llYXInKVwiPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIiAqbmdJZj1cImxhc3RcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiAhcnRsLFxuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxuICAgICAgICAgICAgICAgIH1cIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhcnRsXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtbW9udGhcIiBbbmdDbGFzc109XCJ7J2F4LWRlZmF1bHQnOiFjZWxsVGVtcGxhdGV9XCI+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiICpuZ0Zvcj1cImxldCBzbG90IG9mIHYuc2xvdHNcIiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIG1vbnRoVHBsXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7Y29udGV4dDogeyAkaW1wbGljaXQ6IHtzbG90OnNsb3R9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtb250aFRwbD5cbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwneWVhcicpXCI+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUuZm9ybWF0KCdZWVlZJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsJ21vbnRoJylcIj5cbiAgICAgICAgICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ01NTScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIiAqbmdJZj1cImxhc3RcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiAhcnRsLFxuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxuICAgICAgICAgICAgICAgIH1cIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhcnRsXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBfZGF5TmFtZXNcIj57eyBkIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLWRheVwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNsb3Qgb2Ygdi5zbG90c1wiPlxuICAgICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbFRlbXBsYXRlOyBlbHNlIGRheVRwbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF5VHBsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNwaWNrZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXBpY2tlclwiPi8vVE9ETzogcGlja2VyPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBMkQsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUEwRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUVuQyxNQVNhLG1CQUFvQixTQUFRLE9BQU8sQ0FBQyxDQUFBLGdCQUFzQixDQUFBLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLENBQUM7SUFDdkgsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFtQjtRQUMxQyxRQUFRLElBQUksQ0FBQyxV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LENBQUM7U0FDMUQ7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFnQjtRQUNsQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLENBQUMsSUFBSSxVQUFVLENBQWEsQ0FBQztRQUNwRixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7dUdBOVdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLGszQkNqQmhDLGc0TkErSWM7O1NEOUhELG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQVQvQixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxVQUN2QyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFdBQ3JMLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQzswRUE0VWhOLFdBQVc7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlLCBUaW1lVW5pdCB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlVGltZSc7XG5pbXBvcnQgeyBBWENsaWNrRXZlbnQsIEFYT3B0aW9uQ2hhbmdlZEV2ZW50LCBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5cbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyVmlldywgQVhDYWxlbmRhclZpZXdTbG90LCBBWENhbGVuZGFyVmlld1R5cGUsIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFsncnRsJywgJ3JlYWRvbmx5JywgJ3ZhbHVlJywgJ25hbWUnLCAnZGlzYWJsZWQnLCAnZGVwdGgnLCAnYWN0aXZlVmlldycsICdtaW4nLCAnbWF4JywgJ2Rpc2FibGVkRGF0ZXMnLCAnaG9saWRheURhdGVzJywgJ3R5cGUnLCAnY2VsbFRlbXBsYXRlJywgJ2NlbGxDbGFzcycsICdzaG93TmF2aWdhdGlvbicsICdjb3VudCddLFxuICBvdXRwdXRzOiBbJ29uT3B0aW9uQ2hhbmdlZCcsICd2YWx1ZUNoYW5nZScsICdvblZhbHVlQ2hhbmdlZCcsICdvbkJsdXInLCAnb25Gb2N1cycsICdkZXB0aENoYW5nZScsICd0eXBlQ2hhbmdlJywgJ2FjdGl2ZVZpZXdDaGFuZ2UnLCAnZGlzYWJsZWREYXRlc0NoYW5nZScsICdob2xpZGF5RGF0ZXNDaGFuZ2UnLCAnb25OYXZpZ2F0ZScsICdvblNsb3RDbGljaycsICdjb3VudENoYW5nZSddLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PERhdGU+LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCkge1xuICBwdWJsaWMgZ2V0IGRpc3BsYXlSYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMudmlld3NbMF0ucmFuZ2Uuc3RhcnRUaW1lLCB0aGlzLnZpZXdzW3RoaXMudmlld3MubGVuZ3RoIC0gMV0ucmFuZ2UuZW5kVGltZSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXREaXNwbGF5UmFuZ2UoY3VycmVudDogQVhEYXRlVGltZSk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBsZXQgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XG4gICAgICAgIGxldCBtaW4gPSB5IC0gKHkgJSAxMCk7XG4gICAgICAgIGxldCBtYXggPSBtaW4gKyA5O1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcbiAgICAgICAgICBBWERhdGVUaW1lLmZyb20oe1xuICAgICAgICAgICAgeWVhcjogbWluLFxuICAgICAgICAgICAgbW9udGg6IDEsXG4gICAgICAgICAgICBkYXRlOiAxLFxuICAgICAgICAgICAgY2FsZW5kYXI6IHRoaXMuX3ZpZXdTdGFydERhdGUuY2FsZW5kYXIubmFtZSgpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIEFYRGF0ZVRpbWUuZnJvbSh7XG4gICAgICAgICAgICB5ZWFyOiBtYXgsXG4gICAgICAgICAgICBtb250aDogMTIsXG4gICAgICAgICAgICBkYXRlOiAyOCxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLl92aWV3U3RhcnREYXRlLmNhbGVuZGFyLm5hbWUoKSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShjdXJyZW50LnN0YXJ0T2YoJ3llYXInKSwgY3VycmVudC5lbmRPZigneWVhcicpLmFkZCgnZGF5JywgLTEpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKGN1cnJlbnQuc3RhcnRPZignbW9udGgnKSwgY3VycmVudC5lbmRPZignbW9udGgnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gIHByaXZhdGUgX3ZpZXdTdGFydERhdGUhOiBBWERhdGVUaW1lO1xuICBwcml2YXRlIF9mb290UHJpbnQgPSB7XG4gICAgeWVhcjogbnVsbCxcbiAgICBtb250aDogbnVsbCxcbiAgICBkYXk6IG51bGwsXG4gIH07XG5cbiAgcHJvdGVjdGVkIHZpZXdzOiBBWENhbGVuZGFyVmlld1tdID0gW107XG4gIHByb3RlY3RlZCBfZGF5TmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBfaW5pdFZhbHVlcygpIHtcbiAgICB0aGlzLl90b2RheSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fZGF5TmFtZXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci5kYXlTaG9ydE5hbWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQuc3Vic2NyaWJlKHRoaXMuX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCBhcHBseUNlbGxDbGFzcyA9IChzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QsIGNlbGxDbGFzczogYW55ID0gdGhpcy5jZWxsQ2xhc3MpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZW9mIGNlbGxDbGFzcykge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIGNlbGxDbGFzcy5zcGxpdCgnICcpLmZvckVhY2goYyA9PiAoc2xvdC5jc3NDbGFzc1tjXSA9IHRydWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHNsb3QuY3NzQ2xhc3MsIGNlbGxDbGFzcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhzbG90LCBjZWxsQ2xhc3Moc2xvdC5kYXRlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnZpZXdzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvdW50OyBpKyspIHtcbiAgICAgIGxldCB1bml0OiBUaW1lVW5pdCA9ICdtb250aCc7XG4gICAgICBsZXQgdmFsdWU6IG51bWJlciA9IGk7XG4gICAgICAvL1xuICAgICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5Jykge1xuICAgICAgICB1bml0ID0gJ21vbnRoJztcbiAgICAgICAgdmFsdWUgPSBpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgICB1bml0ID0gJ3llYXInO1xuICAgICAgICB2YWx1ZSA9IGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bml0ID0gJ3llYXInO1xuICAgICAgICB2YWx1ZSA9IGkgKiAxMDtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQodW5pdCwgdmFsdWUpO1xuICAgICAgY29uc3QgdmlldzogQVhDYWxlbmRhclZpZXcgPSB7XG4gICAgICAgIHJhbmdlOiB0aGlzLl9zZXREaXNwbGF5UmFuZ2UoY3VycmVudCksXG4gICAgICAgIHNsb3RzOiBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgICAvL1xuICAgICAgLy8geWVhciB2aWV3XG4gICAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJykge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ3llYXInKTtcbiAgICAgICAgdmlldy5zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgICAgci5kYXRlID0gZC5kYXRlO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ1lZWVknKTtcbiAgICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnWVlZWScpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICd5ZWFyJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLnNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiB0aGlzLmRlcHRoID09ICd5ZWFyJyAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICd5ZWFyJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBjb25zdCBmb2N1c2VkID0gZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci5kaXNhYmxlZCA9ICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICd5ZWFyJykgPT0gLTEpIHx8ICh0aGlzLm1heCAmJiBkLmNvbXBhcmUodGhpcy5tYXgsICd5ZWFyJykgPT0gMSk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIG1vbnRoIHZpZXdcbiAgICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB7XG4gICAgICAgIGNvbnN0IGEgPSB2aWV3LnJhbmdlLmVudW11cmF0ZSgnbW9udGgnKTtcbiAgICAgICAgdmlldy5zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgICAgci5kYXRlID0gZC5kYXRlO1xuICAgICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdNTU0nKTtcbiAgICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdtb250aCcpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci5kaXNhYmxlZCA9ICh0aGlzLm1pbiAmJiBkLmNvbXBhcmUodGhpcy5taW4sICdtb250aCcpID09IC0xKSB8fCAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnbW9udGgnKSA9PSAxKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJyAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdtb250aCcpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gZGF5IHZpZXdcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ2RheScpO1xuICAgICAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgICByLmRhdGUgPSBkLmRhdGU7XG4gICAgICAgICAgci50ZXh0ID0gZC5kYXlPZk1vbnRoO1xuICAgICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCk7XG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdkYXknKTtcbiAgICAgICAgICByLnNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdkYXknKTtcbiAgICAgICAgICByLmhvbGlkYXkgPSB0aGlzLmlzSG9saWRheShkKSB8fCB0aGlzLmlzV2Vla2VuZChkKTtcbiAgICAgICAgICByLmRpc2FibGVkID0gKHRoaXMubWluICYmIGQuY29tcGFyZSh0aGlzLm1pbiwgJ2RheScpID09IC0xKSB8fCAodGhpcy5tYXggJiYgZC5jb21wYXJlKHRoaXMubWF4LCAnZGF5JykgPT0gMSkgfHwgdGhpcy5pc0Rpc2FibGVkKGQpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQuZGF5T2ZNb250aCA9PSB0aGlzLl9mb290UHJpbnQuZGF5ICYmIGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWhvbGlkYXknOiByLmhvbGlkYXksXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHIuY3NzQ2xhc3NbYGF4LWNvbC1zdGFydC0ke3ZpZXcucmFuZ2Uuc3RhcnRUaW1lLmRheU9mV2Vla31gXSA9IGkgPT0gMDtcbiAgICAgICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZVByZXZDbGljaygpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnByZXYoKTtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU5leHRDbGljaygpIHtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZVNsb3RDbGljayhlOiBNb3VzZUV2ZW50LCBzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QpIHtcbiAgICBpZiAoc2xvdC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLm9uU2xvdENsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXRlbTogc2xvdC5kYXRlLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgICAvL1xuICAgIGNvbnN0IHZhbCA9IG5ldyBBWERhdGVUaW1lKHNsb3QuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB7XG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdkYXknKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuX2Zvb3RQcmludC5tb250aCA9IHZhbC5tb250aE9mWWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJiAodGhpcy5kZXB0aCA9PSAnZGF5JyB8fCB0aGlzLmRlcHRoID09ICdtb250aCcpKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGgnO1xuICAgICAgdGhpcy5fZm9vdFByaW50LnllYXIgPSB2YWwueWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcicgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSwgdmlldzogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlldztcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVmlldygpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGgnO1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB0aGlzLmFjdGl2ZVZpZXcgPSAneWVhcic7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZChlOiBBWE9wdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIGlmIChlLm5hbWUgPT0gJ2RlcHRoJyB8fCBlLm5hbWUgPT0gJ2FjdGl2ZVZpZXcnIHx8IGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHwgZS5uYW1lID09ICdob2xpZGF5RGF0ZXMnKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBpZiAoZS5uYW1lID09ICd0eXBlJykge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9uVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShlLnZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSB8fCB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUsIHRoaXMuYWN0aXZlVmlldykgPT0gLTEgfHwgdmFsLmNvbXBhcmUodGhpcy5kaXNwbGF5UmFuZ2UuZW5kVGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAxKSB7XG4gICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gbmV3IEFYRGF0ZVRpbWUoZS52YWx1ZSwgdGhpcy50eXBlKTtcbiAgICB9XG4gICAgdGhpcy5fZm9vdFByaW50LnllYXIgPSB2YWwueWVhcjtcbiAgICB0aGlzLl9mb290UHJpbnQubW9udGggPSB2YWwubW9udGhPZlllYXI7XG4gICAgdGhpcy5fZm9vdFByaW50LmRheSA9IHZhbC5kYXlPZk1vbnRoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZUdvVG9kYXkoKSB7XG4gICAgdGhpcy5pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fc2V0RGF0ZSh0aGlzLl90b2RheS5kYXRlKTtcbiAgICB0aGlzLmdvVG9kYXkoKTtcbiAgICB0aGlzLmlzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMuX25hdk5leHRQcmV2KGZhbHNlKTtcbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYodHJ1ZSk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBjb25zdCBmdW5jID0gKHM6IHN0cmluZykgPT4gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KHMpO1xuICAgIGNvbnN0IGRpdiA9IGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fCBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2Jyk7XG4gICAgZGl2Py5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2TmV4dFByZXYocHJldjogYm9vbGVhbikge1xuICAgIGNvbnN0IHNpZ24gPSBwcmV2ID8gLTEgOiAxO1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ21vbnRoJywgc2lnbiAqIDEgKiB0aGlzLmNvdW50KSk7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTAgKiB0aGlzLmNvdW50KSk7XG4gIH1cblxuICBnb1RvZGF5KCkge1xuICAgIHRoaXMubmF2VG8odGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgbmF2VG8oZGF0ZTogRGF0ZSB8IEFYRGF0ZVRpbWUpIHtcbiAgICBjb25zdCB2YWwgPSBBWERhdGVUaW1lLmNvbnZlcnQoZGF0ZSwgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpKTtcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdmFsLnN0YXJ0T2YoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIC8vdG8gbWFrZSBzdXJlIGl0cyByZW5kcmVkIGFuZCBkaXNwbGF5UmFuZ2UgaXMgbm90IG51bGxcbiAgICBpZiAodGhpcy52aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2ciA9IHRoaXMuZGlzcGxheVJhbmdlO1xuICAgICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLmlzVXNlckludGVyYWN0aW9uLFxuICAgICAgICBzdGFydDogdnIuc3RhcnRUaW1lPy5kYXRlLFxuICAgICAgICBlbmQ6IHZyLmVuZFRpbWU/LmRhdGUsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBfY2xhc3NlcyA9IHtcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXG4gICAgICAuZmlsdGVyKGMgPT4gY1sxXSlcbiAgICAgIC5tYXAoYyA9PiBjWzBdKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy52YWx1ZSA9IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSwgdGhpcy5fdG9kYXkuY2FsZW5kYXIubmFtZSgpKS5zdGFydE9mKCkuZGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKGQgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0hvbGlkYXkoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzLnNvbWUoZCA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ob2xpZGF5RGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1dlZWtlbmQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHdlZWtlbmQgPSBBWENvbmZpZy5nZXQoYGRhdGVUaW1lLmNhbGVuZGFycy4ke3RoaXMudHlwZX0ud2Vla2VuZGApIGFzIG51bWJlcltdO1xuICAgIHJldHVybiB3ZWVrZW5kLmluY2x1ZGVzKGRhdGUuZGF5T2ZXZWVrKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVyZmFjZSA9PT0gJ2NhbGVuZGFyJzsgZWxzZSBwaWNrZXJUZW1wbGF0ZVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1ib2R5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdiBvZiB2aWV3cztsZXQgZmlyc3QgPSBmaXJzdDtsZXQgbGFzdCA9IGxhc3Q7XCI+XG4gICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJhY3RpdmVWaWV3XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid5ZWFyJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LXN0YXRlLWRpc2FibGVkXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsJ3llYXInKVwiPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19IC0ge3sgdi5yYW5nZS5lbmRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIiAqbmdJZj1cImxhc3RcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb25cIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLWxlZnQnOiAhcnRsLFxuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6IHJ0bFxuICAgICAgICAgICAgICAgIH1cIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IHJ0bCxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhcnRsXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMteWVhclwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cbiAgICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2Ygdi5zbG90c1wiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgeWVhclRwbFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlO2NvbnRleHQ6IHsgJGltcGxpY2l0OiB7c2xvdDpzbG90fSB9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjeWVhclRwbD5cbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwneWVhcicpXCI+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUuZm9ybWF0KCdZWVlZJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiICpuZ0lmPVwibGFzdFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6ICFydGwsXG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogcnRsXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogcnRsLFxuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6ICFydGxcbiAgICAgICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1tb250aFwiIFtuZ0NsYXNzXT1cInsnYXgtZGVmYXVsdCc6IWNlbGxUZW1wbGF0ZX1cIj5cbiAgICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2Ygdi5zbG90c1wiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgbW9udGhUcGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTtjb250ZXh0OiB7ICRpbXBsaWNpdDoge3Nsb3Q6c2xvdH0gfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21vbnRoVHBsPlxuICAgICAgICAgICAgICAgIDxkaXYgW3RpdGxlXT1cInNsb3QudG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItdmlldy1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvblwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCd5ZWFyJylcIj5cbiAgICAgICAgICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b25cIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwnbW9udGgnKVwiPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnTU1NJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiICpuZ0lmPVwibGFzdFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6ICFydGwsXG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogcnRsXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogcnRsLFxuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1yaWdodCc6ICFydGxcbiAgICAgICAgICAgICAgICB9XCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci13ZWVrXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkIG9mIF9kYXlOYW1lc1wiPnt7IGQgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtZGF5XCIgW25nQ2xhc3NdPVwieydheC1kZWZhdWx0JzohY2VsbFRlbXBsYXRlfVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xvdCBvZiB2LnNsb3RzXCI+XG4gICAgICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsVGVtcGxhdGU7IGVsc2UgZGF5VHBsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlO2NvbnRleHQ6IHsgJGltcGxpY2l0OiB7c2xvdDpzbG90fSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkYXlUcGw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3BpY2tlclRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcGlja2VyXCI+Ly9UT0RPOiBwaWNrZXI8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
@@ -42,7 +42,6 @@ class MXValueComponent extends MXBaseComponent {
|
|
42
42
|
return this.getValue(this._value) || this.defaultValue;
|
43
43
|
}
|
44
44
|
set value(v) {
|
45
|
-
debugger;
|
46
45
|
v = this.setValue(v);
|
47
46
|
//if (!this._isInited ) {
|
48
47
|
const old = AXObjectUtil.deepJSONClone(this.value);
|
@@ -105,9 +104,7 @@ class MXValueComponent extends MXBaseComponent {
|
|
105
104
|
const isRequired = Array.from(this.getHostElement().querySelectorAll('ax-validation-rule')).some(c => c.__axContext__.enabled && c.__axContext__.rule == 'required');
|
106
105
|
//
|
107
106
|
if (isRequired) {
|
108
|
-
const container = this.getHostElement().classList.contains('ax-editor-container')
|
109
|
-
? this.getHostElement()
|
110
|
-
: this.getHostElement().querySelector('.ax-editor-container');
|
107
|
+
const container = this.getHostElement().classList.contains('ax-editor-container') ? this.getHostElement() : this.getHostElement().querySelector('.ax-editor-container');
|
111
108
|
const formField = container?.closest('.ax-form-field');
|
112
109
|
const label = formField?.querySelector('ax-label')?.__axContext__;
|
113
110
|
if (label)
|
@@ -156,9 +153,7 @@ class MXValueComponent extends MXBaseComponent {
|
|
156
153
|
});
|
157
154
|
}
|
158
155
|
setState(state, ...args) {
|
159
|
-
const container = this.getHostElement().classList.contains('ax-editor-container')
|
160
|
-
? this.getHostElement()
|
161
|
-
: this.getHostElement().querySelector('.ax-editor-container');
|
156
|
+
const container = this.getHostElement().classList.contains('ax-editor-container') ? this.getHostElement() : this.getHostElement().querySelector('.ax-editor-container');
|
162
157
|
const formField = container?.closest('.ax-form-field');
|
163
158
|
const label = formField?.querySelector('ax-label') || formField?.querySelector('label');
|
164
159
|
let target = container || this.getHostElement().firstElementChild;
|
@@ -204,4 +199,4 @@ export { MXValueComponent };
|
|
204
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: MXValueComponent, decorators: [{
|
205
200
|
type: Injectable
|
206
201
|
}] });
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uL3NyYy9jb21wb25lbnRzL3ZhbHVlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFvQixlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFHM0UsTUFDYSxnQkFBMEIsU0FBUSxlQUFlO0lBQzVEOzs7T0FHRztJQUNILGNBQWMsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7SUFFdEcsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pELFdBQVcsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFM0UsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVuQzs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxLQUFLLENBQVM7SUFDdEIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxrQkFBa0IsR0FBWSxLQUFLLENBQUM7SUFFNUMsSUFBSSxpQkFB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Q1Q7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7dUdBM05VLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOztTQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYT2JqZWN0VXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWENvbXBvbmVudFN0YXRlLCBNWEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9jbGFzc2VzL2V2ZW50cy5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNWFZhbHVlQ29tcG9uZW50PFQgPSBhbnk+IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgcHJlc3MgYSBrZXkuXG4gICAqICBAZXZlbnRcbiAgICovXG4gIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxhbnk+PigpO1xuXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBzdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENvbXBvbmVudFN0YXRlPigpO1xuXG4gIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBJZiBzZXQgdG8gdHJ1ZSwgdXNlciBjYW5ub3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG4gIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cbiAgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVXNlckludGVyYWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IGlzVXNlckludGVyYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbjtcbiAgfVxuXG4gIHNldCBpc1VzZXJJbnRlcmFjdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gdmFsdWU7XG4gIH1cblxuICBpbml0VmFsdWU6IFQ7XG4gIGRlZmF1bHRWYWx1ZTogVDtcblxuICBwcml2YXRlIF92YWx1ZTogVDtcbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMuX3ZhbHVlKSB8fCB0aGlzLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodjogVCkge1xuICAgIGRlYnVnZ2VyXG4gICAgdiA9IHRoaXMuc2V0VmFsdWUodik7XG4gICAgLy9pZiAoIXRoaXMuX2lzSW5pdGVkICkge1xuICAgIGNvbnN0IG9sZCA9IEFYT2JqZWN0VXRpbC5kZWVwSlNPTkNsb25lKHRoaXMudmFsdWUpO1xuICAgIC8vIFRPRE86IGNoZWNrIHJlYWwgZXF1YWxpdHlcbiAgICBpZiAodiAhPSBvbGQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkLCB0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgaWYgKHYgPT0gbnVsbCB8fCB2ID09IHVuZGVmaW5lZCB8fCB2ID09ICcnIHx8IChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09IDApKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHtcbiAgICAgIC8vICAgaWYgKHRoaXMuX2lzSW5pdGVkKSB7XG4gICAgICAvLyAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgfVxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gICAgLy99XG4gIH1cblxuICBwcml2YXRlIF9zdGF0ZTogQVhDb21wb25lbnRTdGF0ZSA9ICdjbGVhcic7XG5cbiAgZ2V0IHN0YXRlKCk6IEFYQ29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHNldCBzdGF0ZSh2YWx1ZTogQVhDb21wb25lbnRTdGF0ZSkge1xuICAgIHRoaXMuc2V0U3RhdGUodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkVmFsdWU/OiBhbnksIG5ld1ZhbHVlPzogYW55KSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXgtZm9ybS1pbnB1dCcsICd0cnVlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrUmVxdWlyZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25PcHRpb25DaGFuZ2VkPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1JlcXVpcmVkKCkge1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBBcnJheS5mcm9tKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdheC12YWxpZGF0aW9uLXJ1bGUnKSkuc29tZShcbiAgICAgIGMgPT4gKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLmVuYWJsZWQgJiYgKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLnJ1bGUgPT0gJ3JlcXVpcmVkJ1xuICAgICk7XG4gICAgLy9cbiAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygnYXgtZWRpdG9yLWNvbnRhaW5lcicpXG4gICAgICAgID8gdGhpcy5nZXRIb3N0RWxlbWVudCgpXG4gICAgICAgIDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1lZGl0b3ItY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XG4gICAgICBjb25zdCBsYWJlbCA9IChmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2F4LWxhYmVsJykgYXMgYW55KT8uX19heENvbnRleHRfXztcbiAgICAgIGlmIChsYWJlbCkgbGFiZWwucmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcnVsZXMgPSBBcnJheS5mcm9tKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdheC12YWxpZGF0aW9uLXJ1bGUnKSkuZmlsdGVyKGMgPT4gKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLmVuYWJsZWQpO1xuICAgIC8vXG4gICAgaWYgKCFydWxlcyB8fCBydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgcmVzdWx0OiB0cnVlLFxuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KHJlc29sdmUgPT4ge1xuICAgICAgUHJvbWlzZS5hbGwoXG4gICAgICAgIHJ1bGVzXG4gICAgICAgICAgLmZpbHRlcihjID0+IHR5cGVvZiAoYyBhcyBhbnkpPy52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAubWFwKGMgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChjIGFzIGFueSkudmFsaWRhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgfSlcbiAgICAgICkudGhlbihkID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBkLmZpbmQoYyA9PiBjLnJlc3VsdCA9PT0gZmFsc2UpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKCdlcnJvcicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFN0YXRlKHN0YXRlOiBBWENvbXBvbmVudFN0YXRlLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygnYXgtZWRpdG9yLWNvbnRhaW5lcicpXG4gICAgICA/IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKVxuICAgICAgOiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4LWVkaXRvci1jb250YWluZXInKTtcbiAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XG4gICAgY29uc3QgbGFiZWwgPSBmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2F4LWxhYmVsJykgfHwgZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpO1xuICAgIGxldCB0YXJnZXQgPSBjb250YWluZXIgfHwgdGhpcy5nZXRIb3N0RWxlbWVudCgpLmZpcnN0RWxlbWVudENoaWxkO1xuICAgIGlmICh0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy5heC1lcnJvci1jb250YWluZXInKSkge1xuICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5heC1lcnJvci1jb250YWluZXInKTtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gdGFyZ2V0Py5wYXJlbnRFbGVtZW50O1xuICAgIGlmICghdGFyZ2V0IHx8ICFwYXJlbnQpIHJldHVybjtcblxuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgdGhpcy5fc3RhdGUgPSAnY2xlYXInO1xuICAgICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpKSB7XG4gICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5xdWVyeVNlbGVjdG9yKCdzcGFuLmF4LWVycm9yLW1lc3NhZ2UnKSEpO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnYXgtc3RhdGUtZXJyb3InLCAnYXgtc3RhdGUtc3VjY2VzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKCdjbGVhcicpO1xuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtc3VjY2VzcycpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9ICdzdWNjZXNzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgIGlmIChhcmdzWzBdKSB7XG4gICAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICBzcGFuLmlubmVyVGV4dCA9IGFyZ3NbMF07XG4gICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheC1lcnJvci1tZXNzYWdlJyk7XG4gICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHNwYW4pO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsPy5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZXJyb3InKTtcblxuICAgICAgICB0aGlzLl9zdGF0ZSA9ICdlcnJvcic7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uL3NyYy9jb21wb25lbnRzL3ZhbHVlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFvQixlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFHM0UsTUFDYSxnQkFBMEIsU0FBUSxlQUFlO0lBQzVEOzs7T0FHRztJQUNILGNBQWMsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7SUFFdEcsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pELFdBQVcsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFM0UsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVuQzs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxLQUFLLENBQVM7SUFDdEIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxrQkFBa0IsR0FBWSxLQUFLLENBQUM7SUFFNUMsSUFBSSxpQkFB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LENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzt1R0FwTlUsZ0JBQWdCOzJHQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhPYmplY3RVdGlsIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEFYQ29tcG9uZW50U3RhdGUsIE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2NsYXNzZXMvZXZlbnRzLmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YVmFsdWVDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQge1xuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+KCk7XG5cbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDb21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ29tcG9uZW50U3RhdGU+KCk7XG5cbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogIElmIHNldCB0byB0cnVlLCB1c2VyIGNhbm5vdCBjaGFuZ2UgdGhlIHZhbHVlIG9mIGNvbXBvbmVudC5cbiAgICovXG4gIGdldCByZWFkb25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cbiAgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNVc2VySW50ZXJhY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgaXNVc2VySW50ZXJhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVXNlckludGVyYWN0aW9uO1xuICB9XG5cbiAgc2V0IGlzVXNlckludGVyYWN0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIGluaXRWYWx1ZTogVDtcbiAgZGVmYXVsdFZhbHVlOiBUO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy5fdmFsdWUpIHx8IHRoaXMuZGVmYXVsdFZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2OiBUKSB7XG4gICAgdiA9IHRoaXMuc2V0VmFsdWUodik7XG4gICAgLy9pZiAoIXRoaXMuX2lzSW5pdGVkICkge1xuICAgIGNvbnN0IG9sZCA9IEFYT2JqZWN0VXRpbC5kZWVwSlNPTkNsb25lKHRoaXMudmFsdWUpO1xuICAgIC8vIFRPRE86IGNoZWNrIHJlYWwgZXF1YWxpdHlcbiAgICBpZiAodiAhPSBvbGQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkLCB0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgaWYgKHYgPT0gbnVsbCB8fCB2ID09IHVuZGVmaW5lZCB8fCB2ID09ICcnIHx8IChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09IDApKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHtcbiAgICAgIC8vICAgaWYgKHRoaXMuX2lzSW5pdGVkKSB7XG4gICAgICAvLyAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgfVxuICAgIHRoaXMuX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gICAgLy99XG4gIH1cblxuICBwcml2YXRlIF9zdGF0ZTogQVhDb21wb25lbnRTdGF0ZSA9ICdjbGVhcic7XG5cbiAgZ2V0IHN0YXRlKCk6IEFYQ29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHNldCBzdGF0ZSh2YWx1ZTogQVhDb21wb25lbnRTdGF0ZSkge1xuICAgIHRoaXMuc2V0U3RhdGUodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkVmFsdWU/OiBhbnksIG5ld1ZhbHVlPzogYW55KSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRoaXMuaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy5faXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXgtZm9ybS1pbnB1dCcsICd0cnVlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrUmVxdWlyZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25PcHRpb25DaGFuZ2VkPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1JlcXVpcmVkKCkge1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBBcnJheS5mcm9tKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdheC12YWxpZGF0aW9uLXJ1bGUnKSkuc29tZShjID0+IChjIGFzIGFueSkuX19heENvbnRleHRfXy5lbmFibGVkICYmIChjIGFzIGFueSkuX19heENvbnRleHRfXy5ydWxlID09ICdyZXF1aXJlZCcpO1xuICAgIC8vXG4gICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKSA/IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSA6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xuICAgICAgY29uc3QgZm9ybUZpZWxkID0gY29udGFpbmVyPy5jbG9zZXN0KCcuYXgtZm9ybS1maWVsZCcpO1xuICAgICAgY29uc3QgbGFiZWwgPSAoZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdheC1sYWJlbCcpIGFzIGFueSk/Ll9fYXhDb250ZXh0X187XG4gICAgICBpZiAobGFiZWwpIGxhYmVsLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJ1bGVzID0gQXJyYXkuZnJvbSh0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvckFsbCgnYXgtdmFsaWRhdGlvbi1ydWxlJykpLmZpbHRlcihjID0+IChjIGFzIGFueSkuX19heENvbnRleHRfXy5lbmFibGVkKTtcbiAgICAvL1xuICAgIGlmICghcnVsZXMgfHwgcnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKCdjbGVhcicpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PihyZXNvbHZlID0+IHtcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBydWxlc1xuICAgICAgICAgIC5maWx0ZXIoYyA9PiB0eXBlb2YgKGMgYXMgYW55KT8udmFsaWRhdGUgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgLm1hcChjID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoYyBhcyBhbnkpLnZhbGlkYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgIH0pXG4gICAgICApLnRoZW4oZCA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZC5maW5kKGMgPT4gYy5yZXN1bHQgPT09IGZhbHNlKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSgnZXJyb3InLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgIHJlc3VsdDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKCdzdWNjZXNzJyk7XG4gICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICByZXN1bHQ6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTdGF0ZShzdGF0ZTogQVhDb21wb25lbnRTdGF0ZSwgLi4uYXJncykge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKSA/IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSA6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IGNvbnRhaW5lcj8uY2xvc2VzdCgnLmF4LWZvcm0tZmllbGQnKTtcbiAgICBjb25zdCBsYWJlbCA9IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignYXgtbGFiZWwnKSB8fCBmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyk7XG4gICAgbGV0IHRhcmdldCA9IGNvbnRhaW5lciB8fCB0aGlzLmdldEhvc3RFbGVtZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpKSB7XG4gICAgICB0YXJnZXQgPSB0YXJnZXQucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKCF0YXJnZXQgfHwgIXBhcmVudCkgcmV0dXJuO1xuXG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICB0aGlzLl9zdGF0ZSA9ICdjbGVhcic7XG4gICAgICAgIGlmIChwYXJlbnQucXVlcnlTZWxlY3Rvcignc3Bhbi5heC1lcnJvci1tZXNzYWdlJykpIHtcbiAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpISk7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWw/LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLWVycm9yJyk7XG4gICAgICAgIHRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicsICdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ3N1Y2Nlc3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgnY2xlYXInKTtcbiAgICAgICAgaWYgKGFyZ3NbMF0pIHtcbiAgICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gYXJnc1swXTtcbiAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoJ2F4LWVycm9yLW1lc3NhZ2UnKTtcbiAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWw/LmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLWVycm9yJyk7XG4gICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlID0gJ2Vycm9yJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iXX0=
|
@@ -16,15 +16,22 @@ class AXHotkeysService {
|
|
16
16
|
addShortcut(options) {
|
17
17
|
const merged = { ...this.defaults, ...options };
|
18
18
|
const event = `keydown.${merged.keys}`;
|
19
|
-
return new Observable(
|
19
|
+
return new Observable(observer => {
|
20
20
|
const handler = (e) => {
|
21
21
|
e.preventDefault();
|
22
22
|
observer.next(e);
|
23
23
|
};
|
24
|
-
|
25
|
-
|
26
|
-
dispose();
|
27
|
-
|
24
|
+
if (merged.element) {
|
25
|
+
// Todo: check addEventListener is not function
|
26
|
+
const dispose = this.eventManager.addEventListener(merged.element, event, handler);
|
27
|
+
return () => {
|
28
|
+
dispose();
|
29
|
+
};
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
// console.error('Element is not accessible');
|
33
|
+
return null;
|
34
|
+
}
|
28
35
|
});
|
29
36
|
}
|
30
37
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: AXHotkeysService, deps: [{ token: i1.EventManager }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
@@ -38,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
38
45
|
type: Inject,
|
39
46
|
args: [DOCUMENT]
|
40
47
|
}] }]; } });
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9jb21tb24vc3JjL3NlcnZpY2VzL2hvdGtleS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQU90RCxNQUNhLGdCQUFnQjtJQUtQO0lBQXNEO0lBSjFFLFFBQVEsR0FBcUI7UUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3ZCLENBQUM7SUFFRixZQUFvQixZQUEwQixFQUE0QixRQUFrQjtRQUF4RSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUE0QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUVoRyxXQUFXLENBQUMsT0FBeUI7UUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUU7Z0JBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUM7WUFDRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLCtDQUErQztnQkFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsOENBQThDO2dCQUM5QyxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTNCVSxnQkFBZ0IsOENBSzZCLFFBQVE7MkdBTHJELGdCQUFnQixjQURILE1BQU07O1NBQ25CLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBTWlCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlJztcblxudHlwZSBPcHRpb25zID0ge1xuICBlbGVtZW50OiBhbnk7XG4gIGtleXM6IHN0cmluZztcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhIb3RrZXlzU2VydmljZSB7XG4gIGRlZmF1bHRzOiBQYXJ0aWFsPE9wdGlvbnM+ID0ge1xuICAgIGVsZW1lbnQ6IHRoaXMuZG9jdW1lbnQsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudE1hbmFnZXI6IEV2ZW50TWFuYWdlciwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQpIHt9XG5cbiAgYWRkU2hvcnRjdXQob3B0aW9uczogUGFydGlhbDxPcHRpb25zPikge1xuICAgIGNvbnN0IG1lcmdlZCA9IHsgLi4udGhpcy5kZWZhdWx0cywgLi4ub3B0aW9ucyB9O1xuICAgIGNvbnN0IGV2ZW50ID0gYGtleWRvd24uJHttZXJnZWQua2V5c31gO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKGU6IFVJRXZlbnQpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvYnNlcnZlci5uZXh0KGUpO1xuICAgICAgfTtcbiAgICAgIGlmIChtZXJnZWQuZWxlbWVudCkge1xuICAgICAgICAvLyBUb2RvOiBjaGVjayBhZGRFdmVudExpc3RlbmVyIGlzIG5vdCBmdW5jdGlvblxuXG4gICAgICAgIGNvbnN0IGRpc3Bvc2UgPSB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKG1lcmdlZC5lbGVtZW50LCBldmVudCwgaGFuZGxlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRWxlbWVudCBpcyBub3QgYWNjZXNzaWJsZScpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|