@skyux/datetime 7.0.0-beta.9 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +1630 -985
- package/esm2020/lib/modules/date-pipe/date-pipe.module.mjs +5 -5
- package/esm2020/lib/modules/date-pipe/date.pipe.mjs +4 -5
- package/esm2020/lib/modules/date-pipe/fuzzy-date.pipe.mjs +4 -5
- package/esm2020/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +20 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.mjs +20 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +267 -212
- package/esm2020/lib/modules/date-range-picker/date-range-picker.module.mjs +14 -6
- package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +45 -42
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +15 -15
- package/esm2020/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +4 -2
- package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +1 -1
- package/esm2020/lib/modules/datepicker/date-formatter.mjs +2 -2
- package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +11 -18
- package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +46 -23
- package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +29 -37
- package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +4 -4
- package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +227 -217
- package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +216 -227
- package/esm2020/lib/modules/datepicker/datepicker.component.mjs +122 -145
- package/esm2020/lib/modules/datepicker/datepicker.module.mjs +5 -5
- package/esm2020/lib/modules/datepicker/datepicker.service.mjs +4 -4
- package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +5 -6
- package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +63 -63
- package/esm2020/lib/modules/datepicker/daypicker.component.mjs +146 -141
- package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +126 -136
- package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +53 -52
- package/esm2020/lib/modules/datepicker/yearpicker.component.mjs +55 -54
- package/esm2020/lib/modules/shared/sky-datetime-resources.module.mjs +5 -5
- package/esm2020/lib/modules/timepicker/timepicker.component.mjs +109 -95
- package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +109 -103
- package/esm2020/lib/modules/timepicker/timepicker.module.mjs +5 -5
- package/fesm2015/skyux-datetime.mjs +1716 -1590
- package/fesm2015/skyux-datetime.mjs.map +1 -1
- package/fesm2020/skyux-datetime.mjs +1694 -1586
- package/fesm2020/skyux-datetime.mjs.map +1 -1
- package/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.d.ts +8 -0
- package/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.d.ts +8 -0
- package/lib/modules/date-range-picker/date-range-picker.component.d.ts +14 -43
- package/lib/modules/date-range-picker/date-range-picker.module.d.ts +9 -7
- package/lib/modules/date-range-picker/date-range.service.d.ts +1 -5
- package/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.d.ts +1 -1
- package/lib/modules/date-range-picker/types/date-range-calculator-validate-function.d.ts +1 -1
- package/lib/modules/date-range-picker/types/date-range-calculator.d.ts +3 -8
- package/lib/modules/date-range-picker/types/date-range.d.ts +2 -2
- package/lib/modules/datepicker/date-formatter.d.ts +3 -3
- package/lib/modules/datepicker/datepicker-adapter.service.d.ts +1 -5
- package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +18 -19
- package/lib/modules/datepicker/datepicker-calendar.component.d.ts +14 -25
- package/lib/modules/datepicker/datepicker-config.service.d.ts +3 -3
- package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +17 -53
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +13 -68
- package/lib/modules/datepicker/datepicker.component.d.ts +21 -58
- package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
- package/lib/modules/datepicker/daypicker-cell.component.d.ts +3 -10
- package/lib/modules/datepicker/daypicker.component.d.ts +4 -16
- package/lib/modules/datepicker/fuzzy-date.service.d.ts +6 -30
- package/lib/modules/datepicker/monthpicker.component.d.ts +1 -4
- package/lib/modules/datepicker/yearpicker.component.d.ts +1 -3
- package/lib/modules/timepicker/timepicker.component.d.ts +14 -32
- package/lib/modules/timepicker/timepicker.directive.d.ts +9 -27
- package/package.json +12 -12
@@ -1,6 +1,7 @@
|
|
1
|
+
var _SkyDayPickerComponent_instances, _SkyDayPickerComponent_daysInMonth, _SkyDayPickerComponent_initialDate, _SkyDayPickerComponent_ngUnsubscribe, _SkyDayPickerComponent_compareDays, _SkyDayPickerComponent_refreshDayView, _SkyDayPickerComponent_keydownDays, _SkyDayPickerComponent_getDaysInMonth, _SkyDayPickerComponent_applyCustomDates, _SkyDayPickerComponent_dateRangeRowsAreEqual, _SkyDayPickerComponent_getDateRange;
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
1
3
|
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
2
4
|
import { Subject } from 'rxjs';
|
3
|
-
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
4
5
|
import * as i0 from "@angular/core";
|
5
6
|
import * as i1 from "./datepicker-calendar-inner.component";
|
6
7
|
import * as i2 from "@angular/common";
|
@@ -11,39 +12,42 @@ import * as i4 from "./daypicker-cell.component";
|
|
11
12
|
*/
|
12
13
|
export class SkyDayPickerComponent {
|
13
14
|
constructor(datepicker) {
|
15
|
+
_SkyDayPickerComponent_instances.add(this);
|
14
16
|
this.calendarDateRangeChange = new EventEmitter();
|
15
17
|
this.isWaiting = false;
|
16
18
|
this.activeDateHasChanged = false;
|
17
19
|
this.labels = [];
|
20
|
+
this.title = '';
|
18
21
|
this.rows = [];
|
19
22
|
this.weekNumbers = [];
|
20
|
-
this
|
23
|
+
_SkyDayPickerComponent_daysInMonth.set(this, [
|
21
24
|
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
|
22
|
-
];
|
23
|
-
this
|
25
|
+
]);
|
26
|
+
_SkyDayPickerComponent_initialDate.set(this, void 0);
|
27
|
+
_SkyDayPickerComponent_ngUnsubscribe.set(this, new Subject());
|
24
28
|
this.datepicker = datepicker;
|
25
29
|
}
|
26
30
|
set customDates(value) {
|
27
31
|
/* istanbul ignore else */
|
28
32
|
if (value) {
|
29
|
-
this.
|
33
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_applyCustomDates).call(this, value, this.rows);
|
30
34
|
}
|
31
35
|
}
|
32
36
|
ngOnInit() {
|
33
37
|
this.datepicker.stepDay = { months: 1 };
|
34
|
-
this
|
38
|
+
__classPrivateFieldSet(this, _SkyDayPickerComponent_initialDate, this.datepicker.activeDate.getDate(), "f");
|
35
39
|
this.datepicker.setRefreshViewHandler(() => {
|
36
|
-
this.
|
40
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_refreshDayView).call(this);
|
37
41
|
}, 'day');
|
38
|
-
this.datepicker.setCompareHandler(this
|
42
|
+
this.datepicker.setCompareHandler(__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays), 'day');
|
39
43
|
this.datepicker.setKeydownHandler((key, event) => {
|
40
|
-
this.
|
44
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_keydownDays).call(this, key, event);
|
41
45
|
}, 'day');
|
42
46
|
this.datepicker.refreshView();
|
43
47
|
}
|
44
48
|
ngOnDestroy() {
|
45
|
-
this.
|
46
|
-
this.
|
49
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_ngUnsubscribe, "f").next();
|
50
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_ngUnsubscribe, "f").complete();
|
47
51
|
}
|
48
52
|
getDates(startDate, n) {
|
49
53
|
const dates = new Array(n);
|
@@ -58,147 +62,148 @@ export class SkyDayPickerComponent {
|
|
58
62
|
}
|
59
63
|
return dates;
|
60
64
|
}
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
65
|
+
}
|
66
|
+
_SkyDayPickerComponent_daysInMonth = new WeakMap(), _SkyDayPickerComponent_initialDate = new WeakMap(), _SkyDayPickerComponent_ngUnsubscribe = new WeakMap(), _SkyDayPickerComponent_instances = new WeakSet(), _SkyDayPickerComponent_compareDays = function _SkyDayPickerComponent_compareDays(date1, date2) {
|
67
|
+
const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
|
68
|
+
const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
|
69
|
+
return d1.getTime() - d2.getTime();
|
70
|
+
}, _SkyDayPickerComponent_refreshDayView = function _SkyDayPickerComponent_refreshDayView() {
|
71
|
+
const year = this.datepicker.activeDate.getFullYear();
|
72
|
+
const month = this.datepicker.activeDate.getMonth();
|
73
|
+
const firstDayOfMonth = new Date(year, month, 1);
|
74
|
+
const difference = this.datepicker.startingDay - firstDayOfMonth.getDay();
|
75
|
+
const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
|
76
|
+
const firstDate = new Date(firstDayOfMonth.getTime());
|
77
|
+
if (this.datepicker.activeDate.getDate() !== __classPrivateFieldGet(this, _SkyDayPickerComponent_initialDate, "f")) {
|
78
|
+
this.activeDateHasChanged = true;
|
79
|
+
}
|
80
|
+
/* istanbul ignore else */
|
81
|
+
/* sanity check */
|
82
|
+
if (numDisplayedFromPreviousMonth > 0) {
|
83
|
+
firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
|
84
|
+
}
|
85
|
+
// 42 is the number of days on a six-week calendar
|
86
|
+
const days = this.getDates(firstDate, 42);
|
87
|
+
const pickerDates = [];
|
88
|
+
for (let i = 0; i < 42; i++) {
|
89
|
+
const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);
|
90
|
+
pickerDates[i] = _dateObject;
|
91
|
+
}
|
92
|
+
this.labels = [];
|
93
|
+
for (let j = 0; j < 7; j++) {
|
94
|
+
this.labels[j] = {};
|
95
|
+
this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
|
96
|
+
this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
|
97
|
+
}
|
98
|
+
this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
|
99
|
+
const oldDateRange = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDateRange).call(this, this.rows);
|
100
|
+
this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
|
101
|
+
const newDateRange = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDateRange).call(this, this.rows);
|
102
|
+
if (!__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_dateRangeRowsAreEqual).call(this, oldDateRange, newDateRange)) {
|
103
|
+
// Safety check
|
76
104
|
/* istanbul ignore else */
|
77
|
-
|
78
|
-
if (numDisplayedFromPreviousMonth > 0) {
|
79
|
-
firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
|
80
|
-
}
|
81
|
-
// 42 is the number of days on a six-week calendar
|
82
|
-
const days = this.getDates(firstDate, 42);
|
83
|
-
const pickerDates = [];
|
84
|
-
for (let i = 0; i < 42; i++) {
|
85
|
-
const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);
|
86
|
-
pickerDates[i] = _dateObject;
|
87
|
-
}
|
88
|
-
this.labels = [];
|
89
|
-
for (let j = 0; j < 7; j++) {
|
90
|
-
this.labels[j] = {};
|
91
|
-
this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
|
92
|
-
this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
|
93
|
-
}
|
94
|
-
this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
|
95
|
-
const oldDateRange = this.getDateRange(this.rows);
|
96
|
-
this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
|
97
|
-
const newDateRange = this.getDateRange(this.rows);
|
98
|
-
if (!this.dateRangeRowsAreEqual(oldDateRange, newDateRange)) {
|
105
|
+
if (newDateRange) {
|
99
106
|
this.calendarDateRangeChange.next({
|
100
107
|
startDate: newDateRange.startDate,
|
101
108
|
endDate: newDateRange.endDate,
|
102
109
|
});
|
103
110
|
}
|
104
|
-
|
105
|
-
|
106
|
-
let date = this.datepicker.activeDate.getDate();
|
107
|
-
/* istanbul ignore else */
|
108
|
-
/* sanity check */
|
109
|
-
if (key === 'left') {
|
110
|
-
date = date - 1;
|
111
|
-
}
|
112
|
-
else if (key === 'up') {
|
113
|
-
date = date - 7;
|
114
|
-
}
|
115
|
-
else if (key === 'right') {
|
116
|
-
date = date + 1;
|
117
|
-
}
|
118
|
-
else if (key === 'down') {
|
119
|
-
date = date + 7;
|
120
|
-
}
|
121
|
-
else if (key === 'pageup' || key === 'pagedown') {
|
122
|
-
const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
|
123
|
-
this.datepicker.activeDate.setMonth(month, 1);
|
124
|
-
date = Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
|
125
|
-
}
|
126
|
-
else if (key === 'home') {
|
127
|
-
date = 1;
|
128
|
-
}
|
129
|
-
else if (key === 'end') {
|
130
|
-
date = this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());
|
111
|
+
else {
|
112
|
+
this.calendarDateRangeChange.next(undefined);
|
131
113
|
}
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
114
|
+
}
|
115
|
+
}, _SkyDayPickerComponent_keydownDays = function _SkyDayPickerComponent_keydownDays(key, event) {
|
116
|
+
let date = this.datepicker.activeDate.getDate();
|
117
|
+
/* istanbul ignore else */
|
118
|
+
/* sanity check */
|
119
|
+
if (key === 'left') {
|
120
|
+
date = date - 1;
|
121
|
+
}
|
122
|
+
else if (key === 'up') {
|
123
|
+
date = date - 7;
|
124
|
+
}
|
125
|
+
else if (key === 'right') {
|
126
|
+
date = date + 1;
|
127
|
+
}
|
128
|
+
else if (key === 'down') {
|
129
|
+
date = date + 7;
|
130
|
+
}
|
131
|
+
else if (key === 'pageup' || key === 'pagedown') {
|
132
|
+
const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
|
133
|
+
this.datepicker.activeDate.setMonth(month, 1);
|
134
|
+
date = Math.min(__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDaysInMonth).call(this, this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
|
135
|
+
}
|
136
|
+
else if (key === 'home') {
|
137
|
+
date = 1;
|
138
|
+
}
|
139
|
+
else if (key === 'end') {
|
140
|
+
date = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDaysInMonth).call(this, this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());
|
141
|
+
}
|
142
|
+
this.datepicker.activeDate.setDate(date);
|
143
|
+
}, _SkyDayPickerComponent_getDaysInMonth = function _SkyDayPickerComponent_getDaysInMonth(year, month) {
|
144
|
+
return month === 1 &&
|
145
|
+
year % 4 === 0 &&
|
146
|
+
(year % 400 === 0 || year % 100 !== 0)
|
147
|
+
? 29
|
148
|
+
: __classPrivateFieldGet(this, _SkyDayPickerComponent_daysInMonth, "f")[month];
|
149
|
+
}, _SkyDayPickerComponent_applyCustomDates = function _SkyDayPickerComponent_applyCustomDates(customDates, dateRows) {
|
150
|
+
let date;
|
151
|
+
let newDate;
|
152
|
+
let dateIndex;
|
153
|
+
/* istanbul ignore else */
|
154
|
+
if (customDates && dateRows) {
|
155
|
+
customDates.forEach((customDate) => {
|
156
|
+
dateIndex = -1;
|
157
|
+
dateRows.forEach((row) => {
|
158
|
+
if (dateIndex === -1) {
|
159
|
+
dateIndex = row.findIndex((d) => {
|
160
|
+
return d.date.getTime() === customDate.date.getTime();
|
161
|
+
});
|
162
|
+
if (dateIndex > -1) {
|
163
|
+
date = row[dateIndex];
|
164
|
+
// Replace the date with a new instance so the display gets updated.
|
165
|
+
newDate = {
|
166
|
+
current: date.current,
|
167
|
+
date: date.date,
|
168
|
+
disabled: !!date.disabled || !!customDate.disabled,
|
169
|
+
keyDate: !!customDate.keyDate || !!date.keyDate,
|
170
|
+
keyDateText: customDate.keyDateText || date.keyDateText,
|
171
|
+
label: date.label,
|
172
|
+
secondary: date.secondary,
|
173
|
+
selected: date.selected,
|
174
|
+
uid: date.uid,
|
175
|
+
};
|
176
|
+
row[dateIndex] = newDate;
|
173
177
|
}
|
174
|
-
}
|
178
|
+
}
|
175
179
|
});
|
176
|
-
}
|
180
|
+
});
|
177
181
|
}
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
}
|
183
|
-
else if ((rangeA && !rangeB) || (!rangeA && rangeB)) {
|
184
|
-
return false;
|
185
|
-
}
|
186
|
-
return (this.compareDays(rangeA.startDate, rangeB.startDate) === 0 &&
|
187
|
-
this.compareDays(rangeA.endDate, rangeB.endDate) === 0);
|
182
|
+
}, _SkyDayPickerComponent_dateRangeRowsAreEqual = function _SkyDayPickerComponent_dateRangeRowsAreEqual(rangeA, rangeB) {
|
183
|
+
/* istanbul ignore if */
|
184
|
+
if (!rangeA && !rangeB) {
|
185
|
+
return true;
|
188
186
|
}
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
return {
|
193
|
-
startDate: rows[0][0].date,
|
194
|
-
endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
|
195
|
-
};
|
196
|
-
}
|
187
|
+
else if (rangeA && rangeB) {
|
188
|
+
return (__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays).call(this, rangeA.startDate, rangeB.startDate) === 0 &&
|
189
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays).call(this, rangeA.endDate, rangeB.endDate) === 0);
|
197
190
|
}
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
191
|
+
else {
|
192
|
+
return false;
|
193
|
+
}
|
194
|
+
}, _SkyDayPickerComponent_getDateRange = function _SkyDayPickerComponent_getDateRange(rows) {
|
195
|
+
/* istanbul ignore else */
|
196
|
+
if (rows && rows.length > 0) {
|
197
|
+
return {
|
198
|
+
startDate: rows[0][0].date,
|
199
|
+
endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
|
200
|
+
};
|
201
|
+
}
|
202
|
+
return undefined;
|
203
|
+
};
|
204
|
+
SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
|
205
|
+
SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i3.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { kind: "component", type: i4.SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }] });
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
|
202
207
|
type: Component,
|
203
208
|
args: [{ selector: 'sky-daypicker', template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"] }]
|
204
209
|
}], ctorParameters: function () { return [{ type: i1.SkyDatepickerCalendarInnerComponent }]; }, propDecorators: { customDates: [{
|
@@ -208,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
208
213
|
}], isWaiting: [{
|
209
214
|
type: Input
|
210
215
|
}] } });
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQWM1Rjs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUE2QmhDLFlBQW1CLFVBQStDO1FBbkIzRCw0QkFBdUIsR0FBOEMsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFHckgsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQW9DLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUkxQixnQkFBVyxHQUFrQjtZQUNuQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDL0MsQ0FBQztRQUVNLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUcxQyxJQUFJLENBQUMsVUFBVSxHQUFH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cG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxuLyoqXG4gKiBIZWxwZXIgaW50ZXJmYWNlIHRvIGNvbXBhcmUgZGF0ZSByYW5nZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFNreURhdGVSYW5nZSB7XG4gIGVuZERhdGU6IERhdGU7XG5cbiAgc3RhcnREYXRlOiBEYXRlO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF5cGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXlwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXlwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1c3RvbURhdGVzKHZhbHVlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlDdXN0b21EYXRlcyh2YWx1ZSwgdGhpcy5yb3dzKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1dhaXRpbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgYWN0aXZlRGF0ZUhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgcHVibGljIGxhYmVsczogYW55W10gPSBbXTtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyByb3dzOiBBcnJheTxBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4+ID0gW107XG4gIHB1YmxpYyB3ZWVrTnVtYmVyczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuICBwdWJsaWMgQ1VSUkVOVF9USEVNRV9URU1QTEFURTogYW55O1xuXG4gIHByaXZhdGUgZGF5c0luTW9udGg6IEFycmF5PG51bWJlcj4gPSBbXG4gICAgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSxcbiAgXTtcbiAgcHJpdmF0ZSBpbml0aWFsRGF0ZTogbnVtYmVyO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyLnN0ZXBEYXkgPSB7IG1vbnRoczogMSB9O1xuICAgIHRoaXMuaW5pdGlhbERhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0UmVmcmVzaFZpZXdIYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaERheVZpZXcoKTtcbiAgICB9LCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy5jb21wYXJlRGF5cywgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldEtleWRvd25IYW5kbGVyKChrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIHRoaXMua2V5ZG93bkRheXMoa2V5LCBldmVudCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRlcyhzdGFydERhdGU6IERhdGUsIG46IG51bWJlcik6IERhdGVbXSB7XG4gICAgY29uc3QgZGF0ZXM6IERhdGVbXSA9IG5ldyBBcnJheShuKTtcbiAgICBsZXQgY3VycmVudCA9IG5ldyBEYXRlKHN0YXJ0RGF0ZS5nZXRUaW1lKCkpO1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICB3aGlsZSAoaSA8IG4pIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50LmdldFRpbWUoKSk7XG4gICAgICBkYXRlID0gdGhpcy5kYXRlcGlja2VyLmZpeFRpbWVab25lKGRhdGUpO1xuICAgICAgZGF0ZXNbaSsrXSA9IGRhdGU7XG4gICAgICBjdXJyZW50ID0gbmV3IERhdGUoXG4gICAgICAgIGN1cnJlbnQuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgY3VycmVudC5nZXRNb250aCgpLFxuICAgICAgICBjdXJyZW50LmdldERhdGUoKSArIDFcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZURheXMoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBkMSA9IG5ldyBEYXRlKGRhdGUxLmdldEZ1bGxZZWFyKCksIGRhdGUxLmdldE1vbnRoKCksIGRhdGUxLmdldERhdGUoKSk7XG4gICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRlMi5nZXRGdWxsWWVhcigpLCBkYXRlMi5nZXRNb250aCgpLCBkYXRlMi5nZXREYXRlKCkpO1xuICAgIHJldHVybiBkMS5nZXRUaW1lKCkgLSBkMi5nZXRUaW1lKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXlWaWV3KCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuZGF0ZXBpY2tlci5zdGFydGluZ0RheSAtIGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA9XG4gICAgICBkaWZmZXJlbmNlID4gMCA/IDcgLSBkaWZmZXJlbmNlIDogLWRpZmZlcmVuY2U7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoZmlyc3REYXlPZk1vbnRoLmdldFRpbWUoKSk7XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpICE9PSB0aGlzLmluaXRpYWxEYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA+IDApIHtcbiAgICAgIGZpcnN0RGF0ZS5zZXREYXRlKC1udW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCArIDEpO1xuICAgIH1cblxuICAgIC8vIDQyIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBvbiBhIHNpeC13ZWVrIGNhbGVuZGFyXG4gICAgY29uc3QgZGF5czogRGF0ZVtdID0gdGhpcy5nZXREYXRlcyhmaXJzdERhdGUsIDQyKTtcbiAgICBjb25zdCBwaWNrZXJEYXRlczogQXJyYXk8U2t5RGF0ZXBpY2tlckRhdGU+ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MjsgaSsrKSB7XG4gICAgICBjb25zdCBfZGF0ZU9iamVjdCA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXlzW2ldLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5LFxuICAgICAgICBkYXlzW2ldLmdldE1vbnRoKCkgIT09IG1vbnRoLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaVxuICAgICAgKTtcbiAgICAgIHBpY2tlckRhdGVzW2ldID0gX2RhdGVPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgdGhpcy5sYWJlbHNbal0gPSB7fTtcbiAgICAgIHRoaXMubGFiZWxzW2pdLmFiYnIgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgICAgcGlja2VyRGF0ZXNbal0uZGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheUhlYWRlclxuICAgICAgKTtcbiAgICAgIHRoaXMubGFiZWxzW2pdLmZ1bGwgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgICAgcGlja2VyRGF0ZXNbal0uZGF0ZSxcbiAgICAgICAgJ0VFRUUnXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGl0bGUgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheVRpdGxlXG4gICAgKTtcblxuICAgIGNvbnN0IG9sZERhdGVSYW5nZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhwaWNrZXJEYXRlcywgNyk7XG4gICAgY29uc3QgbmV3RGF0ZVJhbmdlID0gdGhpcy5nZXREYXRlUmFuZ2UodGhpcy5yb3dzKTtcblxuICAgIGlmICghdGhpcy5kYXRlUmFuZ2VSb3dzQXJlRXF1YWwob2xkRGF0ZVJhbmdlLCBuZXdEYXRlUmFuZ2UpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQoe1xuICAgICAgICBzdGFydERhdGU6IG5ld0RhdGVSYW5nZS5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IG5ld0RhdGVSYW5nZS5lbmREYXRlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBrZXlkb3duRGF5cyhrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldERhdGUoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChrZXkgPT09ICdsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndXAnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdyaWdodCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlICsgMTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgY29uc3QgbW9udGggPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGgsIDEpO1xuICAgICAgZGF0ZSA9IE1hdGgubWluKFxuICAgICAgICB0aGlzLmdldERheXNJbk1vbnRoKFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKVxuICAgICAgICApLFxuICAgICAgICBkYXRlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5kJykge1xuICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF5c0luTW9udGgoXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldERhdGUoZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiBtb250aCA9PT0gMSAmJlxuICAgICAgeWVhciAlIDQgPT09IDAgJiZcbiAgICAgICh5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSAxMDAgIT09IDApXG4gICAgICA/IDI5XG4gICAgICA6IHRoaXMuZGF5c0luTW9udGhbbW9udGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9tIGRhdGUgcHJvcGVydGllcyB0byB0aGUgZXhpc3RpbmcgZGF0ZXMgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlDdXN0b21EYXRlcyhcbiAgICBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSxcbiAgICBkYXRlUm93czogU2t5RGF0ZXBpY2tlckRhdGVbXVtdXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXRlcGlja2VyRGF0ZTtcbiAgICBsZXQgbmV3RGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG4gICAgbGV0IGRhdGVJbmRleDogbnVtYmVyO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY3VzdG9tRGF0ZXMgJiYgZGF0ZVJvd3MpIHtcbiAgICAgIGN1c3RvbURhdGVzLmZvckVhY2goKGN1c3RvbURhdGUpID0+IHtcbiAgICAgICAgZGF0ZUluZGV4ID0gLTE7XG4gICAgICAgIGRhdGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGlmIChkYXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBkYXRlSW5kZXggPSByb3cuZmluZEluZGV4KChkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBkLmRhdGUuZ2V0VGltZSgpID09PSBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgZGF0ZSA9IHJvd1tkYXRlSW5kZXhdO1xuICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBkYXRlIHdpdGggYSBuZXcgaW5zdGFuY2Ugc28gdGhlIGRpc3BsYXkgZ2V0cyB1cGRhdGVkLlxuICAgICAgICAgICAgICBuZXdEYXRlID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGRhdGUuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmRhdGUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhZGF0ZS5kaXNhYmxlZCB8fCAhIWN1c3RvbURhdGUuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAga2V5RGF0ZTogISFjdXN0b21EYXRlLmtleURhdGUgfHwgISFkYXRlLmtleURhdGUsXG4gICAgICAgICAgICAgICAga2V5RGF0ZVRleHQ6IGN1c3RvbURhdGUua2V5RGF0ZVRleHQgfHwgZGF0ZS5rZXlEYXRlVGV4dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogZGF0ZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGRhdGUuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIHVpZDogZGF0ZS51aWQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJvd1tkYXRlSW5kZXhdID0gbmV3RGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkYXRlUmFuZ2VSb3dzQXJlRXF1YWwoXG4gICAgcmFuZ2VBOiBTa3lEYXRlUmFuZ2UsXG4gICAgcmFuZ2VCOiBTa3lEYXRlUmFuZ2VcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyYW5nZUEgJiYgIXJhbmdlQikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICgocmFuZ2VBICYmICFyYW5nZUIpIHx8ICghcmFuZ2VBICYmIHJhbmdlQikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb21wYXJlRGF5cyhyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSA9PT0gMCAmJlxuICAgICAgdGhpcy5jb21wYXJlRGF5cyhyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpID09PSAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0ZVJhbmdlKFxuICAgIHJvd3M6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj5cbiAgKTogU2t5RGF0ZVJhbmdlIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChyb3dzICYmIHJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnREYXRlOiByb3dzWzBdWzBdLmRhdGUsXG4gICAgICAgIGVuZERhdGU6IHJvd3Nbcm93cy5sZW5ndGggLSAxXVtyb3dzW3Jvd3MubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gMV0uZGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheSdcIiBjbGFzcz1cInNreS1kYXlwaWNrZXItd3JhcHBlclwiPlxuICA8dGFibGVcbiAgICBjbGFzcz1cInNreS1kYXlwaWNrZXItdGFibGVcIlxuICAgIHJvbGU9XCJncmlkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4gID5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1sZWZ0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tcHJldmlvdXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIubW92ZUNhbGVuZGFyKCRldmVudCwgLTEpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLWRlZmF1bHRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgID48L3NreS1pY29uPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1tb2Rlcm5cIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgW2F0dHIuY29sc3Bhbl09XCI1XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2lkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy10aXRsZSdcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItdGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlck1vZGUgPT09IGRhdGVwaWNrZXIubWF4TW9kZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLmRhdGVwaWNrZXJNb2RlID09PSBkYXRlcGlja2VyLm1heE1vZGVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5tb3ZlQ2FsZW5kYXIoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLW1vZGVyblwiXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNlbnRlciBza3ktZGF0ZXBpY2tlci13ZWVrZGF5c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c21hbGwgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCI+XG4gICAgICAgICAgICA8Yj57eyBsYWJlbC5hYmJyIH19PC9iPlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPCEtLSBXYWl0IGluZGljYXRvciBmb3IgYXN5bmMgY3VzdG9tIGRhdGUgc3RyZWFtIC0tPlxuICAgICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCI+IDwvc2t5LXdhaXQ+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicm93c1wiIGxldC1yb3c9XCIkaW1wbGljaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2Ygcm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2VudGVyXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICBbaWRdPVwiZGF0ZS51aWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1kYXlwaWNrZXItY2VsbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBaUIvQjs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUErQmhDLFlBQW1CLFVBQStDOztRQXJCM0QsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBRTlDLENBQUM7UUFHRyxjQUFTLEdBQXdCLEtBQUssQ0FBQztRQUV2Qyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUNuQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsU0FBSSxHQUFvQyxFQUFFLENBQUM7UUFDM0MsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFJbEMsNkNBQThCO1lBQzVCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUMvQyxFQUFDO1FBQ0YscURBQWlDO1FBQ2pDLCtDQUFpQixJQUFJLE9BQU8sRUFBUSxFQUFDO1FBR25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lB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YSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZUFBZTswSEFNZCxXQUFXO3NCQURyQixLQUFLO2dCQVNDLHVCQUF1QjtzQkFEN0IsTUFBTTtnQkFNQSxTQUFTO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWN1c3RvbS1kYXRlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJEYXRlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWRhdGUnO1xuXG4vKipcbiAqIEhlbHBlciBpbnRlcmZhY2UgdG8gY29tcGFyZSBkYXRlIHJhbmdlcy5cbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5RGF0ZVJhbmdlIHtcbiAgZW5kRGF0ZTogRGF0ZTtcblxuICBzdGFydERhdGU6IERhdGU7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXlwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ2RheXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RheXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXlQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY3VzdG9tRGF0ZXModmFsdWU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jYXBwbHlDdXN0b21EYXRlcyh2YWx1ZSwgdGhpcy5yb3dzKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfCB1bmRlZmluZWRcbiAgPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1dhaXRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgYWN0aXZlRGF0ZUhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgcHVibGljIGxhYmVsczogYW55W10gPSBbXTtcbiAgcHVibGljIHRpdGxlID0gJyc7XG4gIHB1YmxpYyByb3dzOiBBcnJheTxBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4+ID0gW107XG4gIHB1YmxpYyB3ZWVrTnVtYmVyczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuICBwdWJsaWMgQ1VSUkVOVF9USEVNRV9URU1QTEFURTogYW55O1xuXG4gICNkYXlzSW5Nb250aDogQXJyYXk8bnVtYmVyPiA9IFtcbiAgICAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxLFxuICBdO1xuICAjaW5pdGlhbERhdGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyLnN0ZXBEYXkgPSB7IG1vbnRoczogMSB9O1xuICAgIHRoaXMuI2luaXRpYWxEYXRlID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldFJlZnJlc2hWaWV3SGFuZGxlcigoKSA9PiB7XG4gICAgICB0aGlzLiNyZWZyZXNoRGF5VmlldygpO1xuICAgIH0sICdkYXknKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRDb21wYXJlSGFuZGxlcih0aGlzLiNjb21wYXJlRGF5cywgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldEtleWRvd25IYW5kbGVyKChrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuI2tleWRvd25EYXlzKGtleSwgZXZlbnQpO1xuICAgIH0sICdkYXknKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRlcyhzdGFydERhdGU6IERhdGUsIG46IG51bWJlcik6IERhdGVbXSB7XG4gICAgY29uc3QgZGF0ZXM6IERhdGVbXSA9IG5ldyBBcnJheShuKTtcbiAgICBsZXQgY3VycmVudCA9IG5ldyBEYXRlKHN0YXJ0RGF0ZS5nZXRUaW1lKCkpO1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICB3aGlsZSAoaSA8IG4pIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50LmdldFRpbWUoKSk7XG4gICAgICBkYXRlID0gdGhpcy5kYXRlcGlja2VyLmZpeFRpbWVab25lKGRhdGUpO1xuICAgICAgZGF0ZXNbaSsrXSA9IGRhdGU7XG4gICAgICBjdXJyZW50ID0gbmV3IERhdGUoXG4gICAgICAgIGN1cnJlbnQuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgY3VycmVudC5nZXRNb250aCgpLFxuICAgICAgICBjdXJyZW50LmdldERhdGUoKSArIDFcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gICNjb21wYXJlRGF5cyhkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBudW1iZXIge1xuICAgIGNvbnN0IGQxID0gbmV3IERhdGUoZGF0ZTEuZ2V0RnVsbFllYXIoKSwgZGF0ZTEuZ2V0TW9udGgoKSwgZGF0ZTEuZ2V0RGF0ZSgpKTtcbiAgICBjb25zdCBkMiA9IG5ldyBEYXRlKGRhdGUyLmdldEZ1bGxZZWFyKCksIGRhdGUyLmdldE1vbnRoKCksIGRhdGUyLmdldERhdGUoKSk7XG4gICAgcmV0dXJuIGQxLmdldFRpbWUoKSAtIGQyLmdldFRpbWUoKTtcbiAgfVxuXG4gICNyZWZyZXNoRGF5VmlldygpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLmRhdGVwaWNrZXIuc3RhcnRpbmdEYXkgLSBmaXJzdERheU9mTW9udGguZ2V0RGF5KCk7XG4gICAgY29uc3QgbnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggPVxuICAgICAgZGlmZmVyZW5jZSA+IDAgPyA3IC0gZGlmZmVyZW5jZSA6IC1kaWZmZXJlbmNlO1xuICAgIGNvbnN0IGZpcnN0RGF0ZSA9IG5ldyBEYXRlKGZpcnN0RGF5T2ZNb250aC5nZXRUaW1lKCkpO1xuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldERhdGUoKSAhPT0gdGhpcy4jaW5pdGlhbERhdGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZUhhc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKG51bURpc3BsYXllZEZyb21QcmV2aW91c01vbnRoID4gMCkge1xuICAgICAgZmlyc3REYXRlLnNldERhdGUoLW51bURpc3BsYXllZEZyb21QcmV2aW91c01vbnRoICsgMSk7XG4gICAgfVxuXG4gICAgLy8gNDIgaXMgdGhlIG51bWJlciBvZiBkYXlzIG9uIGEgc2l4LXdlZWsgY2FsZW5kYXJcbiAgICBjb25zdCBkYXlzOiBEYXRlW10gPSB0aGlzLmdldERhdGVzKGZpcnN0RGF0ZSwgNDIpO1xuICAgIGNvbnN0IHBpY2tlckRhdGVzOiBBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQyOyBpKyspIHtcbiAgICAgIGNvbnN0IF9kYXRlT2JqZWN0ID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZURhdGVPYmplY3QoXG4gICAgICAgIGRheXNbaV0sXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXksXG4gICAgICAgIGRheXNbaV0uZ2V0TW9udGgoKSAhPT0gbW9udGgsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLScgKyBpXG4gICAgICApO1xuICAgICAgcGlja2VyRGF0ZXNbaV0gPSBfZGF0ZU9iamVjdDtcbiAgICB9XG5cbiAgICB0aGlzLmxhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgNzsgaisrKSB7XG4gICAgICB0aGlzLmxhYmVsc1tqXSA9IHt9O1xuICAgICAgdGhpcy5sYWJlbHNbal0uYWJiciA9IHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICBwaWNrZXJEYXRlc1tqXS5kYXRlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5SGVhZGVyXG4gICAgICApO1xuICAgICAgdGhpcy5sYWJlbHNbal0uZnVsbCA9IHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICBwaWNrZXJEYXRlc1tqXS5kYXRlLFxuICAgICAgICAnRUVFRSdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5VGl0bGVcbiAgICApO1xuXG4gICAgY29uc3Qgb2xkRGF0ZVJhbmdlID0gdGhpcy4jZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhwaWNrZXJEYXRlcywgNyk7XG4gICAgY29uc3QgbmV3RGF0ZVJhbmdlID0gdGhpcy4jZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG5cbiAgICBpZiAoIXRoaXMuI2RhdGVSYW5nZVJvd3NBcmVFcXVhbChvbGREYXRlUmFuZ2UsIG5ld0RhdGVSYW5nZSkpIHtcbiAgICAgIC8vIFNhZmV0eSBjaGVja1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdEYXRlUmFuZ2UpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGVSYW5nZUNoYW5nZS5uZXh0KHtcbiAgICAgICAgICBzdGFydERhdGU6IG5ld0RhdGVSYW5nZS5zdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZTogbmV3RGF0ZVJhbmdlLmVuZERhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGVSYW5nZUNoYW5nZS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2tleWRvd25EYXlzKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGxldCBkYXRlID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGtleSA9PT0gJ2xlZnQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICd1cCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gNztcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgKyAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZG93bicpIHtcbiAgICAgIGRhdGUgPSBkYXRlICsgNztcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3BhZ2V1cCcgfHwga2V5ID09PSAncGFnZWRvd24nKSB7XG4gICAgICBjb25zdCBtb250aCA9XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyAoa2V5ID09PSAncGFnZXVwJyA/IC0xIDogMSk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXRNb250aChtb250aCwgMSk7XG4gICAgICBkYXRlID0gTWF0aC5taW4oXG4gICAgICAgIHRoaXMuI2dldERheXNJbk1vbnRoKFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKVxuICAgICAgICApLFxuICAgICAgICBkYXRlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5kJykge1xuICAgICAgZGF0ZSA9IHRoaXMuI2dldERheXNJbk1vbnRoKFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXREYXRlKGRhdGUpO1xuICB9XG5cbiAgI2dldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiBtb250aCA9PT0gMSAmJlxuICAgICAgeWVhciAlIDQgPT09IDAgJiZcbiAgICAgICh5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSAxMDAgIT09IDApXG4gICAgICA/IDI5XG4gICAgICA6IHRoaXMuI2RheXNJbk1vbnRoW21vbnRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGN1c3RvbSBkYXRlIHByb3BlcnRpZXMgdG8gdGhlIGV4aXN0aW5nIGRhdGVzIGRpc3BsYXllZCBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICAjYXBwbHlDdXN0b21EYXRlcyhcbiAgICBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSxcbiAgICBkYXRlUm93czogU2t5RGF0ZXBpY2tlckRhdGVbXVtdXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXRlcGlja2VyRGF0ZTtcbiAgICBsZXQgbmV3RGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG4gICAgbGV0IGRhdGVJbmRleDogbnVtYmVyO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY3VzdG9tRGF0ZXMgJiYgZGF0ZVJvd3MpIHtcbiAgICAgIGN1c3RvbURhdGVzLmZvckVhY2goKGN1c3RvbURhdGUpID0+IHtcbiAgICAgICAgZGF0ZUluZGV4ID0gLTE7XG4gICAgICAgIGRhdGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGlmIChkYXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBkYXRlSW5kZXggPSByb3cuZmluZEluZGV4KChkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBkLmRhdGUuZ2V0VGltZSgpID09PSBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgZGF0ZSA9IHJvd1tkYXRlSW5kZXhdO1xuICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBkYXRlIHdpdGggYSBuZXcgaW5zdGFuY2Ugc28gdGhlIGRpc3BsYXkgZ2V0cyB1cGRhdGVkLlxuICAgICAgICAgICAgICBuZXdEYXRlID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGRhdGUuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmRhdGUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhZGF0ZS5kaXNhYmxlZCB8fCAhIWN1c3RvbURhdGUuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAga2V5RGF0ZTogISFjdXN0b21EYXRlLmtleURhdGUgfHwgISFkYXRlLmtleURhdGUsXG4gICAgICAgICAgICAgICAga2V5RGF0ZVRleHQ6IGN1c3RvbURhdGUua2V5RGF0ZVRleHQgfHwgZGF0ZS5rZXlEYXRlVGV4dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogZGF0ZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGRhdGUuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIHVpZDogZGF0ZS51aWQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJvd1tkYXRlSW5kZXhdID0gbmV3RGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2RhdGVSYW5nZVJvd3NBcmVFcXVhbChcbiAgICByYW5nZUE/OiBTa3lEYXRlUmFuZ2UsXG4gICAgcmFuZ2VCPzogU2t5RGF0ZVJhbmdlXG4gICk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghcmFuZ2VBICYmICFyYW5nZUIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAocmFuZ2VBICYmIHJhbmdlQikge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy4jY29tcGFyZURheXMocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgPT09IDAgJiZcbiAgICAgICAgdGhpcy4jY29tcGFyZURheXMocmFuZ2VBLmVuZERhdGUsIHJhbmdlQi5lbmREYXRlKSA9PT0gMFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNnZXREYXRlUmFuZ2UoXG4gICAgcm93czogQXJyYXk8QXJyYXk8U2t5RGF0ZXBpY2tlckRhdGU+PlxuICApOiBTa3lEYXRlUmFuZ2UgfCB1bmRlZmluZWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHJvd3MgJiYgcm93cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydERhdGU6IHJvd3NbMF1bMF0uZGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogcm93c1tyb3dzLmxlbmd0aCAtIDFdW3Jvd3Nbcm93cy5sZW5ndGggLSAxXS5sZW5ndGggLSAxXS5kYXRlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlck1vZGUgPT09ICdkYXknXCIgY2xhc3M9XCJza3ktZGF5cGlja2VyLXdyYXBwZXJcIj5cbiAgPHRhYmxlXG4gICAgY2xhc3M9XCJza3ktZGF5cGlja2VyLXRhYmxlXCJcbiAgICByb2xlPVwiZ3JpZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy10aXRsZSdcIlxuICA+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGggY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1oZWFkZXItbGVmdFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLXByZXZpb3VzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLm1vdmVDYWxlbmRhcigkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNoZXZyb24tbW9kZXJuXCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tbGVmdFwiXG4gICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiIFthdHRyLmNvbHNwYW5dPVwiNVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtpZF09XCJkYXRlcGlja2VyLmRhdGVwaWNrZXJJZCArICctdGl0bGUnXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLXNtIHNreS1kYXRlcGlja2VyLWNhbGVuZGFyLXRpdGxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZU1vZGVDYWxlbmRhcigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRlcGlja2VyLmRhdGVwaWNrZXJNb2RlID09PSBkYXRlcGlja2VyLm1heE1vZGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LWJ0bi1kaXNhYmxlZCc6XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gZGF0ZXBpY2tlci5tYXhNb2RlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHRpdGxlIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1yaWdodFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLW5leHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIubW92ZUNhbGVuZGFyKCRldmVudCwgMSlcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNoZXZyb24tZGVmYXVsdFwiXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgID48L3NreS1pY29uPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1tb2Rlcm5cIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgICAgPHRyPlxuICAgICAgICA8dGhcbiAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGxhYmVsc1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXIgc2t5LWRhdGVwaWNrZXItd2Vla2RheXNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNtYWxsIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWwuZnVsbFwiPlxuICAgICAgICAgICAgPGI+e3sgbGFiZWwuYWJiciB9fTwvYj5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIDwhLS0gV2FpdCBpbmRpY2F0b3IgZm9yIGFzeW5jIGN1c3RvbSBkYXRlIHN0cmVhbSAtLT5cbiAgICAgIDxza3ktd2FpdCBbaXNXYWl0aW5nXT1cImlzV2FpdGluZ1wiPiA8L3NreS13YWl0PlxuICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cInJvd3NcIiBsZXQtcm93PVwiJGltcGxpY2l0XCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICAgICAgPHRyIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRlIG9mIHJvd1wiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNlbnRlclwiXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgW2lkXT1cImRhdGUudWlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2t5LWRheXBpY2tlci1jZWxsXG4gICAgICAgICAgICAgIFthY3RpdmVEYXRlSGFzQ2hhbmdlZF09XCJhY3RpdmVEYXRlSGFzQ2hhbmdlZFwiXG4gICAgICAgICAgICAgIFtkYXRlXT1cImRhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktZGF5cGlja2VyLWNlbGw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuIl19
|