vcomply-workflow-engine 3.6.7 → 3.6.9
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/lib/log-an-issue/log-an-issue.component.mjs +3 -3
- package/esm2022/lib/services/common.service.mjs +22 -8
- package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +18 -7
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +88 -80
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +36 -34
- package/esm2022/lib/workflow-services/organization-user.service.mjs +64 -0
- package/fesm2022/vcomply-workflow-engine.mjs +167 -78
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +5 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts +3 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/organization-user.service.d.ts +19 -0
- package/package.json +1 -1
|
@@ -11,13 +11,27 @@ export class CommonService {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
handleDocumentClick(datePickerObject) {
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const { event, popup, class: className } = datePickerObject || {};
|
|
15
|
+
const targetElement = event?.target;
|
|
16
|
+
if (!targetElement)
|
|
17
|
+
return false;
|
|
18
|
+
const dateInputElement = document.getElementById(className);
|
|
19
|
+
const datePickerCalendarContainer = document.querySelector(".dp-day-calendar-container");
|
|
20
|
+
const monthYearElement = document.querySelector(".dp-month-calendar-container");
|
|
21
|
+
const isNotMonthYearElement = !monthYearElement?.contains(targetElement);
|
|
22
|
+
const isOutsidePopup = !popup?.nativeElement?.contains(targetElement);
|
|
23
|
+
const isOutsidePopup2 = !popup?.nativeElement?.className.includes("dp-calendar-month");
|
|
24
|
+
const isNotDateInputElement = targetElement !== dateInputElement;
|
|
25
|
+
const isNotInsideCalendar = !datePickerCalendarContainer?.contains(targetElement);
|
|
26
|
+
const isNotCalendarMonth = !targetElement.className.includes("dp-calendar-month");
|
|
27
|
+
if (datePickerCalendarContainer &&
|
|
28
|
+
isNotMonthYearElement &&
|
|
29
|
+
isOutsidePopup &&
|
|
30
|
+
isNotDateInputElement &&
|
|
31
|
+
isNotInsideCalendar &&
|
|
32
|
+
isNotCalendarMonth &&
|
|
33
|
+
isOutsidePopup2) {
|
|
34
|
+
this.closeDatePickerIfOpen(targetElement, popup, datePickerObject?.overlay, datePickerObject?.component);
|
|
21
35
|
return true;
|
|
22
36
|
}
|
|
23
37
|
return false;
|
|
@@ -38,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
38
52
|
providedIn: 'root',
|
|
39
53
|
}]
|
|
40
54
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zZXJ2aWNlcy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUtqRSxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlJLHFCQUFnQixHQUFHO1lBQ2YsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxJQUFJO1lBQ1gsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFBO0tBNERKO0lBM0RHLG1CQUFtQixDQUFDLGdCQUFxQjtRQUN2QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ2xFLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxNQUFpQixDQUFDO1FBRS9DLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFakMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sMkJBQTJCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDeEQsNEJBQTRCLENBQzdCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQzdDLDhCQUE4QixDQUMvQixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkYsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLEtBQUssZ0JBQWdCLENBQUM7UUFDakUsTUFBTSxtQkFBbUIsR0FDdkIsQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsTUFBTSxrQkFBa0IsR0FDdEIsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXpELElBQ0UsMkJBQTJCO1lBQzNCLHFCQUFxQjtZQUNyQixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsZUFBZSxFQUNmO1lBQ0EsSUFBSSxDQUFDLHFCQUFxQixDQUN4QixhQUFhLEVBQ2IsS0FBSyxFQUNMLGdCQUFnQixFQUFFLE9BQU8sRUFDekIsZ0JBQWdCLEVBQUUsU0FBUyxDQUM1QixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVLLHFCQUFxQixDQUMzQixNQUFXLEVBQ1gsYUFBeUIsRUFDekIsaUJBQTBCLEVBQzFCLFVBQWU7UUFFZixJQUNFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9DLFVBQVUsRUFBRSxpQkFBaUIsRUFDN0I7WUFDQSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3pCLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7K0dBbEVVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcclxuICAgIGRhdGVQaWNrZXJPYmplY3QgPSB7XHJcbiAgICAgICAgZXZlbnQ6IG51bGwsXHJcbiAgICAgICAgY2xhc3M6ICcnLFxyXG4gICAgICAgIHBvcHVwOiBudWxsLFxyXG4gICAgICAgIGNvbXBvbmVudDogbnVsbCxcclxuICAgICAgICBvdmVybGF5OiBmYWxzZSxcclxuICAgIH1cclxuICAgIGhhbmRsZURvY3VtZW50Q2xpY2soZGF0ZVBpY2tlck9iamVjdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgIGNvbnN0IHsgZXZlbnQsIHBvcHVwLCBjbGFzczogY2xhc3NOYW1lIH0gPSBkYXRlUGlja2VyT2JqZWN0IHx8IHt9O1xyXG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50O1xyXG4gIFxyXG4gICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHJldHVybiBmYWxzZTtcclxuICBcclxuICAgICAgY29uc3QgZGF0ZUlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNsYXNzTmFtZSk7XHJcbiAgICAgIGNvbnN0IGRhdGVQaWNrZXJDYWxlbmRhckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgXCIuZHAtZGF5LWNhbGVuZGFyLWNvbnRhaW5lclwiXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IG1vbnRoWWVhckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgIFwiLmRwLW1vbnRoLWNhbGVuZGFyLWNvbnRhaW5lclwiXHJcbiAgICAgICk7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGlzTm90TW9udGhZZWFyRWxlbWVudCA9ICFtb250aFllYXJFbGVtZW50Py5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcclxuICAgICAgY29uc3QgaXNPdXRzaWRlUG9wdXAgPSAhcG9wdXA/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xyXG4gICAgICBjb25zdCBpc091dHNpZGVQb3B1cDIgPSAhcG9wdXA/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTmFtZS5pbmNsdWRlcyhcImRwLWNhbGVuZGFyLW1vbnRoXCIpO1xyXG4gIFxyXG4gICAgICBjb25zdCBpc05vdERhdGVJbnB1dEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50ICE9PSBkYXRlSW5wdXRFbGVtZW50O1xyXG4gICAgICBjb25zdCBpc05vdEluc2lkZUNhbGVuZGFyID1cclxuICAgICAgICAhZGF0ZVBpY2tlckNhbGVuZGFyQ29udGFpbmVyPy5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcclxuICAgICAgY29uc3QgaXNOb3RDYWxlbmRhck1vbnRoID1cclxuICAgICAgICAhdGFyZ2V0RWxlbWVudC5jbGFzc05hbWUuaW5jbHVkZXMoXCJkcC1jYWxlbmRhci1tb250aFwiKTtcclxuICBcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGRhdGVQaWNrZXJDYWxlbmRhckNvbnRhaW5lciAmJlxyXG4gICAgICAgIGlzTm90TW9udGhZZWFyRWxlbWVudCAmJlxyXG4gICAgICAgIGlzT3V0c2lkZVBvcHVwICYmXHJcbiAgICAgICAgaXNOb3REYXRlSW5wdXRFbGVtZW50ICYmXHJcbiAgICAgICAgaXNOb3RJbnNpZGVDYWxlbmRhciAmJlxyXG4gICAgICAgIGlzTm90Q2FsZW5kYXJNb250aCAmJlxyXG4gICAgICAgIGlzT3V0c2lkZVBvcHVwMlxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNsb3NlRGF0ZVBpY2tlcklmT3BlbihcclxuICAgICAgICAgIHRhcmdldEVsZW1lbnQsXHJcbiAgICAgICAgICBwb3B1cCxcclxuICAgICAgICAgIGRhdGVQaWNrZXJPYmplY3Q/Lm92ZXJsYXksXHJcbiAgICAgICAgICBkYXRlUGlja2VyT2JqZWN0Py5jb21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZURhdGVQaWNrZXJJZk9wZW4oXHJcbiAgICB0YXJnZXQ6IGFueSxcclxuICAgIG9wZW5lZEVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBkYXRlUGlja2VyT3ZlcmxheTogYm9vbGVhbixcclxuICAgIERhdGVQaWNrZXI6IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICAhb3BlbmVkRWxlbWVudD8ubmF0aXZlRWxlbWVudD8uY29udGFpbnModGFyZ2V0KSAmJlxyXG4gICAgICBEYXRlUGlja2VyPy5hcmVDYWxlbmRhcnNTaG93blxyXG4gICAgKSB7XHJcbiAgICAgIERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgICAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, ViewChild, Input, Output, EventEmitter, HostListener, ElementRef, } from '@angular/core';
|
|
2
2
|
import moment from 'moment/moment';
|
|
3
3
|
import { lifecycleText } from './lifecycl.constant';
|
|
4
|
+
import dayjs from 'dayjs';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../frequency.service";
|
|
6
7
|
import * as i2 from "@angular/forms";
|
|
@@ -48,6 +49,7 @@ export class FrequencyLifecycleComponent {
|
|
|
48
49
|
}
|
|
49
50
|
changeEndDateObj(date) {
|
|
50
51
|
this.endDateObject = new Date(moment(date).unix() * 1000);
|
|
52
|
+
this.selectedEndDate = moment(this.endDate).unix();
|
|
51
53
|
}
|
|
52
54
|
ngOnChanges(change) {
|
|
53
55
|
this.endBy = moment(this.endDate)
|
|
@@ -55,16 +57,16 @@ export class FrequencyLifecycleComponent {
|
|
|
55
57
|
.split('T')[0];
|
|
56
58
|
}
|
|
57
59
|
openDatePicker() {
|
|
58
|
-
const newDate =
|
|
59
|
-
this.startDatePicker?.api?.moveCalendarTo(newDate);
|
|
60
|
+
const newDate = dayjs(this.startDate);
|
|
60
61
|
this.startDatePicker?.api?.open();
|
|
62
|
+
this.startDatePicker?.api?.moveCalendarTo(newDate);
|
|
61
63
|
this.datePickerOverlay = true;
|
|
62
64
|
this.openedDatePicker = 'START_DATE';
|
|
63
65
|
}
|
|
64
66
|
openDatePicker1() {
|
|
65
67
|
const newDate = moment(this.endDate);
|
|
66
|
-
this.endDatePicker?.api?.moveCalendarTo(newDate);
|
|
67
68
|
this.endDatePicker?.api?.open();
|
|
69
|
+
this.endDatePicker?.api?.moveCalendarTo(this.endDate);
|
|
68
70
|
this.openedDatePicker = 'END_DATE';
|
|
69
71
|
this.datePickerOverlay = true;
|
|
70
72
|
}
|
|
@@ -136,18 +138,27 @@ export class FrequencyLifecycleComponent {
|
|
|
136
138
|
});
|
|
137
139
|
}
|
|
138
140
|
documentClick(event) {
|
|
141
|
+
const targetElement = event?.target;
|
|
139
142
|
const fromDateInputElement = document.getElementById(this.openedDatePicker.toLowerCase()) || null;
|
|
140
143
|
const datePickerCalendarContainer = document.getElementsByClassName('dp-day-calendar-container')[0];
|
|
144
|
+
const monthYearElement = document.querySelector('.dp-month-calendar-container');
|
|
145
|
+
const isNotMonthYearElement = !monthYearElement?.contains(targetElement);
|
|
141
146
|
const openedElement = this.openedDatePicker === 'START_DATE'
|
|
142
147
|
? this.startDatePickerPopup
|
|
143
148
|
: this.endDatePickerPopup;
|
|
144
|
-
const isOutsideFromDateInput = !openedElement?.nativeElement?.contains(
|
|
149
|
+
const isOutsideFromDateInput = !openedElement?.nativeElement?.contains(targetElement);
|
|
145
150
|
const isNotFromDateElement = event?.target !== fromDateInputElement;
|
|
146
|
-
const isNotInsideCalendar = !datePickerCalendarContainer?.contains(
|
|
151
|
+
const isNotInsideCalendar = !datePickerCalendarContainer?.contains(targetElement);
|
|
147
152
|
const selectedDatePicker = this.openedDatePicker === 'START_DATE'
|
|
148
153
|
? this.startDatePicker
|
|
149
154
|
: this.endDatePicker;
|
|
150
|
-
|
|
155
|
+
const isNotCalendarMonth = !targetElement.className.includes('dp-calendar-month');
|
|
156
|
+
if (isOutsideFromDateInput &&
|
|
157
|
+
isNotFromDateElement &&
|
|
158
|
+
isNotInsideCalendar &&
|
|
159
|
+
isNotCalendarMonth &&
|
|
160
|
+
isNotMonthYearElement &&
|
|
161
|
+
datePickerCalendarContainer) {
|
|
151
162
|
this.documentClickListener(event?.target, openedElement, selectedDatePicker);
|
|
152
163
|
}
|
|
153
164
|
}
|
|
@@ -196,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
196
207
|
type: HostListener,
|
|
197
208
|
args: ['document:click', ['$event']]
|
|
198
209
|
}] } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWxpZmVjeWNsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3ktbGlmZWN5Y2xlL2ZyZXF1ZW5jeS1saWZlY3ljbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWxpZmVjeWNsZS9mcmVxdWVuY3ktbGlmZWN5Y2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQVFwRCxNQUFNLE9BQU8sMkJBQTJCO0lBZ0N0QyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTVCdEQsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBTzNCLHFCQUFxQjtRQUNaLGNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRWhFLGVBQVUsR0FBRyxF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RSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7K0dBaE5VLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRvQkF5QkEsVUFBVSw4R0FFWixVQUFVLGtEQ2xEaEQscW9KQXlJQTs7NEZEbEhhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7dUdBS0wsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0EsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQVlqQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBR1Asb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdqRSxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXdJL0QsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBTaW5nbGVDYWxlbmRhclZhbHVlIH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbGlmZWN5Y2xlVGV4dCB9IGZyb20gJy4vbGlmZWN5Y2wuY29uc3RhbnQnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LWxpZmVjeWNsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS1saWZlY3ljbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1saWZlY3ljbGUuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeUxpZmVjeWNsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCdzdGFydERhdGVQaWNrZXInKSBzdGFydERhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVQaWNrZXInKSBlbmREYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuXHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBzaG93RGF0ZUVycm9yID0gZmFsc2U7XHJcbiAgc3RhcnREYXRlVW5peCA9IERhdGUubm93KCk7XHJcbiAgZW5kRGF0ZU9iamVjdDogYW55O1xyXG4gIHN0YXJ0RGF0ZUNvbmZpZzogYW55O1xyXG4gIGVuZERhdGVDb25maWc6IGFueTtcclxuICB0ZXh0RGV0YWlsczogYW55O1xyXG4gIHNlbGVjdGVkRW5kRGF0ZTogYW55O1xyXG5cclxuICAvLyBBbGwgaW5wdXQgdmFyaWFibGVcclxuICBASW5wdXQoKSBzdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIEBJbnB1dCgpIGVuZERhdGUgPSBtb21lbnQobmV3IERhdGUodGhpcy5zdGFydERhdGUpLmdldFRpbWUoKSArIDg2NDAwMDAwKTtcclxuICBASW5wdXQoKSBlbmRCeTogYW55O1xyXG4gIEBJbnB1dCgpIG9jY3VycmFuY2UgPSAxMDtcclxuICBASW5wdXQoKSBzZWxlY3RlZExpZmVjeWNsZVR5cGUgPSAyOyAvLyAwID0gRW5kIGJ5ICwgIEVuZCBBZnRlciwgMiA9IHBlcnBldHVhbFxyXG4gIEBJbnB1dCgpIGlkID0gMDtcclxuICBASW5wdXQoKSBtb2RlOiBhbnk7XHJcblxyXG4gIC8vICBsaWZlY3ljbGUgb3V0cHV0XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkT2NjdXJhbmNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJ0RGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHN0YXJ0RGF0ZVBpY2tlclBvcHVwITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdlbmREYXRlUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZW5kRGF0ZVBpY2tlclBvcHVwITogRWxlbWVudFJlZjtcclxuXHJcbiAgb3BlbmVkRGF0ZVBpY2tlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHREZXRhaWxzID0gbGlmZWN5Y2xlVGV4dFt0aGlzLm1vZGVdO1xyXG4gICAgdGhpcy5zdGFydERhdGVDb25maWcgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgLi4udGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmRhdGVDb25maWcsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZW5kRGF0ZUNvbmZpZyA9IE9iamVjdC5hc3NpZ24oeyAuLi50aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF0ZUNvbmZpZyB9KTtcclxuICAgIHRoaXMuc3RhcnREYXRlQ29uZmlnWydtaW4nXSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5mb3JtYXREYXRlKCk7XHJcbiAgICAvL3RoaXMuc3RhcnREYXRlVW5peCA9IHRoaXMuc3RhcnREYXRlLmdldERhdGUoKS50b1N0cmluZygpXHJcbiAgICB0aGlzLmVuZERhdGVDb25maWdbJ21pbiddID0gbW9tZW50KFxyXG4gICAgICBuZXcgRGF0ZShuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSkuZ2V0VGltZSgpICsgODY0MDAwMDApXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRFbmREYXRlKHRoaXMuc3RhcnREYXRlKTtcclxuICAgIHRoaXMuY2hhbmdlRW5kRGF0ZU9iaih0aGlzLmVuZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5kRGF0ZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCB0aW1lID0gbW9tZW50KHRoaXMuZW5kRGF0ZSkuZm9ybWF0KCdERC1NTS1ZWVlZIEhIOm1tOnNzJyk7XHJcbiAgICBjb25zdCBnZXRVbml4VGltZSA9IG1vbWVudChcclxuICAgICAgdGltZS5zcGxpdCgnICcpWzBdICsgJyAwMDowMDowMCcsXHJcbiAgICAgICdERC1NTS1ZWVlZIEhIOm1tOnNzJ1xyXG4gICAgKS51bml4KCk7XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZVVuaXggPSBtb21lbnQoZXZlbnQpLnVuaXgoKTtcclxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZVVuaXggPj0gZ2V0VW5peFRpbWUpIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbW9tZW50KG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKS5nZXRUaW1lKCkgKyA4NjQwMDAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQodGhpcy5lbmREYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZERhdGVPYmooZGF0ZTogYW55KSB7XHJcbiAgICB0aGlzLmVuZERhdGVPYmplY3QgPSBuZXcgRGF0ZShtb21lbnQoZGF0ZSkudW5peCgpICogMTAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMuZW5kQnkgPSBtb21lbnQodGhpcy5lbmREYXRlKVxyXG4gICAgICAuZm9ybWF0KCdERC1NTU1NLVlZWVlUSEg6bW06c3NaJylcclxuICAgICAgLnNwbGl0KCdUJylbMF07XHJcbiAgfVxyXG5cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIGNvbnN0IG5ld0RhdGUgPSBtb21lbnQodGhpcy5zdGFydERhdGUpO1xyXG4gICAgdGhpcy5zdGFydERhdGVQaWNrZXI/LmFwaT8ubW92ZUNhbGVuZGFyVG8obmV3RGF0ZSBhcyBTaW5nbGVDYWxlbmRhclZhbHVlKTtcclxuICAgIHRoaXMuc3RhcnREYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5vcGVuZWREYXRlUGlja2VyID0gJ1NUQVJUX0RBVEUnO1xyXG4gIH1cclxuICBvcGVuRGF0ZVBpY2tlcjEoKSB7XHJcbiAgICBjb25zdCBuZXdEYXRlID0gbW9tZW50KHRoaXMuZW5kRGF0ZSk7XHJcbiAgICB0aGlzLmVuZERhdGVQaWNrZXI/LmFwaT8ubW92ZUNhbGVuZGFyVG8obmV3RGF0ZSBhcyBTaW5nbGVDYWxlbmRhclZhbHVlKTtcclxuICAgIHRoaXMuZW5kRGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLm9wZW5lZERhdGVQaWNrZXIgPSAnRU5EX0RBVEUnO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIHRoaXMuc3RhcnREYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XHJcbiAgICB0aGlzLmVuZERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIGxpZmVjeWNsZSB0eXBlXHJcbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaWZlY3ljbGVUeXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2NjdXJhbmNlLmVtaXQoe1xyXG4gICAgICB0eXBlOiBldmVudCxcclxuICAgICAgZW5kc0J5OiB0aGlzLmVuZEJ5LFxyXG4gICAgICBlbmRhZnRlcjogdGhpcy5vY2N1cnJhbmNlLFxyXG4gICAgICBzdGFydEZyb206IHRoaXMuc3RhcnREYXRlVW5peCxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMaWZlY3ljbGVUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8gZW5kcyBhZnRlciBzZWxlY3Rpb25cclxuICBlbmRzQWZ0ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhTnVtYmVyLmlzTmFOKE51bWJlcih0aGlzLm9jY3VycmFuY2UpKSAmJlxyXG4gICAgICB0aGlzLm9jY3VycmFuY2UgIT09IDAgJiZcclxuICAgICAgTnVtYmVyKHRoaXMub2NjdXJyYW5jZSkgPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KHtcclxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkTGlmZWN5Y2xlVHlwZSxcclxuICAgICAgICBlbmRzQnk6IHRoaXMuZW5kQnksXHJcbiAgICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgICBzdGFydEZyb206IHRoaXMuc3RhcnREYXRlVW5peCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9jY3VycmFuY2UgPSAxMDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9jY3VycmFuY2U7XHJcbiAgfVxyXG5cclxuICAvLyBFbmQgYnkgY2hhbmdlXHJcbiAgZW5kQnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5lbmREYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5lbmREYXRlID0gZXZlbnQ/LmRhdGU/LiRkO1xyXG4gICAgdGhpcy5zZWxlY3RlZEVuZERhdGUgPSBtb21lbnQodGhpcy5lbmREYXRlKS51bml4KCk7XHJcbiAgICB0aGlzLmNoYW5nZUVuZERhdGVPYmoodGhpcy5lbmREYXRlKTtcclxuICAgIHRoaXMuZW5kQnkgPSBtb21lbnQoZXZlbnQ/LmRhdGU/LiRkKS5mb3JtYXQoJ0RELU1NTU0tWVlZWScpO1xyXG4gICAgY29uc3QgZGF0ZU9iamVjdCA9IHtcclxuICAgICAgdHlwZTogdGhpcy5zZWxlY3RlZExpZmVjeWNsZVR5cGUsXHJcbiAgICAgIGVuZHNCeTogdGhpcy5lbmRCeSxcclxuICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RGF0ZVVuaXgsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KGRhdGVPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RhcnQgZnJvbSBjaGFuZ2UgZXZlbnRcclxuICBzdGFydEZyb21DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zdGFydERhdGVVbml4ID0gbW9tZW50KGV2ZW50Py5kYXRlPy4kZCkudW5peCgpO1xyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlVW5peCA+PSB0aGlzLnNlbGVjdGVkRW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQodGhpcy5zdGFydERhdGVVbml4ICogMTAwMCArIDg2NDAwMDAwKTtcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRW5kRGF0ZU9iaih0aGlzLmVuZERhdGUpO1xyXG4gICAgICB0aGlzLmVuZEJ5ID0gbW9tZW50KHRoaXMuZW5kRGF0ZSlcclxuICAgICAgICAuZm9ybWF0KCdERC1NTU1NLVlZWVlUSEg6bW06c3NaJylcclxuICAgICAgICAuc3BsaXQoJ1QnKVswXTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kRGF0ZUNvbmZpZ1snbWluJ10gPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICBtb21lbnQobmV3IERhdGUobmV3IERhdGUoZXZlbnQ/LmRhdGU/LiRkKS5nZXRUaW1lKCkgKyA4NjQwMDAwMCkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KHtcclxuICAgICAgdHlwZTogdGhpcy5zZWxlY3RlZExpZmVjeWNsZVR5cGUsXHJcbiAgICAgIGVuZHNCeTogdGhpcy5lbmRCeSxcclxuICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RGF0ZVVuaXgsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZnJvbURhdGVJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wZW5lZERhdGVQaWNrZXIudG9Mb3dlckNhc2UoKSkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBkYXRlUGlja2VyQ2FsZW5kYXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAnZHAtZGF5LWNhbGVuZGFyLWNvbnRhaW5lcidcclxuICAgIClbMF07XHJcblxyXG4gICAgY29uc3Qgb3BlbmVkRWxlbWVudCA9XHJcbiAgICAgIHRoaXMub3BlbmVkRGF0ZVBpY2tlciA9PT0gJ1NUQVJUX0RBVEUnXHJcbiAgICAgICAgPyB0aGlzLnN0YXJ0RGF0ZVBpY2tlclBvcHVwXHJcbiAgICAgICAgOiB0aGlzLmVuZERhdGVQaWNrZXJQb3B1cDtcclxuICAgICAgICBjb25zdCBpc091dHNpZGVGcm9tRGF0ZUlucHV0ID0gIW9wZW5lZEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKFxyXG4gICAgICAgICAgZXZlbnQ/LnRhcmdldCBhcyBFbGVtZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBpc05vdEZyb21EYXRlRWxlbWVudCA9IGV2ZW50Py50YXJnZXQgIT09IGZyb21EYXRlSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGlzTm90SW5zaWRlQ2FsZW5kYXIgPSAhZGF0ZVBpY2tlckNhbGVuZGFyQ29udGFpbmVyPy5jb250YWlucyhcclxuICAgICAgICAgIGV2ZW50Py50YXJnZXQgYXMgRWxlbWVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlUGlja2VyID1cclxuICAgICAgICAgIHRoaXMub3BlbmVkRGF0ZVBpY2tlciA9PT0gJ1NUQVJUX0RBVEUnXHJcbiAgICAgICAgICAgID8gdGhpcy5zdGFydERhdGVQaWNrZXJcclxuICAgICAgICAgICAgOiB0aGlzLmVuZERhdGVQaWNrZXI7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKGlzT3V0c2lkZUZyb21EYXRlSW5wdXQgJiYgaXNOb3RGcm9tRGF0ZUVsZW1lbnQgJiYgaXNOb3RJbnNpZGVDYWxlbmRhcikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKFxyXG4gICAgICAgICAgICAgICAgZXZlbnQ/LnRhcmdldCxcclxuICAgICAgICAgICAgICAgIG9wZW5lZEVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVQaWNrZXJcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgfVxyXG5cclxuICBkb2N1bWVudENsaWNrTGlzdGVuZXIoXHJcbiAgICB0YXJnZXQ6IGFueSxcclxuICAgIG9wZW5lZEVsZW1lbnRzOiBFbGVtZW50UmVmLFxyXG4gICAgc2VsZWN0ZWREYXRlUGlja2VyOiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgIW9wZW5lZEVsZW1lbnRzPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyh0YXJnZXQpICYmXHJcbiAgICAgIHNlbGVjdGVkRGF0ZVBpY2tlcj8uYXJlQ2FsZW5kYXJzU2hvd25cclxuICAgICkge1xyXG4gICAgICBzZWxlY3RlZERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWxpZmVjeWNsZS1yZXNwb25zaWJpbGl0eSB2eC1tdC01XCI+XHJcbiAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cclxuICAgIHt7IHRleHREZXRhaWxzPy5oZWFkZXIgfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZyZXF1ZW5jeS1saWZlY3ljbGUtcmVzcG9uc2liaWxpdHktaW5uZXIgdngtcC0zIHZ4LXB0LTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgICBbY2xhc3Mud2l0aC1wb2xpY3ldPVwibW9kZSA9PT0gJ3BvbGljeScgfHwgbW9kZSA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGluZyB2eC1mcy0xMiB2eC1sYWJlbC10eHQgdngtbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgU3RhcnRzIEZyb21cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlmZWN5Y2xlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXAtMlwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj4mI3hlOTk2OzwvaT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cInN0YXJ0LWRhdGUtaW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpOyBkYXRlUGlja2VyT3ZlcmxheSA9IHRydWVcIlxyXG4gICAgICAgICAgICBpZD1cInN0YXJ0X2RhdGVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5FbmRzIEJ5PC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDBcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY2FsZW5kYXItaWNvbiB2eC1mcy0xNiB2eC1wYXJhZ3JhcGgtdHh0XCJcclxuICAgICAgICAgICAgICA+JiN4ZTkyZDs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImVuZERhdGVPYmplY3QgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVPYmplY3QgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIxKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJlbmRfZGF0ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5FbmRzIEFmdGVyPC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDFcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcclxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwib2NjdXJyYW5jZVwiXHJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJlbmRzQWZ0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxyXG4gICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTJcIj5PY2N1cnJlbmNlczwvc3Bhbj5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5PbmdvaW5nPC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDJcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMilcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yXCJcclxuICAgICAgICAgICAgPlRoZSByZXNwb25zaWJpbGl0eSB3aWxsIHBlcnBldHVhbGx5IGV4aXN0Ljwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gc3RhcnQgZGF0ZSBkYXRlIHBpY2tlciAtLT5cclxuPGRwLWRhdGUtcGlja2VyXHJcbiAgI3N0YXJ0RGF0ZVBpY2tlclxyXG4gIFtpZF09XCInc3RhcnQtZGF0ZS0nICsgaWRcIlxyXG4gIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgWyhuZ01vZGVsKV09XCJzdGFydERhdGVcIlxyXG4gIFtjb25maWddPVwic3RhcnREYXRlQ29uZmlnXCJcclxuICAob25TZWxlY3QpPVwiXHJcbiAgICBvcGVuRGF0ZVBpY2tlcigpO1xyXG4gICAgc3RhcnRGcm9tQ2hhbmdlKCRldmVudCk7XHJcbiAgICBzaG93RGF0ZUVycm9yID0gZmFsc2U7XHJcbiAgICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlXHJcbiAgXCJcclxuPjwvZHAtZGF0ZS1waWNrZXI+XHJcbjxkaXZcclxuICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxyXG4gIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiXHJcbiAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXHJcbj48L2Rpdj5cclxuXHJcbjwhLS0gZW5kIGRhdGUgZGF0ZSBwaWNrZXIgLS0+XHJcbjxkcC1kYXRlLXBpY2tlclxyXG4gICNlbmREYXRlUGlja2VyXHJcbiAgWyhuZ01vZGVsKV09XCJlbmREYXRlXCJcclxuICBbcGxhY2Vob2xkZXJdPVwiZW5kRGF0ZU9iamVjdCB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcclxuICBbaWRdPVwiJ2VuZC1ieS1pbnB1dC0nICsgaWRcIlxyXG4gIFtjb25maWddPVwiZW5kRGF0ZUNvbmZpZ1wiXHJcbiAgW21pbkRhdGVdPVwiZW5kRGF0ZUNvbmZpZ1snbWluJ11cIlxyXG4gIChvblNlbGVjdCk9XCJcclxuICAgIGVuZEJ5Q2hhbmdlKCRldmVudCk7IHNob3dEYXRlRXJyb3IgPSBmYWxzZTsgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZVxyXG4gIFwiXHJcbj48L2RwLWRhdGUtcGlja2VyPlxyXG48ZGl2XHJcbiAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcclxuICAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyKClcIlxyXG4gICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxyXG4+PC9kaXY+XHJcbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWxpZmVjeWNsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3ktbGlmZWN5Y2xlL2ZyZXF1ZW5jeS1saWZlY3ljbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWxpZmVjeWNsZS9mcmVxdWVuY3ktbGlmZWN5Y2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7Ozs7QUFPMUIsTUFBTSxPQUFPLDJCQUEyQjtJQWdDdEMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE1QnRELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQU8zQixxQkFBcUI7UUFDWixjQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxR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RSxLQUFLLEVBQUU7Z0JBR2pFLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUkvRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQsIFNpbmdsZUNhbGVuZGFyVmFsdWUgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBsaWZlY3ljbGVUZXh0IH0gZnJvbSAnLi9saWZlY3ljbC5jb25zdGFudCc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktbGlmZWN5Y2xlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnJlcXVlbmN5LWxpZmVjeWNsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LWxpZmVjeWNsZS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5TGlmZWN5Y2xlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJ0RGF0ZVBpY2tlcicpIHN0YXJ0RGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZVBpY2tlcicpIGVuZERhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG5cclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBzdGFydERhdGVVbml4ID0gRGF0ZS5ub3coKTtcclxuICBlbmREYXRlT2JqZWN0OiBhbnk7XHJcbiAgc3RhcnREYXRlQ29uZmlnOiBhbnk7XHJcbiAgZW5kRGF0ZUNvbmZpZzogYW55O1xyXG4gIHRleHREZXRhaWxzOiBhbnk7XHJcbiAgc2VsZWN0ZWRFbmREYXRlOiBhbnk7XHJcblxyXG4gIC8vIEFsbCBpbnB1dCB2YXJpYWJsZVxyXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgQElucHV0KCkgZW5kRGF0ZSA9IG1vbWVudChuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSkuZ2V0VGltZSgpICsgODY0MDAwMDApO1xyXG4gIEBJbnB1dCgpIGVuZEJ5OiBhbnk7XHJcbiAgQElucHV0KCkgb2NjdXJyYW5jZSA9IDEwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkTGlmZWN5Y2xlVHlwZSA9IDI7IC8vIDAgPSBFbmQgYnkgLCAgRW5kIEFmdGVyLCAyID0gcGVycGV0dWFsXHJcbiAgQElucHV0KCkgaWQgPSAwO1xyXG4gIEBJbnB1dCgpIG1vZGU6IGFueTtcclxuXHJcbiAgLy8gIGxpZmVjeWNsZSBvdXRwdXRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRPY2N1cmFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgc3RhcnREYXRlUGlja2VyUG9wdXAhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcclxuICBlbmREYXRlUGlja2VyUG9wdXAhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvcGVuZWREYXRlUGlja2VyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGV4dERldGFpbHMgPSBsaWZlY3ljbGVUZXh0W3RoaXMubW9kZV07XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZUNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAuLi50aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF0ZUNvbmZpZyxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lbmREYXRlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7IC4uLnRoaXMuZnJlcXVlbmN5U2VydmljZS5kYXRlQ29uZmlnIH0pO1xyXG4gICAgdGhpcy5zdGFydERhdGVDb25maWdbJ21pbiddID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZvcm1hdERhdGUoKTtcclxuICAgIC8vdGhpcy5zdGFydERhdGVVbml4ID0gdGhpcy5zdGFydERhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKClcclxuICAgIHRoaXMuZW5kRGF0ZUNvbmZpZ1snbWluJ10gPSBtb21lbnQoXHJcbiAgICAgIG5ldyBEYXRlKG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKS5nZXRUaW1lKCkgKyA4NjQwMDAwMClcclxuICAgICk7XHJcbiAgICB0aGlzLmdldEVuZERhdGUodGhpcy5zdGFydERhdGUpO1xyXG4gICAgdGhpcy5jaGFuZ2VFbmREYXRlT2JqKHRoaXMuZW5kRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFbmREYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHRpbWUgPSBtb21lbnQodGhpcy5lbmREYXRlKS5mb3JtYXQoJ0RELU1NLVlZWVkgSEg6bW06c3MnKTtcclxuICAgIGNvbnN0IGdldFVuaXhUaW1lID0gbW9tZW50KFxyXG4gICAgICB0aW1lLnNwbGl0KCcgJylbMF0gKyAnIDAwOjAwOjAwJyxcclxuICAgICAgJ0RELU1NLVlZWVkgSEg6bW06c3MnXHJcbiAgICApLnVuaXgoKTtcclxuICAgIHRoaXMuc3RhcnREYXRlVW5peCA9IG1vbWVudChldmVudCkudW5peCgpO1xyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlVW5peCA+PSBnZXRVbml4VGltZSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQobmV3IERhdGUodGhpcy5zdGFydERhdGUpLmdldFRpbWUoKSArIDg2NDAwMDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG1vbWVudCh0aGlzLmVuZERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kRGF0ZU9iaihkYXRlOiBhbnkpIHtcclxuICAgIHRoaXMuZW5kRGF0ZU9iamVjdCA9IG5ldyBEYXRlKG1vbWVudChkYXRlKS51bml4KCkgKiAxMDAwKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRFbmREYXRlID0gbW9tZW50KHRoaXMuZW5kRGF0ZSkudW5peCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB0aGlzLmVuZEJ5ID0gbW9tZW50KHRoaXMuZW5kRGF0ZSlcclxuICAgICAgLmZvcm1hdCgnREQtTU1NTS1ZWVlZVEhIOm1tOnNzWicpXHJcbiAgICAgIC5zcGxpdCgnVCcpWzBdO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICBjb25zdCBuZXdEYXRlID0gZGF5anModGhpcy5zdGFydERhdGUpO1xyXG4gICAgdGhpcy5zdGFydERhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gICAgdGhpcy5zdGFydERhdGVQaWNrZXI/LmFwaT8ubW92ZUNhbGVuZGFyVG8obmV3RGF0ZSk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMub3BlbmVkRGF0ZVBpY2tlciA9ICdTVEFSVF9EQVRFJztcclxuICB9XHJcbiAgb3BlbkRhdGVQaWNrZXIxKCkge1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudCh0aGlzLmVuZERhdGUpO1xyXG4gICAgdGhpcy5lbmREYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZW5kRGF0ZVBpY2tlcj8uYXBpPy5tb3ZlQ2FsZW5kYXJUbyh0aGlzLmVuZERhdGUgYXMgU2luZ2xlQ2FsZW5kYXJWYWx1ZSk7XHJcbiAgICB0aGlzLm9wZW5lZERhdGVQaWNrZXIgPSAnRU5EX0RBVEUnO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIHRoaXMuc3RhcnREYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XHJcbiAgICB0aGlzLmVuZERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIGxpZmVjeWNsZSB0eXBlXHJcbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaWZlY3ljbGVUeXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkT2NjdXJhbmNlLmVtaXQoe1xyXG4gICAgICB0eXBlOiBldmVudCxcclxuICAgICAgZW5kc0J5OiB0aGlzLmVuZEJ5LFxyXG4gICAgICBlbmRhZnRlcjogdGhpcy5vY2N1cnJhbmNlLFxyXG4gICAgICBzdGFydEZyb206IHRoaXMuc3RhcnREYXRlVW5peCxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMaWZlY3ljbGVUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8gZW5kcyBhZnRlciBzZWxlY3Rpb25cclxuICBlbmRzQWZ0ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhTnVtYmVyLmlzTmFOKE51bWJlcih0aGlzLm9jY3VycmFuY2UpKSAmJlxyXG4gICAgICB0aGlzLm9jY3VycmFuY2UgIT09IDAgJiZcclxuICAgICAgTnVtYmVyKHRoaXMub2NjdXJyYW5jZSkgPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KHtcclxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkTGlmZWN5Y2xlVHlwZSxcclxuICAgICAgICBlbmRzQnk6IHRoaXMuZW5kQnksXHJcbiAgICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgICBzdGFydEZyb206IHRoaXMuc3RhcnREYXRlVW5peCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9jY3VycmFuY2UgPSAxMDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9jY3VycmFuY2U7XHJcbiAgfVxyXG5cclxuICAvLyBFbmQgYnkgY2hhbmdlXHJcbiAgZW5kQnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5lbmREYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5lbmREYXRlID0gZXZlbnQ/LmRhdGU/LiRkO1xyXG4gICAgdGhpcy5zZWxlY3RlZEVuZERhdGUgPSBtb21lbnQodGhpcy5lbmREYXRlKS51bml4KCk7XHJcbiAgICB0aGlzLmNoYW5nZUVuZERhdGVPYmoodGhpcy5lbmREYXRlKTtcclxuICAgIHRoaXMuZW5kQnkgPSBtb21lbnQoZXZlbnQ/LmRhdGU/LiRkKS5mb3JtYXQoJ0RELU1NTU0tWVlZWScpO1xyXG4gICAgY29uc3QgZGF0ZU9iamVjdCA9IHtcclxuICAgICAgdHlwZTogdGhpcy5zZWxlY3RlZExpZmVjeWNsZVR5cGUsXHJcbiAgICAgIGVuZHNCeTogdGhpcy5lbmRCeSxcclxuICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RGF0ZVVuaXgsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KGRhdGVPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RhcnQgZnJvbSBjaGFuZ2UgZXZlbnRcclxuICBzdGFydEZyb21DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zdGFydERhdGVVbml4ID0gbW9tZW50KGV2ZW50Py5kYXRlPy4kZCkudW5peCgpO1xyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlVW5peCA+PSB0aGlzLnNlbGVjdGVkRW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBtb21lbnQodGhpcy5zdGFydERhdGVVbml4ICogMTAwMCArIDg2NDAwMDAwKTtcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRW5kRGF0ZU9iaih0aGlzLmVuZERhdGUpO1xyXG4gICAgICB0aGlzLmVuZEJ5ID0gbW9tZW50KHRoaXMuZW5kRGF0ZSlcclxuICAgICAgICAuZm9ybWF0KCdERC1NTU1NLVlZWVlUSEg6bW06c3NaJylcclxuICAgICAgICAuc3BsaXQoJ1QnKVswXTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kRGF0ZUNvbmZpZ1snbWluJ10gPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICBtb21lbnQobmV3IERhdGUobmV3IERhdGUoZXZlbnQ/LmRhdGU/LiRkKS5nZXRUaW1lKCkgKyA4NjQwMDAwMCkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9jY3VyYW5jZS5lbWl0KHtcclxuICAgICAgdHlwZTogdGhpcy5zZWxlY3RlZExpZmVjeWNsZVR5cGUsXHJcbiAgICAgIGVuZHNCeTogdGhpcy5lbmRCeSxcclxuICAgICAgZW5kYWZ0ZXI6IHRoaXMub2NjdXJyYW5jZSxcclxuICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RGF0ZVVuaXgsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50Py50YXJnZXQgYXMgRWxlbWVudDtcclxuICAgIGNvbnN0IGZyb21EYXRlSW5wdXRFbGVtZW50ID1cclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcGVuZWREYXRlUGlja2VyLnRvTG93ZXJDYXNlKCkpIHx8IG51bGw7XHJcblxyXG4gICAgY29uc3QgZGF0ZVBpY2tlckNhbGVuZGFyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgJ2RwLWRheS1jYWxlbmRhci1jb250YWluZXInXHJcbiAgICApWzBdO1xyXG4gICAgY29uc3QgbW9udGhZZWFyRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuZHAtbW9udGgtY2FsZW5kYXItY29udGFpbmVyJ1xyXG4gICAgKTtcclxuICAgIGNvbnN0IGlzTm90TW9udGhZZWFyRWxlbWVudCA9ICFtb250aFllYXJFbGVtZW50Py5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcclxuXHJcbiAgICBjb25zdCBvcGVuZWRFbGVtZW50ID1cclxuICAgICAgdGhpcy5vcGVuZWREYXRlUGlja2VyID09PSAnU1RBUlRfREFURSdcclxuICAgICAgICA/IHRoaXMuc3RhcnREYXRlUGlja2VyUG9wdXBcclxuICAgICAgICA6IHRoaXMuZW5kRGF0ZVBpY2tlclBvcHVwO1xyXG4gICAgY29uc3QgaXNPdXRzaWRlRnJvbURhdGVJbnB1dCA9XHJcbiAgICAgICFvcGVuZWRFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jb250YWlucyh0YXJnZXRFbGVtZW50KTtcclxuICAgIGNvbnN0IGlzTm90RnJvbURhdGVFbGVtZW50ID0gZXZlbnQ/LnRhcmdldCAhPT0gZnJvbURhdGVJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpc05vdEluc2lkZUNhbGVuZGFyID1cclxuICAgICAgIWRhdGVQaWNrZXJDYWxlbmRhckNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0RWxlbWVudCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZERhdGVQaWNrZXIgPVxyXG4gICAgICB0aGlzLm9wZW5lZERhdGVQaWNrZXIgPT09ICdTVEFSVF9EQVRFJ1xyXG4gICAgICAgID8gdGhpcy5zdGFydERhdGVQaWNrZXJcclxuICAgICAgICA6IHRoaXMuZW5kRGF0ZVBpY2tlcjtcclxuXHJcbiAgICBjb25zdCBpc05vdENhbGVuZGFyTW9udGggPVxyXG4gICAgICAhdGFyZ2V0RWxlbWVudC5jbGFzc05hbWUuaW5jbHVkZXMoJ2RwLWNhbGVuZGFyLW1vbnRoJyk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBpc091dHNpZGVGcm9tRGF0ZUlucHV0ICYmXHJcbiAgICAgIGlzTm90RnJvbURhdGVFbGVtZW50ICYmXHJcbiAgICAgIGlzTm90SW5zaWRlQ2FsZW5kYXIgJiZcclxuICAgICAgaXNOb3RDYWxlbmRhck1vbnRoICYmXHJcbiAgICAgIGlzTm90TW9udGhZZWFyRWxlbWVudCAmJlxyXG4gICAgICBkYXRlUGlja2VyQ2FsZW5kYXJDb250YWluZXJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcihcclxuICAgICAgICBldmVudD8udGFyZ2V0LFxyXG4gICAgICAgIG9wZW5lZEVsZW1lbnQsXHJcbiAgICAgICAgc2VsZWN0ZWREYXRlUGlja2VyXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb2N1bWVudENsaWNrTGlzdGVuZXIoXHJcbiAgICB0YXJnZXQ6IGFueSxcclxuICAgIG9wZW5lZEVsZW1lbnRzOiBFbGVtZW50UmVmLFxyXG4gICAgc2VsZWN0ZWREYXRlUGlja2VyOiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgIW9wZW5lZEVsZW1lbnRzPy5uYXRpdmVFbGVtZW50Py5jb250YWlucyh0YXJnZXQpICYmXHJcbiAgICAgIHNlbGVjdGVkRGF0ZVBpY2tlcj8uYXJlQ2FsZW5kYXJzU2hvd25cclxuICAgICkge1xyXG4gICAgICBzZWxlY3RlZERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWxpZmVjeWNsZS1yZXNwb25zaWJpbGl0eSB2eC1tdC01XCI+XHJcbiAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cclxuICAgIHt7IHRleHREZXRhaWxzPy5oZWFkZXIgfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZyZXF1ZW5jeS1saWZlY3ljbGUtcmVzcG9uc2liaWxpdHktaW5uZXIgdngtcC0zIHZ4LXB0LTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgICBbY2xhc3Mud2l0aC1wb2xpY3ldPVwibW9kZSA9PT0gJ3BvbGljeScgfHwgbW9kZSA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGluZyB2eC1mcy0xMiB2eC1sYWJlbC10eHQgdngtbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgU3RhcnRzIEZyb21cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlmZWN5Y2xlLWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXAtMlwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTNcIj4mI3hlOTk2OzwvaT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cInN0YXJ0LWRhdGUtaW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpOyBkYXRlUGlja2VyT3ZlcmxheSA9IHRydWVcIlxyXG4gICAgICAgICAgICBpZD1cInN0YXJ0X2RhdGVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5FbmRzIEJ5PC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDBcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY2FsZW5kYXItaWNvbiB2eC1mcy0xNiB2eC1wYXJhZ3JhcGgtdHh0XCJcclxuICAgICAgICAgICAgICA+JiN4ZTkyZDs8L2lcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImVuZERhdGVPYmplY3QgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVPYmplY3QgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIxKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJlbmRfZGF0ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5FbmRzIEFmdGVyPC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDFcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkXCJcclxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwib2NjdXJyYW5jZVwiXHJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJlbmRzQWZ0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxyXG4gICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTJcIj5PY2N1cnJlbmNlczwvc3Bhbj5cclxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJtb2RlID09PSAncmVzcG9uc2liaWxpdHknXCJcclxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktbGlmZWN5Y2xlLXJlc3BvbnNpYmlsaXR5LWl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbm5lciB2eC1kLWJsb2NrXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTIgdngtbGFiZWwtdHh0IHZ4LW1iLTFcIj5PbmdvaW5nPC9kaXY+XHJcbiAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRMaWZlY3ljbGVUeXBlID09IDJcIlxyXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0eXBlU2VsZWN0ZWQoMilcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yXCJcclxuICAgICAgICAgICAgPlRoZSByZXNwb25zaWJpbGl0eSB3aWxsIHBlcnBldHVhbGx5IGV4aXN0Ljwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gc3RhcnQgZGF0ZSBkYXRlIHBpY2tlciAtLT5cclxuPGRwLWRhdGUtcGlja2VyXHJcbiAgI3N0YXJ0RGF0ZVBpY2tlclxyXG4gIFtpZF09XCInc3RhcnQtZGF0ZS0nICsgaWRcIlxyXG4gIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgWyhuZ01vZGVsKV09XCJzdGFydERhdGVcIlxyXG4gIFtjb25maWddPVwic3RhcnREYXRlQ29uZmlnXCJcclxuICAob25TZWxlY3QpPVwiXHJcbiAgICBvcGVuRGF0ZVBpY2tlcigpO1xyXG4gICAgc3RhcnRGcm9tQ2hhbmdlKCRldmVudCk7XHJcbiAgICBzaG93RGF0ZUVycm9yID0gZmFsc2U7XHJcbiAgICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlXHJcbiAgXCJcclxuPjwvZHAtZGF0ZS1waWNrZXI+XHJcbjxkaXZcclxuICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxyXG4gIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiXHJcbiAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXHJcbj48L2Rpdj5cclxuXHJcbjwhLS0gZW5kIGRhdGUgZGF0ZSBwaWNrZXIgLS0+XHJcbjxkcC1kYXRlLXBpY2tlclxyXG4gICNlbmREYXRlUGlja2VyXHJcbiAgWyhuZ01vZGVsKV09XCJlbmREYXRlXCJcclxuICBbcGxhY2Vob2xkZXJdPVwiZW5kRGF0ZU9iamVjdCB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcclxuICBbaWRdPVwiJ2VuZC1ieS1pbnB1dC0nICsgaWRcIlxyXG4gIFtjb25maWddPVwiZW5kRGF0ZUNvbmZpZ1wiXHJcbiAgW21pbkRhdGVdPVwiZW5kRGF0ZUNvbmZpZ1snbWluJ11cIlxyXG4gIChvblNlbGVjdCk9XCJcclxuICAgIGVuZEJ5Q2hhbmdlKCRldmVudCk7IHNob3dEYXRlRXJyb3IgPSBmYWxzZTsgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZVxyXG4gIFwiXHJcbj48L2RwLWRhdGUtcGlja2VyPlxyXG48ZGl2XHJcbiAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcclxuICAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyKClcIlxyXG4gICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxyXG4+PC9kaXY+XHJcbiJdfQ==
|