@rangertechnologies/ngnxt 2.1.73 → 2.1.75
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/components/custom-button/custom-button.component.mjs +4 -4
- package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +20 -18
- package/esm2022/lib/components/custom-date/custom-date.component.mjs +4 -4
- package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +4 -4
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +105 -97
- package/esm2022/lib/components/custom-image/custom-image.component.mjs +8 -7
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +8 -7
- package/esm2022/lib/components/custom-label/custom-label.component.mjs +4 -4
- package/esm2022/lib/components/custom-model/custom-model.component.mjs +4 -4
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +7 -6
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +6 -5
- package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +8 -7
- package/esm2022/lib/components/custom-time/custom-time.component.mjs +4 -4
- package/esm2022/lib/components/dependent-table/dependent-table.component.mjs +4 -4
- package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +5 -5
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +8 -7
- package/esm2022/lib/components/file-view/file-view.component.mjs +5 -5
- package/esm2022/lib/components/loader/loader.component.mjs +5 -5
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +8 -6
- package/esm2022/lib/components/search-box/search-box.component.mjs +6 -5
- package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +9 -8
- package/esm2022/lib/directives/componenthost/componenthost.directive.mjs +4 -4
- package/esm2022/lib/i18n.component.mjs +4 -4
- package/esm2022/lib/i18n.module.mjs +5 -5
- package/esm2022/lib/i18n.pipe.mjs +4 -4
- package/esm2022/lib/i18n.service.mjs +4 -4
- package/esm2022/lib/nxt-app.component.mjs +4 -4
- package/esm2022/lib/nxt-app.module.mjs +5 -5
- package/esm2022/lib/nxt-app.service.mjs +4 -4
- package/esm2022/lib/pages/booklet/booklet.component.mjs +71 -66
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +85 -93
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +323 -259
- package/esm2022/lib/pages/summary-page/summary-page.component.mjs +13 -12
- package/esm2022/lib/pipe/get-value.pipe.mjs +4 -4
- package/esm2022/lib/sample.mjs +3157 -327
- package/esm2022/lib/services/change.service.mjs +4 -4
- package/esm2022/lib/services/data.service.mjs +4 -4
- package/esm2022/lib/services/salesforce.service.mjs +4 -4
- package/esm2022/lib/services/shared.service.mjs +4 -4
- package/esm2022/lib/services/storage.service.mjs +10 -8
- package/esm2022/lib/wrapper.mjs +96 -92
- package/fesm2022/rangertechnologies-ngnxt.mjs +4004 -1086
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/wrapper.d.ts +93 -90
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.75.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.73.tgz +0 -0
|
@@ -15,10 +15,10 @@ export class CustomButtonComponent {
|
|
|
15
15
|
handleClick(event) {
|
|
16
16
|
this.buttonValue.emit(event);
|
|
17
17
|
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomButtonComponent, selector: "app-custom-button", inputs: { height: "height", width: "width", textColor: "textColor", buttonText: "buttonText", value: "value", backgroundColor: "backgroundColor" }, outputs: { buttonValue: "buttonValue" }, ngImport: i0, template: "\n<!-- 08NOV23 - button html added-->\n<button \n[style.height]=\"height\" \n[style.color]=\"textColor\"\n[style.background-color]=\"backgroundColor\"\n[style.width]=\"width\" class=\"custom-button\"\n[value] =\"value\"\n(click)=\"handleClick(value)\"\n >{{ buttonText }}</button>\n", styles: [".custom-button{border:none;cursor:pointer;border-radius:5px;font-size:16px;font-size:14px}.custom-button:hover{background-color:#0056b3}\n"] });
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomButtonComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
23
|
args: [{ selector: 'app-custom-button', template: "\n<!-- 08NOV23 - button html added-->\n<button \n[style.height]=\"height\" \n[style.color]=\"textColor\"\n[style.background-color]=\"backgroundColor\"\n[style.width]=\"width\" class=\"custom-button\"\n[value] =\"value\"\n(click)=\"handleClick(value)\"\n >{{ buttonText }}</button>\n", styles: [".custom-button{border:none;cursor:pointer;border-radius:5px;font-size:16px;font-size:14px}.custom-button:hover{background-color:#0056b3}\n"] }]
|
|
24
24
|
}], ctorParameters: function () { return []; }, propDecorators: { height: [{
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
36
36
|
}], buttonValue: [{
|
|
37
37
|
type: Output
|
|
38
38
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20tYnV0dG9uL2N1c3RvbS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWJ1dHRvbi9jdXN0b20tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTy9FLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMscUNBQXFDO0lBQzVCLE1BQU0sQ0FBUztJQUNmLEtBQUssQ0FBUztJQUNkLFNBQVMsR0FBVSxNQUFNLENBQUE7SUFDekIsVUFBVSxDQUFTO0lBQ25CLEtBQUssQ0FBUTtJQUNiLGVBQWUsR0FBVyxTQUFTLENBQUMsQ0FBQywyQkFBMkI7SUFDL0QsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDaEQsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBaEJVLHFCQUFxQjsyRkFBckIscUJBQXFCLHNQQ1BsQyw0UkFVQTs7MkZESGEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjswRUFNcEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1idXR0b24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICAwOE5PVjIzIC0gYnV0dG9uIGlucHV0IGFuZCBvdXRwdHNcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nID0nI2ZmZidcbiAgQElucHV0KCkgYnV0dG9uVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZTpzdHJpbmc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyMwMDdiZmYnOyAvLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3JcbiAgQE91dHB1dCgpIGJ1dHRvblZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IFxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQpe1xuICAgIHRoaXMuYnV0dG9uVmFsdWUuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIlxuPCEtLSAwOE5PVjIzIC0gYnV0dG9uIGh0bWwgYWRkZWQtLT5cbjxidXR0b24gXG5bc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiIFxuW3N0eWxlLmNvbG9yXT1cInRleHRDb2xvclwiXG5bc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JcIlxuW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgY2xhc3M9XCJjdXN0b20tYnV0dG9uXCJcblt2YWx1ZV0gPVwidmFsdWVcIlxuKGNsaWNrKT1cImhhbmRsZUNsaWNrKHZhbHVlKVwiXG4gPnt7IGJ1dHRvblRleHQgfX08L2J1dHRvbj5cbiJdfQ==
|
|
@@ -59,10 +59,11 @@ export class CustomCalendarComponent {
|
|
|
59
59
|
// this.dateSelected.emit(this.calendar);
|
|
60
60
|
//this.eventSelected.emit(this.allEvents);
|
|
61
61
|
}
|
|
62
|
+
// RS 09DEC24 Changed keys
|
|
62
63
|
processQuestion() {
|
|
63
|
-
this.entries = JSON.parse(this.question['
|
|
64
|
-
this.qbRefrenceBook = JSON.parse(this.question['
|
|
65
|
-
let title = this.qbRefrenceBook?.questionbook?.
|
|
64
|
+
this.entries = JSON.parse(this.question['fieldsMeta']);
|
|
65
|
+
this.qbRefrenceBook = JSON.parse(this.question['qbReferenceQuestions']);
|
|
66
|
+
let title = this.qbRefrenceBook?.questionbook?.title;
|
|
66
67
|
this.modalTitle = title;
|
|
67
68
|
this.referenceQuestions = [];
|
|
68
69
|
if (this.entries.length > 0) {
|
|
@@ -138,18 +139,19 @@ export class CustomCalendarComponent {
|
|
|
138
139
|
this.referenceQuestions.forEach(ques => {
|
|
139
140
|
// VD 09-09-24 get the selected date
|
|
140
141
|
// need to add in the document
|
|
141
|
-
|
|
142
|
+
// RS 09DEC24 Changed keys
|
|
143
|
+
if (ques.referenceField == 'selectedDate') {
|
|
142
144
|
ques.input = day.date.toISOString();
|
|
143
145
|
console.log(ques.input);
|
|
144
146
|
}
|
|
145
147
|
// VD 09-09-24 get the query refrence field data to pass the queryParam for api
|
|
146
|
-
if (ques.
|
|
147
|
-
let subText = JSON.parse(ques.
|
|
148
|
+
if (ques.subText) {
|
|
149
|
+
let subText = JSON.parse(ques.subText);
|
|
148
150
|
if (subText.queryField && subText.queryValueReference) {
|
|
149
151
|
let currentQues = ques;
|
|
150
152
|
let queryReferences = subText.queryValueReference.split(',');
|
|
151
153
|
queryReferences.forEach(refField => {
|
|
152
|
-
let refQues = this.referenceQuestions.find(q => q.
|
|
154
|
+
let refQues = this.referenceQuestions.find(q => q.referenceField === refField);
|
|
153
155
|
if (refQues) {
|
|
154
156
|
referenceData.push(refQues);
|
|
155
157
|
}
|
|
@@ -182,8 +184,8 @@ export class CustomCalendarComponent {
|
|
|
182
184
|
this.calendarQuestion = this.referenceQuestions.map(q => ({ ...q, input: '' }));
|
|
183
185
|
this.referenceQuestions.forEach(ques => {
|
|
184
186
|
// clear the input
|
|
185
|
-
if (ques.
|
|
186
|
-
if (ques.
|
|
187
|
+
if (ques.referenceField != 'selectedDate') {
|
|
188
|
+
if (ques.type == 'Dropdown') {
|
|
187
189
|
delete ques.input;
|
|
188
190
|
delete ques.selectedValue;
|
|
189
191
|
// VD 06Sep24 calendar changes
|
|
@@ -252,14 +254,14 @@ export class CustomCalendarComponent {
|
|
|
252
254
|
addEvent(day, entryQues) {
|
|
253
255
|
// Transform new entries into the desired format
|
|
254
256
|
const newEntries = entryQues.reduce((acc, q) => {
|
|
255
|
-
acc[q.
|
|
257
|
+
acc[q.id] = { ...q };
|
|
256
258
|
return acc;
|
|
257
259
|
}, {});
|
|
258
260
|
// Find an existing event for the given date
|
|
259
261
|
const existingEvent = day.events?.find(event => event.date === day.date);
|
|
260
262
|
if (existingEvent) {
|
|
261
263
|
// Merge new entries into the existing event's entries array
|
|
262
|
-
// Check if the entries array already contains an object with the same
|
|
264
|
+
// Check if the entries array already contains an object with the same id
|
|
263
265
|
const existingEntries = existingEvent.entries.map(entry => ({ ...entry }));
|
|
264
266
|
// Append new entries to the existing entries
|
|
265
267
|
existingEntries.push(newEntries);
|
|
@@ -293,7 +295,7 @@ export class CustomCalendarComponent {
|
|
|
293
295
|
const entryIndex = event.entries.findIndex(entryGroup => entryGroup === this.editingEntryGroup);
|
|
294
296
|
if (entryIndex > -1) {
|
|
295
297
|
event.entries[entryIndex] = this.calendarQuestion.reduce((acc, q) => {
|
|
296
|
-
acc[q.
|
|
298
|
+
acc[q.id] = { ...q };
|
|
297
299
|
return acc;
|
|
298
300
|
}, {});
|
|
299
301
|
}
|
|
@@ -319,7 +321,7 @@ export class CustomCalendarComponent {
|
|
|
319
321
|
//this funtion need to be used
|
|
320
322
|
// handleQuestionEvent(ques){
|
|
321
323
|
// // Update the questions array with the new question
|
|
322
|
-
// const index = this.calendarQuestion.findIndex(q => q.
|
|
324
|
+
// const index = this.calendarQuestion.findIndex(q => q.id === ques.id);
|
|
323
325
|
// if (index > -1) {
|
|
324
326
|
// // If question already exists, update it
|
|
325
327
|
// this.calendarQuestion[index] = ques;
|
|
@@ -340,12 +342,12 @@ export class CustomCalendarComponent {
|
|
|
340
342
|
let updatedText = questionText?.replace(/<[^>]*>/g, '');
|
|
341
343
|
return updatedText;
|
|
342
344
|
}
|
|
343
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
344
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
345
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomCalendarComponent, deps: [{ token: i1.ChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
346
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomCalendarComponent, selector: "app-custom-calendar", inputs: { allEvents: "allEvents", question: "question", nxtId: "nxtId" }, outputs: { eventSelected: "eventSelected", dateSelected: "dateSelected", openModal: "openModal", closeModal: "closeModal" }, ngImport: i0, template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n <div class=\"calendar-header\">\n <button (click)=\"previousMonth()\"><< Previous >></button>\n <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n <button (click)=\"nextMonth()\"><< Next >></button>\n </div>\n <div class=\"calendar-grid\">\n <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n <div\n class=\"calendar-day\"\n *ngFor=\"let day of calendarDays\"\n [class.not-current-month]=\"!day.isCurrentMonth\"\n [class.past]=\"day.isPast\"\n [class.today]=\"day.isToday\"\n [class.future]=\"day.isFuture\"\n [class.selected]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n <div class=\"day-number\">{{ day.date.getDate() }}\n <span *ngIf=\"day?.events?.length > 0\" class=\"entry-indicator\" [class.select]=\"day?.isSelected\"></span>\n </div>\n <!-- <div *ngFor=\"let event of day.events\" >\n <div *ngFor=\"let entryGroup of event.entries\" class=\"event\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\">\n <div *ngIf=\"entryGroup[key].type == 'Time'\">\n {{ entryGroup[key].input?.value | date: 'shortTime' }}\n </div>\n <div *ngIf=\"entryGroup[key].type != 'Time'\">\n {{ entryGroup[key].input }}\n </div>\n </div>\n </div>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"appoinappointment\">\n <div class=\"appointments-container\">\n <h4>Add Appointment</h4>\n <button *ngIf=\"selectedDay\" (click)=\"addAppointment()\">Add</button>\n </div>\n <!--VD 06Sep24 calendar updates--> \n <!-- RS 09DEC24 Changed keys--> \n <div *ngIf=\"showAppoinmentSection && selectedDay?.events?.length > 0\" class=\"appointments-container\">\n <h4>Appointments</h4>\n <div *ngFor=\"let event of selectedDay?.events\">\n <div class=\"event\" *ngFor=\"let entryGroup of event.entries\">\n <div class=\"event-info\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\" class=\"entry-row\">\n <div *ngIf=\"entryGroup[key].questionText\" class=\"entry-text\">\n {{removeCharacters(entryGroup[key].questionText)}}:\n </div>\n <div class=\"entry-value\">\n <!-- VD 09Sep24- date type and link type updates -->\n <span *ngIf=\"entryGroup[key].type != 'Time' && entryGroup[key].type != 'Link'&& entryGroup[key].type != 'Date'\">{{ entryGroup[key].input }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Time'\">{{ entryGroup[key].input | date: 'shortTime' }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Date'\">{{ entryGroup[key].input | date: 'mediumDate' }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Link'\">\n <a [href]=\"'//'+ entryGroup[key].input\" target=\"_blank\">{{removeCharacters(entryGroup[key].questionText)}}</a>\n </span>\n </div>\n </div>\n <div class=\"event-actions\">\n <button (click)=\"editEvent(event,entryGroup)\">Edit</button>\n <button (click)=\"deleteEvent(event.id,entryGroup)\">Delete</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<!-- <app-custom-model\n [modalTitle]=\"modalTitle\"\n [isModalOpen]=\"isModalOpen\"\n [modalSize]=\"modalSize\"\n [saveButtonValue]=\"saveButtonValue\"\n [modalFooter]=\"modalFooter\"\n (saveButtonEmit)=\"onSave()\"\n (cancelButtonEmit)=\"onCancel()\"\n>\n<lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\" (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n<ng-template dynamicComponentHost ></ng-template>\n</app-custom-model> -->", styles: [".calendar-container{flex:1}.appoinappointment{flex:1;margin-left:10px}.calendar-header{display:flex;justify-content:space-between;align-items:center}.selected{box-shadow:0 0 5px #00000080;background-color:green!important;color:#fff!important}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-of-week{text-align:center;font-weight:700;padding:5px;background-color:#f0f0f0;border:1px solid #ccc}.calendar-day{border:1px solid #ccc;padding:5px;display:flex;flex-direction:column;align-items:flex-start;background-color:#fff;position:relative;cursor:pointer}.calendar-day.not-current-month{background-color:#f0f0f0}.calendar-day.past{color:#aaa}.calendar-day.today{background-color:#e6ffe6;font-weight:700}.calendar-day.future{color:#000}.day-number{font-size:1.2em;margin-bottom:5px}.event{background-color:#d1e7dd;border-left:4px solid #0f5132;margin:5px 0;padding:2px 5px;border-radius:3px}.event-title{font-weight:700}.event-time{font-size:.8em}input[type=text],input[type=time]{width:100%;margin-top:5px;box-sizing:border-box}button{margin-top:5px;align-self:stretch;margin-left:0!important}.calendar-header button{margin-top:5px;align-self:stretch;margin-left:0!important;border:none;background:none}.align-calendar{display:flex;width:100%}.form-group.content-box{padding-bottom:0!important}.entry-indicator{position:absolute;top:5px;right:5px;width:10px;height:10px;background-color:#0f5132;border-radius:50%}.select{background-color:#fff}.entry-row{display:flex;align-items:center;margin-bottom:5px}.entry-text{font-weight:700;margin-right:10px;white-space:nowrap}.entry-value{flex:1;word-break:break-word}.entry-value a{color:#4caf50}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
|
345
347
|
}
|
|
346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomCalendarComponent, decorators: [{
|
|
347
349
|
type: Component,
|
|
348
|
-
args: [{ selector: 'app-custom-calendar', template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n <div class=\"calendar-header\">\n <button (click)=\"previousMonth()\"><< Previous >></button>\n <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n <button (click)=\"nextMonth()\"><< Next >></button>\n </div>\n <div class=\"calendar-grid\">\n <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n
|
|
350
|
+
args: [{ selector: 'app-custom-calendar', template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n <div class=\"calendar-header\">\n <button (click)=\"previousMonth()\"><< Previous >></button>\n <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n <button (click)=\"nextMonth()\"><< Next >></button>\n </div>\n <div class=\"calendar-grid\">\n <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n <div\n class=\"calendar-day\"\n *ngFor=\"let day of calendarDays\"\n [class.not-current-month]=\"!day.isCurrentMonth\"\n [class.past]=\"day.isPast\"\n [class.today]=\"day.isToday\"\n [class.future]=\"day.isFuture\"\n [class.selected]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n <div class=\"day-number\">{{ day.date.getDate() }}\n <span *ngIf=\"day?.events?.length > 0\" class=\"entry-indicator\" [class.select]=\"day?.isSelected\"></span>\n </div>\n <!-- <div *ngFor=\"let event of day.events\" >\n <div *ngFor=\"let entryGroup of event.entries\" class=\"event\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\">\n <div *ngIf=\"entryGroup[key].type == 'Time'\">\n {{ entryGroup[key].input?.value | date: 'shortTime' }}\n </div>\n <div *ngIf=\"entryGroup[key].type != 'Time'\">\n {{ entryGroup[key].input }}\n </div>\n </div>\n </div>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"appoinappointment\">\n <div class=\"appointments-container\">\n <h4>Add Appointment</h4>\n <button *ngIf=\"selectedDay\" (click)=\"addAppointment()\">Add</button>\n </div>\n <!--VD 06Sep24 calendar updates--> \n <!-- RS 09DEC24 Changed keys--> \n <div *ngIf=\"showAppoinmentSection && selectedDay?.events?.length > 0\" class=\"appointments-container\">\n <h4>Appointments</h4>\n <div *ngFor=\"let event of selectedDay?.events\">\n <div class=\"event\" *ngFor=\"let entryGroup of event.entries\">\n <div class=\"event-info\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\" class=\"entry-row\">\n <div *ngIf=\"entryGroup[key].questionText\" class=\"entry-text\">\n {{removeCharacters(entryGroup[key].questionText)}}:\n </div>\n <div class=\"entry-value\">\n <!-- VD 09Sep24- date type and link type updates -->\n <span *ngIf=\"entryGroup[key].type != 'Time' && entryGroup[key].type != 'Link'&& entryGroup[key].type != 'Date'\">{{ entryGroup[key].input }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Time'\">{{ entryGroup[key].input | date: 'shortTime' }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Date'\">{{ entryGroup[key].input | date: 'mediumDate' }}</span>\n <span *ngIf=\"entryGroup[key].type == 'Link'\">\n <a [href]=\"'//'+ entryGroup[key].input\" target=\"_blank\">{{removeCharacters(entryGroup[key].questionText)}}</a>\n </span>\n </div>\n </div>\n <div class=\"event-actions\">\n <button (click)=\"editEvent(event,entryGroup)\">Edit</button>\n <button (click)=\"deleteEvent(event.id,entryGroup)\">Delete</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<!-- <app-custom-model\n [modalTitle]=\"modalTitle\"\n [isModalOpen]=\"isModalOpen\"\n [modalSize]=\"modalSize\"\n [saveButtonValue]=\"saveButtonValue\"\n [modalFooter]=\"modalFooter\"\n (saveButtonEmit)=\"onSave()\"\n (cancelButtonEmit)=\"onCancel()\"\n>\n<lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\" (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n<ng-template dynamicComponentHost ></ng-template>\n</app-custom-model> -->", styles: [".calendar-container{flex:1}.appoinappointment{flex:1;margin-left:10px}.calendar-header{display:flex;justify-content:space-between;align-items:center}.selected{box-shadow:0 0 5px #00000080;background-color:green!important;color:#fff!important}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-of-week{text-align:center;font-weight:700;padding:5px;background-color:#f0f0f0;border:1px solid #ccc}.calendar-day{border:1px solid #ccc;padding:5px;display:flex;flex-direction:column;align-items:flex-start;background-color:#fff;position:relative;cursor:pointer}.calendar-day.not-current-month{background-color:#f0f0f0}.calendar-day.past{color:#aaa}.calendar-day.today{background-color:#e6ffe6;font-weight:700}.calendar-day.future{color:#000}.day-number{font-size:1.2em;margin-bottom:5px}.event{background-color:#d1e7dd;border-left:4px solid #0f5132;margin:5px 0;padding:2px 5px;border-radius:3px}.event-title{font-weight:700}.event-time{font-size:.8em}input[type=text],input[type=time]{width:100%;margin-top:5px;box-sizing:border-box}button{margin-top:5px;align-self:stretch;margin-left:0!important}.calendar-header button{margin-top:5px;align-self:stretch;margin-left:0!important;border:none;background:none}.align-calendar{display:flex;width:100%}.form-group.content-box{padding-bottom:0!important}.entry-indicator{position:absolute;top:5px;right:5px;width:10px;height:10px;background-color:#0f5132;border-radius:50%}.select{background-color:#fff}.entry-row{display:flex;align-items:center;margin-bottom:5px}.entry-text{font-weight:700;margin-right:10px;white-space:nowrap}.entry-value{flex:1;word-break:break-word}.entry-value a{color:#4caf50}\n"] }]
|
|
349
351
|
}], ctorParameters: function () { return [{ type: i1.ChangeService }]; }, propDecorators: { eventSelected: [{
|
|
350
352
|
type: Output
|
|
351
353
|
}], dateSelected: [{
|
|
@@ -361,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
361
363
|
}], nxtId: [{
|
|
362
364
|
type: Input
|
|
363
365
|
}] } });
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW9CckgsTUFBTSxPQUFPLHVCQUF1QjtJQXFDYjtJQW5DWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFTO0lBQ3ZCLDJGQUEyRjtJQUMzRixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2Isa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsQ0FBSztJQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVkLFdBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxF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YUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuLy9pbXBvcnQgeyBRdWVzdGlvbmJvb2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudCc7XG4vL2ltcG9ydCB7IENvbXBvbmVudGhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbXBvbmVudGhvc3QvY29tcG9uZW50aG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGRhdGU6IERhdGU7XG4gIGV2ZW50czogYW55W107XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1Bhc3Q6IGJvb2xlYW47XG4gIGlzVG9kYXk6IGJvb2xlYW47XG4gIGlzRnV0dXJlOiBib29sZWFuO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGV2ZW50U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9wZW5Nb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhbGxFdmVudHM6IGFueVtdID0gW107IFxuICBASW5wdXQoKSBxdWVzdGlvbjogUXVlc3Rpb25cbiAgQElucHV0KCkgbnh0SWQ6IHN0cmluZztcbiAgLy9AVmlld0NoaWxkKENvbXBvbmVudGhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNIb3N0OiBDb21wb25lbnRob3N0RGlyZWN0aXZlO1xuICBlbnRyaWVzID0gW107XG4gIHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICBxYlJlZnJlbmNlQm9vazphbnk7XG4gIGNhbGVuZGFyUXVlc3Rpb24gPSBbXTtcbiAgY2FsZW5kYXIgPSB7fTtcblxuICBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNhbGVuZGFyRGF5czogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcblxuICBuZXdFdmVudFRpdGxlOiBzdHJpbmcgPSAnJztcbiAgbmV3RXZlbnRUaW1lOiBzdHJpbmcgPSAnJztcbiAgbmV3RGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBuZXdMaW5rOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG5cbiAgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgbW9kYWxUaXRsZSA9ICdDdXN0b20gTW9kYWwnO1xuICBtb2RhbFNpemUgPSAnbGFyZ2UnO1xuICBzYXZlQnV0dG9uVmFsdWUgPSAnU2F2ZSc7XG4gIG1vZGFsRm9vdGVyID0gdHJ1ZTtcbiAgZWRpdGluZ0V2ZW50SWQ6IG51bWJlcjtcbiAgZWRpdGluZ0VudHJ5R3JvdXA6IGFueTtcbiAgc2hvd0FwcG9pbm1lbnRTZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgc3Vic2NyaXB0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgfVxuICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY3VzdG9tQ2hhbmdlJC5zdWJzY3JpYmUoXG4gICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSA9PSAnY2FsZW5kYXItbW9kYWwtc2F2ZScpIHtcbiAgICAgICAgICAgIHRoaXMub25TYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlID09ICdkYXRhQmluZCcpIHtcbiAgICAgICAgICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgICAgICAgICAgdGhpcy5hbGxFdmVudHMgPSB0aGlzLnF1ZXN0aW9uLmlucHV0O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgIC8vIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgLy90aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cblxuXG4gIHByb2Nlc3NRdWVzdGlvbigpe1xuICAgIHRoaXMuZW50cmllcyA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnRmllbGRzX01ldGFfX2MnXSk7XG4gICAgdGhpcy5xYlJlZnJlbmNlQm9vayA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKTtcbiAgICBsZXQgdGl0bGUgPSB0aGlzLnFiUmVmcmVuY2VCb29rPy5xdWVzdGlvbmJvb2s/LlRpdGxlX19jO1xuICAgIHRoaXMubW9kYWxUaXRsZSA9IHRpdGxlO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgaWYodGhpcy5lbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2VudHJpZXMtLT4nKTtcbiAgICBjb25zb2xlLmxvZygncXVlc3Rpb24tLT4nKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJpZXMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgfVxuXG4gICAvLyBzdW5kYXkgY29tbWVudFxuICAvLyBvcGVuUXVlc3Rpb25Cb29rTW9kYWwoKSB7XG4gIC8vICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0hvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgLy8gICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gIC8vICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoUXVlc3Rpb25ib29rQ29tcG9uZW50KTtcbiAgLy8gICBjb21wb25lbnRSZWYuaW5zdGFuY2UucWJJdGVtID0gdGhpcy5xYlJlZnJlbmNlQm9vaztcbiAgLy8gICBjb21wb25lbnRSZWYuaW5zdGFuY2UucXVlc3Rpb25zID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnM7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhhbmRsZVF1ZXN0aW9uLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gdGhpcy5oYW5kbGVRdWVzdGlvbkV2ZW50KGV2ZW50KSk7XG4gIC8vIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG5cbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZW5kT2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7XG5cbiAgICBjb25zdCBzdGFydERheU9mV2VlayA9IHN0YXJ0T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBlbmREYXlPZldlZWsgPSBlbmRPZk1vbnRoLmdldERheSgpO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRPZk1vbnRoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXlPZldlZWspO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZE9mTW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZShlbmREYXRlLmdldERhdGUoKSArICg2IC0gZW5kRGF5T2ZXZWVrKSk7XG5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgIFxuICAgICB0aGlzLmNhbGVuZGFyRGF5cyA9IFtdO1xuICAgICAgZm9yIChsZXQgZCA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7IGQgPD0gZW5kRGF0ZTsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgMSkpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGQpO1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF5cy5wdXNoKHtcbiAgICAgICAgICBkYXRlOiBkYXRlLFxuICAgICAgICAgIGV2ZW50czogW10sXG4gICAgICAgICAgaXNDdXJyZW50TW9udGg6IGQuZ2V0TW9udGgoKSA9PT0gbW9udGgsXG4gICAgICAgICAgaXNQYXN0OiBkYXRlIDwgdG9kYXksXG4gICAgICAgICAgaXNUb2RheTogZGF0ZS5nZXRUaW1lKCkgPT09IHRvZGF5LmdldFRpbWUoKSxcbiAgICAgICAgICBpc0Z1dHVyZTogZGF0ZSA+IHRvZGF5LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIC8vIFBvcHVsYXRlIGNhbGVuZGFyIHdpdGggZXZlbnRzIGZyb20gYWxsRXZlbnRzIGFycmF5XG4gICAgdGhpcy5jYWxlbmRhckRheXMuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgZGF5LmV2ZW50cyA9IHRoaXMuYWxsRXZlbnRzPy5maWx0ZXIoZXZlbnQgPT4gZXZlbnQ/LmRhdGU/LnRvRGF0ZVN0cmluZygpID09PSBkYXkuZGF0ZS50b0RhdGVTdHJpbmcoKSk7XG4gICAgfSk7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIGxldCBjYWwgPSB7fVxuICAgIGNhbFsneWVhciddID0geWVhcjtcbiAgICBjYWxbJ21vbnRoJ10gPSBtb250aCArIDE7XG4gICAgdGhpcy5jYWxlbmRhciA9IGNhbDtcbiAgfVxuXG5cbiAgc2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXkpIHtcbiAgICBjb25zb2xlLmxvZyhkYXkpO1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICB0aGlzLnNob3dBcHBvaW5tZW50U2VjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZERheSA9IGRheTtcbiAgIC8vIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KGRheT8uZXZlbnRzKTtcbiAgICBjb25zdCBwcmV2aW91c2x5U2VsZWN0ZWREYXkgPSB0aGlzLmNhbGVuZGFyRGF5cy5maW5kKGQgPT4gZC5pc1NlbGVjdGVkKTtcbiAgICBpZiAocHJldmlvdXNseVNlbGVjdGVkRGF5KSB7XG4gICAgICBwcmV2aW91c2x5U2VsZWN0ZWREYXkuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBTZWxlY3QgdGhlIGNsaWNrZWQgZGF5XG4gICAgZGF5LmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgLy8gVkQgMDlTZXAyNC0gc2V0dXAgdGhlIHF1ZXJ5IHBhcmFtIGRhdGEgZm9yIGFwaSBjYWxsXG4gICAgbGV0IHJlZmVyZW5jZURhdGEgPSBbXTtcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgLy8gVkQgMDktMDktMjQgZ2V0IHRoZSBzZWxlY3RlZCBkYXRlXG4gICAgICAvLyBuZWVkIHRvIGFkZCBpbiB0aGUgZG9jdW1lbnRcbiAgICAgICBpZihxdWVzLlJlZmVyZW5jZV9GaWVsZF9fYyA9PSAnc2VsZWN0ZWREYXRlJyl7XG4gICAgICAgICAgcXVlcy5pbnB1dCA9IGRheS5kYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgY29uc29sZS5sb2cocXVlcy5pbnB1dCk7XG4gICAgICAgfVxuICAgICAgIC8vIFZEIDA5LTA5LTI0IGdldCB0aGUgcXVlcnkgcmVmcmVuY2UgIGZpZWxkIGRhdGEgdG8gcGFzcyB0aGUgcXVlcnlQYXJhbSAgZm9yIGFwaVxuICAgICAgIGlmKHF1ZXMuU3ViX1RleHRfX2Mpe1xuICAgICAgICBsZXQgc3ViVGV4dCA9IEpTT04ucGFyc2UocXVlcy5TdWJfVGV4dF9fYyk7XG4gICAgICAgIGlmIChzdWJUZXh0LnF1ZXJ5RmllbGQgJiYgc3ViVGV4dC5xdWVyeVZhbHVlUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFF1ZXMgPSBxdWVzO1xuICAgICAgICAgICAgbGV0IHF1ZXJ5UmVmZXJlbmNlcyA9IHN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpO1xuICAgIFxuICAgICAgICAgICAgcXVlcnlSZWZlcmVuY2VzLmZvckVhY2gocmVmRmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZWZRdWVzID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZmluZChxID0+IHEuUmVmZXJlbmNlX0ZpZWxkX19jID09PSByZWZGaWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZlF1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0YS5wdXNoKHJlZlF1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQWRkIHRoZSByZWZlcmVuY2VEYXRhIGFycmF5IHRvIHRoZSBjdXJyZW50IHF1ZXN0aW9uXG4gICAgICAgICAgICBjdXJyZW50UXVlcy5yZWZlcmVuY2VRdWVyeURhdGEgPSByZWZlcmVuY2VEYXRhO1xuICAgICAgICB9XG4gICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcmV2aW91c01vbnRoKCkge1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICB0aGlzLnNob3dBcHBvaW5tZW50U2VjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpOyAvLyBFbnN1cmUgdGhlIGRhdGUgb2JqZWN0IGlzIHVwZGF0ZWRcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG4gIGFkZEFwcG9pbnRtZW50KCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5tYXAocSA9PiAoeyAuLi5xLCBpbnB1dDogJycgfSkpO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBjbGVhciB0aGUgaW5wdXRcbiAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jICE9ICdzZWxlY3RlZERhdGUnKXtcbiAgICAgICAgaWYocXVlcy5UeXBlX19jID09ICdEcm9wZG93bicpe1xuICAgICAgICAgIGRlbGV0ZSBxdWVzLmlucHV0O1xuICAgICAgICAgIGRlbGV0ZSBxdWVzLnNlbGVjdGVkVmFsdWU7XG4gICAgICAgICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHF1ZXMuaW5wdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gICAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IG51bGw7XG4gICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnM7XG4gICAgdGhpcy5vcGVuQm9va01vZGVsKCk7XG4gICAgLy8gc3VuZGF5IGNvbW1lbnRcbiAgICAvL3RoaXMub3BlblF1ZXN0aW9uQm9va01vZGFsKCk7XG4gIH1cblxuXG4gIG9wZW5Cb29rTW9kZWwoKXtcbiAgICB0aGlzLm9wZW5Nb2RhbC5lbWl0KHtcbiAgICAgIHFiUmVmcmVuY2VCb29rOiB0aGlzLnFiUmVmcmVuY2VCb29rLFxuICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zOiB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyxcbiAgICAgIG1vZGFsVGl0bGUgOiB0aGlzLm1vZGFsVGl0bGUsXG4gICAgICBtb2RhbFNpemUgOiB0aGlzLm1vZGFsU2l6ZSxcbiAgICAgIHNhdmVCdXR0b25WYWx1ZSA6IHRoaXMuc2F2ZUJ1dHRvblZhbHVlLFxuICAgICAgbW9kYWxGb290ZXIgOiB0aGlzLm1vZGFsRm9vdGVyLFxuXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZUNhbGVuZGFyTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KHRydWUpO1xuICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG5cbmVkaXRFdmVudChldmVudDogYW55LCBlbnRyeUdyb3VwOiBhbnkpIHtcbiAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gT2JqZWN0LnZhbHVlcyhlbnRyeUdyb3VwKTtcbiAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uID0gWy4uLnRoaXMucmVmZXJlbmNlUXVlc3Rpb25zXTsgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZW50cmllcyB0byBlZGl0XG4gIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBldmVudC5pZDtcbiAgdGhpcy5lZGl0aW5nRW50cnlHcm91cCA9IGVudHJ5R3JvdXA7IC8vIFN0b3JlIHRoZSBlbnRyeSBncm91cCBiZWluZyBlZGl0ZWRcbiAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7IC8vIFJlZ2VuZXJhdGUgdGhlIGNhbGVuZGFyIHRvIHJlZmxlY3QgY2hhbmdlc1xuICB0aGlzLm9wZW5Cb29rTW9kZWwoKTtcbiAgLy8gc3VkYXkgY29tbWVudFxuIC8vIHRoaXMub3BlblF1ZXN0aW9uQm9va01vZGFsKCk7XG5cbn1cblxuXG5kZWxldGVFdmVudCggZXZlbnRJZDogbnVtYmVyLCBlbnRyeUdyb3VwOiBhbnkpIHtcbiAgbGV0IGV2ZW50ID0gdGhpcy5hbGxFdmVudHM/LmZpbmQoZSA9PiBlPy5pZCA9PT0gZXZlbnRJZCk7XG4gIGlmIChldmVudCkge1xuICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhlIGVudHJ5R3JvdXAgdG8gZGVsZXRlXG4gICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5pbmRleE9mKGVudHJ5R3JvdXApO1xuICAgICAgaWYgKGVudHJ5SW5kZXggPiAtMSkge1xuICAgICAgICAgIGV2ZW50LmVudHJpZXMuc3BsaWNlKGVudHJ5SW5kZXgsIDEpOyAvLyBSZW1vdmUgdGhlIHNwZWNpZmljIGVudHJ5XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCBoYXMgbm8gbW9yZSBlbnRyaWVzLCByZW1vdmUgdGhlIGV2ZW50IGVudGlyZWx5XG4gICAgICBpZiAoZXZlbnQuZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBldmVudEluZGV4ID0gdGhpcy5hbGxFdmVudHM/LmluZGV4T2YoZXZlbnQpO1xuICAgICAgICAgIGlmIChldmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5hbGxFdmVudHM/LnNwbGljZShldmVudEluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBlbnRpcmUgZXZlbnRcbiAgICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiZGVsZXRlXCI7XG4gICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCB0aGUgY2hhbmdlc1xufVxuXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGFkZEV2ZW50KGRheTogQ2FsZW5kYXJEYXksIGVudHJ5UXVlcykge1xuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxuICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyeVF1ZXMucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgYWNjW3EuSWRdID0geyAuLi5xIH07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgLy8gRmluZCBhbiBleGlzdGluZyBldmVudCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50ID0gZGF5LmV2ZW50cz8uZmluZChldmVudCA9PiBldmVudC5kYXRlID09PSBkYXkuZGF0ZSk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudCkge1xuICAgICAgICAvLyBNZXJnZSBuZXcgZW50cmllcyBpbnRvIHRoZSBleGlzdGluZyBldmVudCdzIGVudHJpZXMgYXJyYXlcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVudHJpZXMgYXJyYXkgYWxyZWFkeSBjb250YWlucyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBJRFxuICAgICAgICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBleGlzdGluZ0V2ZW50LmVudHJpZXMubWFwKGVudHJ5ID0+ICh7IC4uLmVudHJ5IH0pKTtcblxuICAgICAgICAvLyBBcHBlbmQgbmV3IGVudHJpZXMgdG8gdGhlIGV4aXN0aW5nIGVudHJpZXNcbiAgICAgICAgZXhpc3RpbmdFbnRyaWVzLnB1c2gobmV3RW50cmllcyk7XG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZXZlbnQgaWYgaXQgZG9lc24ndCBleGlzdCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5nZW5lcmF0ZUlkKCksXG4gICAgICAgICAgICBkYXRlOiBkYXkuZGF0ZSxcbiAgICAgICAgICAgIGVudHJpZXM6IFtuZXdFbnRyaWVzXSAvLyBXcmFwIHRoZSBuZXcgZW50cmllcyBpbiBhbiBhcnJheVxuICAgICAgICB9O1xuICAgICAgICBkYXkuZXZlbnRzID0gZGF5Py5ldmVudHMgfHwgW11cbiAgICAgICAgZGF5LmV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICAgICAgdGhpcy5hbGxFdmVudHM/LnB1c2gobmV3RXZlbnQpO1xuICAgICAgICAvL3RoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgICAgICAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgICAgICBldmVudERhdGFbJ2FjdGlvbiddID0gXCJhZGRcIjtcbiAgICAgICAgZXZlbnREYXRhWydkYXRhJ10gPSBuZXdFdmVudDtcbiAgICAgICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgICBjb25zb2xlLmxvZygnYWxsRXZlbnRzJywgdGhpcy5hbGxFdmVudHMpO1xufVxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuIG9uU2F2ZSgpIHtcbiAgICBpZiAodGhpcy5lZGl0aW5nRXZlbnRJZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuYWxsRXZlbnRzPy5maW5kKGUgPT4gZT8uaWQgPT09IHRoaXMuZWRpdGluZ0V2ZW50SWQpO1xuICAgICAgICBpZiAoZXZlbnQgJiYgdGhpcy5lZGl0aW5nRW50cnlHcm91cCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBlbnRyeSBncm91cCB3aXRoaW4gdGhlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5maW5kSW5kZXgoZW50cnlHcm91cCA9PiBlbnRyeUdyb3VwID09PSB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKTtcbiAgICAgICAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5lbnRyaWVzW2VudHJ5SW5kZXhdID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjY1txLklkXSA9IHsgLi4ucSB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gICAgICBsZXQgZXZlbnREYXRhID0ge307XG4gICAgICBldmVudERhdGFbJ2FjdGlvbiddID0gXCJlZGl0XCI7XG4gICAgICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICAgICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZXZlbnREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgICAgdGhpcy5hZGRFdmVudCh0aGlzLnNlbGVjdGVkRGF5LCB0aGlzLmNhbGVuZGFyUXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG59XG5cbiAgLy8gb25DYW5jZWwoKSB7XG4gIC8vICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcpO1xuICAvLyAgIHRoaXMuY2xvc2VDYWxlbmRhck1vZGFsKCk7XG4gIC8vIH1cblxuXG4gIC8vdGhpcyBmdW50aW9uIG5lZWQgdG8gYmUgdXNlZFxuICAvLyBoYW5kbGVRdWVzdGlvbkV2ZW50KHF1ZXMpe1xuICAvLyAgICAgLy8gVXBkYXRlIHRoZSBxdWVzdGlvbnMgYXJyYXkgd2l0aCB0aGUgbmV3IHF1ZXN0aW9uXG4gIC8vICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2FsZW5kYXJRdWVzdGlvbi5maW5kSW5kZXgocSA9PiBxLklkID09PSBxdWVzLklkKTtcbiAgLy8gICAgIGlmIChpbmRleCA+IC0xKSB7XG4gIC8vICAgICAgIC8vIElmIHF1ZXN0aW9uIGFscmVhZHkgZXhpc3RzLCB1cGRhdGUgaXRcbiAgLy8gICAgICAgdGhpcy5jYWxlbmRhclF1ZXN0aW9uW2luZGV4XSA9IHF1ZXM7XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAvLyBJZiBxdWVzdGlvbiBkb2Vzbid0IGV4aXN0LCBhZGQgaXQgdG8gdGhlIGFycmF5XG4gIC8vICAgICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbi5wdXNoKHF1ZXMpO1xuICAvLyAgICAgfVxuICAvLyAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhclF1ZXN0aW9uKTtcbiAgLy8gICB9XG5cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgZ2VuZXJhdGVJZCgpIHtcbiAgICByZXR1cm4gJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICB9XG5cbiAgZ2V0RW50cnlLZXlzKGVudHJ5R3JvdXA6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZW50cnlHcm91cCk7XG59XG5cbnJlbW92ZUNoYXJhY3RlcnMocXVlc3Rpb25UZXh0OnN0cmluZyl7XG4gIGxldCB1cGRhdGVkVGV4dCA9IHF1ZXN0aW9uVGV4dD8ucmVwbGFjZSgvPFtePl0qPi9nLCAnJyk7XG4gIHJldHVybiB1cGRhdGVkVGV4dDtcbn1cblxufVxuIiwiPGRpdiBjbGFzcz1cImFsaWduLWNhbGVuZGFyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInByZXZpb3VzTW9udGgoKVwiPjw8IFByZXZpb3VzID4+PC9idXR0b24+XG4gICAgICAgICAgPGgzPnt7IGN1cnJlbnREYXRlIHwgZGF0ZTogJ01NTU0geXl5eScgfX08L2gzPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5leHRNb250aCgpXCI+PDwgTmV4dCA+PjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZ3JpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktb2Ytd2Vla1wiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mV2Vla1wiPnt7IGRheSB9fTwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWRheVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY2FsZW5kYXJEYXlzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLm5vdC1jdXJyZW50LW1vbnRoXT1cIiFkYXkuaXNDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucGFzdF09XCJkYXkuaXNQYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS5pc1RvZGF5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZ1dHVyZV09XCJkYXkuaXNGdXR1cmVcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LmlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbnVtYmVyXCI+e3sgZGF5LmRhdGUuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXk/LmV2ZW50cz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZW50cnktaW5kaWNhdG9yXCIgW2NsYXNzLnNlbGVjdF09XCJkYXk/LmlzU2VsZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGRheS5ldmVudHNcIiA+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeUdyb3VwIG9mIGV2ZW50LmVudHJpZXNcIiBjbGFzcz1cImV2ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgPT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQ/LnZhbHVlIHwgZGF0ZTogJ3Nob3J0VGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFwcG9pbmFwcG9pbnRtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxoND5BZGQgQXBwb2ludG1lbnQ8L2g0PlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZERheVwiIChjbGljayk9XCJhZGRBcHBvaW50bWVudCgpXCI+QWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIHVwZGF0ZXMtLT4gXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FwcG9pbm1lbnRTZWN0aW9uICYmIHNlbGVjdGVkRGF5Py5ldmVudHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QXBwb2ludG1lbnRzPC9oND5cbiAgICAgICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgZXZlbnQgb2Ygc2VsZWN0ZWREYXk/LmV2ZW50c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRcIiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiIGNsYXNzPVwiZW50cnktcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2NcIiBjbGFzcz1cImVudHJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2MpfX06XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDlTZXAyNC0gZGF0ZSB0eXBlIGFuZCBsaW5rIHR5cGUgdXBkYXRlcyAgICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jICE9ICdUaW1lJyAmJiBlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnTGluaycmJiBlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyAhPSAnRGF0ZSdcIj57eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0uVHlwZV9fYyA9PSAnVGltZSdcIj57eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfCBkYXRlOiAnc2hvcnRUaW1lJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdEYXRlJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdtZWRpdW1EYXRlJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdMaW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCInLy8nKyBlbnRyeUdyb3VwW2tleV0uaW5wdXRcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2MpfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlZGl0RXZlbnQoZXZlbnQsZW50cnlHcm91cClcIj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVFdmVudChldmVudC5pZCxlbnRyeUdyb3VwKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSA8YXBwLWN1c3RvbS1tb2RlbFxuICBbbW9kYWxUaXRsZV09XCJtb2RhbFRpdGxlXCJcbiAgW2lzTW9kYWxPcGVuXT1cImlzTW9kYWxPcGVuXCJcbiAgW21vZGFsU2l6ZV09XCJtb2RhbFNpemVcIlxuICBbc2F2ZUJ1dHRvblZhbHVlXT1cInNhdmVCdXR0b25WYWx1ZVwiXG4gIFttb2RhbEZvb3Rlcl09XCJtb2RhbEZvb3RlclwiXG4gIChzYXZlQnV0dG9uRW1pdCk9XCJvblNhdmUoKVwiXG4gIChjYW5jZWxCdXR0b25FbWl0KT1cIm9uQ2FuY2VsKClcIlxuPlxuPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlJlZnJlbmNlQm9va1wiIFtxdWVzdGlvbnNdPVwicmVmZXJlbmNlUXVlc3Rpb25zXCIgKGhhbmRsZVF1ZXN0aW9uKT1cImhhbmRsZVF1ZXN0aW9uRXZlbnQoJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbjxuZy10ZW1wbGF0ZSBkeW5hbWljQ29tcG9uZW50SG9zdCA+PC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWN1c3RvbS1tb2RlbD4gLS0+XG5cblxuICBcbiAgXG4gICJdfQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7OztBQW1CckgsTUFBTSxPQUFPLHVCQUF1QjtJQWdDYjtJQS9CWCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDcEMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDdEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFTO0lBQ3ZCLDJGQUEyRjtJQUMzRixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2Isa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsQ0FBSztJQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFdBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxF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QUNFLHFCQUFxQjtvR0FLckIsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3dyYXBwZXInO1xuLy9pbXBvcnQgeyBRdWVzdGlvbmJvb2tDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudCc7XG4vL2ltcG9ydCB7IENvbXBvbmVudGhvc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbXBvbmVudGhvc3QvY29tcG9uZW50aG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGRhdGU6IERhdGU7XG4gIGV2ZW50czogYW55W107XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1Bhc3Q6IGJvb2xlYW47XG4gIGlzVG9kYXk6IGJvb2xlYW47XG4gIGlzRnV0dXJlOiBib29sZWFuO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgZXZlbnRTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb3Blbk1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbEV2ZW50czogYW55W10gPSBbXTsgXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvblxuICBASW5wdXQoKSBueHRJZDogc3RyaW5nO1xuICAvL0BWaWV3Q2hpbGQoQ29tcG9uZW50aG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZHluYW1pY0hvc3Q6IENvbXBvbmVudGhvc3REaXJlY3RpdmU7XG4gIGVudHJpZXMgPSBbXTtcbiAgcmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gIHFiUmVmcmVuY2VCb29rOmFueTtcbiAgY2FsZW5kYXJRdWVzdGlvbiA9IFtdO1xuICBjYWxlbmRhciA9IHt9O1xuICBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNhbGVuZGFyRGF5czogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICBkYXlzT2ZXZWVrOiBzdHJpbmdbXSA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbiAgbmV3RXZlbnRUaXRsZTogc3RyaW5nID0gJyc7XG4gIG5ld0V2ZW50VGltZTogc3RyaW5nID0gJyc7XG4gIG5ld0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgbmV3TGluazogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBtb2RhbFRpdGxlID0gJ0N1c3RvbSBNb2RhbCc7XG4gIG1vZGFsU2l6ZSA9ICdsYXJnZSc7XG4gIHNhdmVCdXR0b25WYWx1ZSA9ICdTYXZlJztcbiAgbW9kYWxGb290ZXIgPSB0cnVlO1xuICBlZGl0aW5nRXZlbnRJZDogbnVtYmVyO1xuICBlZGl0aW5nRW50cnlHcm91cDogYW55O1xuICBzaG93QXBwb2lubWVudFNlY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuICBzdWJzY3JpcHRpb246IGFueTtcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSkgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgICBpZih0aGlzLnF1ZXN0aW9uPy5pbnB1dCl7XG4gICAgICB0aGlzLmFsbEV2ZW50cyA9IHRoaXMucXVlc3Rpb24uaW5wdXQ7XG4gICAgIH1cbiAgICB0aGlzLnByb2Nlc3NRdWVzdGlvbigpO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmN1c3RvbUNoYW5nZSQuc3Vic2NyaWJlKFxuICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYoY2hhbmdlVmFsdWUgPT0gJ2NhbGVuZGFyLW1vZGFsLXNhdmUnKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2F2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSA9PSAnZGF0YUJpbmQnKSB7XG4gICAgICAgICAgICBpZih0aGlzLnF1ZXN0aW9uPy5pbnB1dCl7XG4gICAgICAgICAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRdWVzdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAvLyB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuY2FsZW5kYXIpO1xuICAgIC8vdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG4gIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXG4gIHByb2Nlc3NRdWVzdGlvbigpe1xuICAgIHRoaXMuZW50cmllcyA9IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddKTtcbiAgICB0aGlzLnFiUmVmcmVuY2VCb29rID0gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydxYlJlZmVyZW5jZVF1ZXN0aW9ucyddKTtcbiAgICBsZXQgdGl0bGUgPSB0aGlzLnFiUmVmcmVuY2VCb29rPy5xdWVzdGlvbmJvb2s/LnRpdGxlO1xuICAgIHRoaXMubW9kYWxUaXRsZSA9IHRpdGxlO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zID0gW107XG4gICAgaWYodGhpcy5lbnRyaWVzLmxlbmd0aCA+IDApe1xuICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcbiAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMucHVzaChxUmVmZXJlbmNlPy5xdWVzdGlvbik7XG4gICAgICAgICAgIH1cbiAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2VudHJpZXMtLT4nKTtcbiAgICBjb25zb2xlLmxvZygncXVlc3Rpb24tLT4nKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJpZXMpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTtcbiAgfVxuICAgLy8gc3VuZGF5IGNvbW1lbnRcbiAgLy8gb3BlblF1ZXN0aW9uQm9va01vZGFsKCkge1xuICAvLyAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNIb3N0LnZpZXdDb250YWluZXJSZWY7XG4gIC8vICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAvLyAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFF1ZXN0aW9uYm9va0NvbXBvbmVudCk7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnFiSXRlbSA9IHRoaXMucWJSZWZyZW5jZUJvb2s7XG4gIC8vICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9ucyA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAvLyAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5oYW5kbGVRdWVzdGlvbi5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHRoaXMuaGFuZGxlUXVlc3Rpb25FdmVudChldmVudCkpO1xuICAvLyB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhcigpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgIGNvbnN0IGVuZE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApO1xuXG4gICAgY29uc3Qgc3RhcnREYXlPZldlZWsgPSBzdGFydE9mTW9udGguZ2V0RGF5KCk7XG4gICAgY29uc3QgZW5kRGF5T2ZXZWVrID0gZW5kT2ZNb250aC5nZXREYXkoKTtcblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0T2ZNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShlbmRPZk1vbnRoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgKyAoNiAtIGVuZERheU9mV2VlaykpO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICBcbiAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cz8uZmlsdGVyKGV2ZW50ID0+IGV2ZW50Py5kYXRlPy50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICBsZXQgY2FsID0ge31cbiAgICBjYWxbJ3llYXInXSA9IHllYXI7XG4gICAgY2FsWydtb250aCddID0gbW9udGggKyAxO1xuICAgIHRoaXMuY2FsZW5kYXIgPSBjYWw7XG4gIH1cblxuICBzZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSkge1xuICAgIGNvbnNvbGUubG9nKGRheSk7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgLy8gdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQoZGF5Py5ldmVudHMpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlTZWxlY3RlZERheSA9IHRoaXMuY2FsZW5kYXJEYXlzLmZpbmQoZCA9PiBkLmlzU2VsZWN0ZWQpO1xuICAgIGlmIChwcmV2aW91c2x5U2VsZWN0ZWREYXkpIHtcbiAgICAgIHByZXZpb3VzbHlTZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNlbGVjdCB0aGUgY2xpY2tlZCBkYXlcbiAgICBkYXkuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAvLyBWRCAwOVNlcDI0LSBzZXR1cCB0aGUgcXVlcnkgcGFyYW0gZGF0YSBmb3IgYXBpIGNhbGxcbiAgICBsZXQgcmVmZXJlbmNlRGF0YSA9IFtdO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBWRCAwOS0wOS0yNCBnZXQgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICAgIC8vIG5lZWQgdG8gYWRkIGluIHRoZSBkb2N1bWVudFxuICAgICAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcbiAgICAgICBpZihxdWVzLnJlZmVyZW5jZUZpZWxkID09ICdzZWxlY3RlZERhdGUnKXtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gZGF5LmRhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhxdWVzLmlucHV0KTtcbiAgICAgICB9XG4gICAgICAgLy8gVkQgMDktMDktMjQgZ2V0IHRoZSBxdWVyeSByZWZyZW5jZSAgZmllbGQgZGF0YSB0byBwYXNzIHRoZSBxdWVyeVBhcmFtICBmb3IgYXBpXG4gICAgICAgaWYocXVlcy5zdWJUZXh0KXtcbiAgICAgICAgbGV0IHN1YlRleHQgPSBKU09OLnBhcnNlKHF1ZXMuc3ViVGV4dCk7XG4gICAgICAgIGlmIChzdWJUZXh0LnF1ZXJ5RmllbGQgJiYgc3ViVGV4dC5xdWVyeVZhbHVlUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFF1ZXMgPSBxdWVzO1xuICAgICAgICAgICAgbGV0IHF1ZXJ5UmVmZXJlbmNlcyA9IHN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZS5zcGxpdCgnLCcpOyAgIFxuICAgICAgICAgICAgcXVlcnlSZWZlcmVuY2VzLmZvckVhY2gocmVmRmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZWZRdWVzID0gdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZmluZChxID0+IHEucmVmZXJlbmNlRmllbGQgPT09IHJlZkZpZWxkKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmUXVlcykge1xuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VEYXRhLnB1c2gocmVmUXVlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBBZGQgdGhlIHJlZmVyZW5jZURhdGEgYXJyYXkgdG8gdGhlIGN1cnJlbnQgcXVlc3Rpb25cbiAgICAgICAgICAgIGN1cnJlbnRRdWVzLnJlZmVyZW5jZVF1ZXJ5RGF0YSA9IHJlZmVyZW5jZURhdGE7XG4gICAgICAgIH1cbiAgICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByZXZpb3VzTW9udGgoKSB7XG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKTsgLy8gRW5zdXJlIHRoZSBkYXRlIG9iamVjdCBpcyB1cGRhdGVkXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmNhbGVuZGFyKTtcbiAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gIH1cblxuICBuZXh0TW9udGgoKSB7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5jYWxlbmRhcik7XG4gICAgdGhpcy5ldmVudFNlbGVjdGVkLmVtaXQodGhpcy5hbGxFdmVudHMpO1xuICB9XG5cbiAgYWRkQXBwb2ludG1lbnQoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLm1hcChxID0+ICh7IC4uLnEsIGlucHV0OiAnJyB9KSk7XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgIC8vIGNsZWFyIHRoZSBpbnB1dFxuICAgICAgaWYocXVlcy5yZWZlcmVuY2VGaWVsZCAhPSAnc2VsZWN0ZWREYXRlJyl7XG4gICAgICAgIGlmKHF1ZXMudHlwZSA9PSAnRHJvcGRvd24nKXtcbiAgICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgICBkZWxldGUgcXVlcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBxdWVzLmlucHV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2codGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMpO1xuICAgIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zO1xuICAgIHRoaXMub3BlbkJvb2tNb2RlbCgpO1xuICAgIC8vIHN1bmRheSBjb21tZW50XG4gICAgLy90aGlzLm9wZW5RdWVzdGlvbkJvb2tNb2RhbCgpO1xuICB9XG5cbiAgb3BlbkJvb2tNb2RlbCgpe1xuICAgIHRoaXMub3Blbk1vZGFsLmVtaXQoe1xuICAgICAgcWJSZWZyZW5jZUJvb2s6IHRoaXMucWJSZWZyZW5jZUJvb2ssXG4gICAgICByZWZlcmVuY2VRdWVzdGlvbnM6IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLFxuICAgICAgbW9kYWxUaXRsZSA6IHRoaXMubW9kYWxUaXRsZSxcbiAgICAgIG1vZGFsU2l6ZSA6IHRoaXMubW9kYWxTaXplLFxuICAgICAgc2F2ZUJ1dHRvblZhbHVlIDogdGhpcy5zYXZlQnV0dG9uVmFsdWUsXG4gICAgICBtb2RhbEZvb3RlciA6IHRoaXMubW9kYWxGb290ZXIsXG5cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlQ2FsZW5kYXJNb2RhbCgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQodHJ1ZSk7XG4gIH1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcblxuZWRpdEV2ZW50KGV2ZW50OiBhbnksIGVudHJ5R3JvdXA6IGFueSkge1xuICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMgPSBPYmplY3QudmFsdWVzKGVudHJ5R3JvdXApO1xuICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSBbLi4udGhpcy5yZWZlcmVuY2VRdWVzdGlvbnNdOyAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBlbnRyaWVzIHRvIGVkaXRcbiAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IGV2ZW50LmlkO1xuICB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwID0gZW50cnlHcm91cDsgLy8gU3RvcmUgdGhlIGVudHJ5IGdyb3VwIGJlaW5nIGVkaXRlZFxuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCBjaGFuZ2VzXG4gIHRoaXMub3BlbkJvb2tNb2RlbCgpO1xuICAvLyBzdWRheSBjb21tZW50XG4gLy8gdGhpcy5vcGVuUXVlc3Rpb25Cb29rTW9kYWwoKTtcblxufVxuXG5kZWxldGVFdmVudCggZXZlbnRJZDogbnVtYmVyLCBlbnRyeUdyb3VwOiBhbnkpIHtcbiAgbGV0IGV2ZW50ID0gdGhpcy5hbGxFdmVudHM/LmZpbmQoZSA9PiBlPy5pZCA9PT0gZXZlbnRJZCk7XG4gIGlmIChldmVudCkge1xuICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhlIGVudHJ5R3JvdXAgdG8gZGVsZXRlXG4gICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5pbmRleE9mKGVudHJ5R3JvdXApO1xuICAgICAgaWYgKGVudHJ5SW5kZXggPiAtMSkge1xuICAgICAgICAgIGV2ZW50LmVudHJpZXMuc3BsaWNlKGVudHJ5SW5kZXgsIDEpOyAvLyBSZW1vdmUgdGhlIHNwZWNpZmljIGVudHJ5XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCBoYXMgbm8gbW9yZSBlbnRyaWVzLCByZW1vdmUgdGhlIGV2ZW50IGVudGlyZWx5XG4gICAgICBpZiAoZXZlbnQuZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBldmVudEluZGV4ID0gdGhpcy5hbGxFdmVudHM/LmluZGV4T2YoZXZlbnQpO1xuICAgICAgICAgIGlmIChldmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5hbGxFdmVudHM/LnNwbGljZShldmVudEluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBlbnRpcmUgZXZlbnRcbiAgICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgbGV0IGV2ZW50RGF0YSA9IHt9O1xuICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiZGVsZXRlXCI7XG4gICBldmVudERhdGFbJ2RhdGEnXSA9IGV2ZW50O1xuICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCB0aGUgY2hhbmdlc1xufVxuXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGFkZEV2ZW50KGRheTogQ2FsZW5kYXJEYXksIGVudHJ5UXVlcykge1xuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxuICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyeVF1ZXMucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgYWNjW3EuaWRdID0geyAuLi5xIH07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgLy8gRmluZCBhbiBleGlzdGluZyBldmVudCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50ID0gZGF5LmV2ZW50cz8uZmluZChldmVudCA9PiBldmVudC5kYXRlID09PSBkYXkuZGF0ZSk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudCkge1xuICAgICAgICAvLyBNZXJnZSBuZXcgZW50cmllcyBpbnRvIHRoZSBleGlzdGluZyBldmVudCdzIGVudHJpZXMgYXJyYXlcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVudHJpZXMgYXJyYXkgYWxyZWFkeSBjb250YWlucyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBpZFxuICAgICAgICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBleGlzdGluZ0V2ZW50LmVudHJpZXMubWFwKGVudHJ5ID0+ICh7IC4uLmVudHJ5IH0pKTtcbiAgICAgICAgLy8gQXBwZW5kIG5ldyBlbnRyaWVzIHRvIHRoZSBleGlzdGluZyBlbnRyaWVzXG4gICAgICAgIGV4aXN0aW5nRW50cmllcy5wdXNoKG5ld0VudHJpZXMpO1xuICAgICAgICBleGlzdGluZ0V2ZW50LmVudHJpZXMgPSBleGlzdGluZ0VudHJpZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGV2ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgICAgIGNvbnN0IG5ld0V2ZW50ID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgZGF0ZTogZGF5LmRhdGUsXG4gICAgICAgICAgICBlbnRyaWVzOiBbbmV3RW50cmllc10gLy8gV3JhcCB0aGUgbmV3IGVudHJpZXMgaW4gYW4gYXJyYXlcbiAgICAgICAgfTtcbiAgICAgICAgZGF5LmV2ZW50cyA9IGRheT8uZXZlbnRzIHx8IFtdXG4gICAgICAgIGRheS5ldmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgICAgIHRoaXMuYWxsRXZlbnRzPy5wdXNoKG5ld0V2ZW50KTtcbiAgICAgICAgLy90aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdCh0aGlzLmFsbEV2ZW50cyk7XG4gICAgICAgIGxldCBldmVudERhdGEgPSB7fTtcbiAgICAgICAgZXZlbnREYXRhWydhY3Rpb24nXSA9IFwiYWRkXCI7XG4gICAgICAgIGV2ZW50RGF0YVsnZGF0YSddID0gbmV3RXZlbnQ7XG4gICAgICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KGV2ZW50RGF0YSk7XG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICAgIGNvbnNvbGUubG9nKCdhbGxFdmVudHMnLCB0aGlzLmFsbEV2ZW50cyk7XG59XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gb25TYXZlKCkge1xuICAgIGlmICh0aGlzLmVkaXRpbmdFdmVudElkICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5hbGxFdmVudHM/LmZpbmQoZSA9PiBlPy5pZCA9PT0gdGhpcy5lZGl0aW5nRXZlbnRJZCk7XG4gICAgICAgIGlmIChldmVudCAmJiB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNwZWNpZmljIGVudHJ5IGdyb3VwIHdpdGhpbiB0aGUgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5SW5kZXggPSBldmVudC5lbnRyaWVzLmZpbmRJbmRleChlbnRyeUdyb3VwID0+IGVudHJ5R3JvdXAgPT09IHRoaXMuZWRpdGluZ0VudHJ5R3JvdXApO1xuICAgICAgICAgICAgaWYgKGVudHJ5SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmVudHJpZXNbZW50cnlJbmRleF0gPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYWNjW3EuaWRdID0geyAuLi5xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgIC8vIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgICAgIGxldCBldmVudERhdGEgPSB7fTtcbiAgICAgIGV2ZW50RGF0YVsnYWN0aW9uJ10gPSBcImVkaXRcIjtcbiAgICAgIGV2ZW50RGF0YVsnZGF0YSddID0gZXZlbnQ7XG4gICAgICB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChldmVudERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5KSB7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50KHRoaXMuc2VsZWN0ZWREYXksIHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyTW9kYWwoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbn1cblxuICAvLyBvbkNhbmNlbCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnQ2FuY2VsIGJ1dHRvbiBjbGlja2VkJyk7XG4gIC8vICAgdGhpcy5jbG9zZUNhbGVuZGFyTW9kYWwoKTtcbiAgLy8gfVxuICAvL3RoaXMgZnVudGlvbiBuZWVkIHRvIGJlIHVzZWRcbiAgLy8gaGFuZGxlUXVlc3Rpb25FdmVudChxdWVzKXtcbiAgLy8gICAgIC8vIFVwZGF0ZSB0aGUgcXVlc3Rpb25zIGFycmF5IHdpdGggdGhlIG5ldyBxdWVzdGlvblxuICAvLyAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24uZmluZEluZGV4KHEgPT4gcS5pZCA9PT0gcXVlcy5pZCk7XG4gIC8vICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAvLyAgICAgICAvLyBJZiBxdWVzdGlvbiBhbHJlYWR5IGV4aXN0cywgdXBkYXRlIGl0XG4gIC8vICAgICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbltpbmRleF0gPSBxdWVzO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgLy8gSWYgcXVlc3Rpb24gZG9lc24ndCBleGlzdCwgYWRkIGl0IHRvIHRoZSBhcnJheVxuICAvLyAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucHVzaChxdWVzKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gIC8vICAgfVxuXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdlbmVyYXRlSWQoKSB7XG4gICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgfVxuXG4gIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudHJ5R3JvdXApO1xufVxuXG5yZW1vdmVDaGFyYWN0ZXJzKHF1ZXN0aW9uVGV4dDpzdHJpbmcpe1xuICBsZXQgdXBkYXRlZFRleHQgPSBxdWVzdGlvblRleHQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpO1xuICByZXR1cm4gdXBkYXRlZFRleHQ7XG59XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJhbGlnbi1jYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj48PCBQcmV2aW91cyA+PjwvYnV0dG9uPlxuICAgICAgICAgIDxoMz57eyBjdXJyZW50RGF0ZSB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9oMz5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0TW9udGgoKVwiPjw8IE5leHQgPj48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWdyaWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW9mLXdlZWtcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZldlZWtcIj57eyBkYXkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItZGF5XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBjYWxlbmRhckRheXNcIlxuICAgICAgICAgICAgICBbY2xhc3Mubm90LWN1cnJlbnQtbW9udGhdPVwiIWRheS5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wYXN0XT1cImRheS5pc1Bhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MudG9kYXldPVwiZGF5LmlzVG9kYXlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZnV0dXJlXT1cImRheS5pc0Z1dHVyZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1udW1iZXJcIj57eyBkYXkuZGF0ZS5nZXREYXRlKCkgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheT8uZXZlbnRzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJlbnRyeS1pbmRpY2F0b3JcIiBbY2xhc3Muc2VsZWN0XT1cImRheT8uaXNTZWxlY3RlZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgZGF5LmV2ZW50c1wiID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVudHJ5R3JvdXAgb2YgZXZlbnQuZW50cmllc1wiIGNsYXNzPVwiZXZlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBrZXkgb2YgZ2V0RW50cnlLZXlzKGVudHJ5R3JvdXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSA9PSAnVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dD8udmFsdWUgfCBkYXRlOiAnc2hvcnRUaW1lJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS50eXBlICE9ICdUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50cnlHcm91cFtrZXldLmlucHV0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXBwb2luYXBwb2ludG1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHBvaW50bWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGg0PkFkZCBBcHBvaW50bWVudDwvaDQ+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlbGVjdGVkRGF5XCIgKGNsaWNrKT1cImFkZEFwcG9pbnRtZW50KClcIj5BZGQ8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLVZEIDA2U2VwMjQgY2FsZW5kYXIgdXBkYXRlcy0tPiBcbiAgICAgIDwhLS0gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXMtLT4gXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FwcG9pbm1lbnRTZWN0aW9uICYmIHNlbGVjdGVkRGF5Py5ldmVudHM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QXBwb2ludG1lbnRzPC9oND5cbiAgICAgICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgZXZlbnQgb2Ygc2VsZWN0ZWREYXk/LmV2ZW50c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRcIiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiIGNsYXNzPVwiZW50cnktcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnF1ZXN0aW9uVGV4dFwiIGNsYXNzPVwiZW50cnktdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cmVtb3ZlQ2hhcmFjdGVycyhlbnRyeUdyb3VwW2tleV0ucXVlc3Rpb25UZXh0KX19OlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnktdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA5U2VwMjQtIGRhdGUgdHlwZSBhbmQgbGluayB0eXBlIHVwZGF0ZXMgICAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSAhPSAnVGltZScgJiYgZW50cnlHcm91cFtrZXldLnR5cGUgIT0gJ0xpbmsnJiYgZW50cnlHcm91cFtrZXldLnR5cGUgIT0gJ0RhdGUnXCI+e3sgZW50cnlHcm91cFtrZXldLmlucHV0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLnR5cGUgPT0gJ1RpbWUnXCI+e3sgZW50cnlHcm91cFtrZXldLmlucHV0IHwgZGF0ZTogJ3Nob3J0VGltZScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSA9PSAnRGF0ZSdcIj57eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfCBkYXRlOiAnbWVkaXVtRGF0ZScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeUdyb3VwW2tleV0udHlwZSA9PSAnTGluaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJy8vJysgZW50cnlHcm91cFtrZXldLmlucHV0XCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3tyZW1vdmVDaGFyYWN0ZXJzKGVudHJ5R3JvdXBba2V5XS5xdWVzdGlvblRleHQpfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlZGl0RXZlbnQoZXZlbnQsZW50cnlHcm91cClcIj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVFdmVudChldmVudC5pZCxlbnRyeUdyb3VwKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSA8YXBwLWN1c3RvbS1tb2RlbFxuICBbbW9kYWxUaXRsZV09XCJtb2RhbFRpdGxlXCJcbiAgW2lzTW9kYWxPcGVuXT1cImlzTW9kYWxPcGVuXCJcbiAgW21vZGFsU2l6ZV09XCJtb2RhbFNpemVcIlxuICBbc2F2ZUJ1dHRvblZhbHVlXT1cInNhdmVCdXR0b25WYWx1ZVwiXG4gIFttb2RhbEZvb3Rlcl09XCJtb2RhbEZvb3RlclwiXG4gIChzYXZlQnV0dG9uRW1pdCk9XCJvblNhdmUoKVwiXG4gIChjYW5jZWxCdXR0b25FbWl0KT1cIm9uQ2FuY2VsKClcIlxuPlxuPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlJlZnJlbmNlQm9va1wiIFtxdWVzdGlvbnNdPVwicmVmZXJlbmNlUXVlc3Rpb25zXCIgKGhhbmRsZVF1ZXN0aW9uKT1cImhhbmRsZVF1ZXN0aW9uRXZlbnQoJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbjxuZy10ZW1wbGF0ZSBkeW5hbWljQ29tcG9uZW50SG9zdCA+PC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWN1c3RvbS1tb2RlbD4gLS0+Il19
|
|
@@ -27,10 +27,10 @@ export class CustomDateComponent {
|
|
|
27
27
|
onDateChange(event) {
|
|
28
28
|
this.dateChange.emit(event);
|
|
29
29
|
}
|
|
30
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
31
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomDateComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomDateComponent, selector: "app-custom-date", inputs: { date: "date", readOnly: "readOnly", error: "error", errorMessage: "errorMessage" }, outputs: { dateChange: "dateChange" }, usesOnChanges: true, ngImport: i0, template: "<!-- date component -->\n<!-- VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<p>\n <input\n [class]=\"error ? 'invalid' : ''\"\n [(ngModel)]=\"dateSelected\"\n [owlDateTimeTrigger]=\"dt1\"\n [owlDateTime]=\"dt1\"\n [disabled]=\"readOnly\"\n placeholder=\"DD/MM/YYYY\"\n (input)=\"onDateChange($event)\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\"\n >\n <owl-date-time [pickerType]=\"'calendar'\" #dt1></owl-date-time>\n </p>\n <span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>", styles: [".invalid{border-color:red!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["disabled", "owlDateTimeTrigger"] }, { kind: "directive", type: i4.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["rangeSeparator", "owlDateTime", "owlDateTimeFilter", "min", "max", "selectMode", "value", "values", "_disabled"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i4.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["startAt", "pickerType", "pickerMode", "disabled", "opened", "backdropClass", "panelClass", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }] });
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomDateComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: 'app-custom-date', template: "<!-- date component -->\n<!-- VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<p>\n <input\n [class]=\"error ? 'invalid' : ''\"\n [(ngModel)]=\"dateSelected\"\n [owlDateTimeTrigger]=\"dt1\"\n [owlDateTime]=\"dt1\"\n [disabled]=\"readOnly\"\n placeholder=\"DD/MM/YYYY\"\n (input)=\"onDateChange($event)\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\"\n >\n <owl-date-time [pickerType]=\"'calendar'\" #dt1></owl-date-time>\n </p>\n <span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>", styles: [".invalid{border-color:red!important}\n"] }]
|
|
36
36
|
}], ctorParameters: function () { return [{ type: i1.I18nService }]; }, propDecorators: { date: [{
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
44
44
|
}], dateChange: [{
|
|
45
45
|
type: Output
|
|
46
46
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUvY3VzdG9tLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUvY3VzdG9tLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVE5RixNQUFNLE9BQU8sbUJBQW1CO0lBUVY7SUFQWCxJQUFJLENBQVM7SUFDYixRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsK0JBQStCO0lBQ2pELEtBQUssQ0FBSztJQUNWLFlBQVksQ0FBUztJQUNwQixVQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbEUsWUFBWSxDQUFNO0lBRWxCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUVqRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNILG1DQUFtQztJQUNqQyxXQUFXLENBQUMsYUFBNEI7UUFDdEMsSUFBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFFSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQzt1R0F2QlUsbUJBQW1COzJGQUFuQixtQkFBbUIsaU5DUmhDLHNxQkFpQitEOzsyRkRUbEQsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjtrR0FLbEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWRhdGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7IC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2VcbiAgQElucHV0KCkgZXJyb3I6YW55O1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGRhdGVTZWxlY3RlZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKHRoaXMuZGF0ZSk7XG4gIH1cbi8vIFZEIDAyQXVnMjQgLSBjbGVhciBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKHNpbXBsZWNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpe1xuICAgIGlmKHNpbXBsZWNoYW5nZXNbJ2RhdGUnXSl7XG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKHRoaXMuZGF0ZSk7XG4gICAgfVxuICAgICBcbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZXZlbnQpXG4gIH1cbn1cbiIsIjwhLS0gZGF0ZSBjb21wb25lbnQgLS0+XG48IS0tIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbjwhLS0gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlLS0+XG48cD5cbiAgICA8aW5wdXRcbiAgICAgIFtjbGFzc109XCJlcnJvciA/ICdpbnZhbGlkJyA6ICcnXCJcbiAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVNlbGVjdGVkXCJcbiAgICAgIFtvd2xEYXRlVGltZVRyaWdnZXJdPVwiZHQxXCJcbiAgICAgIFtvd2xEYXRlVGltZV09XCJkdDFcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiREQvTU0vWVlZWVwiXG4gICAgICAoaW5wdXQpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAzNXB4OyBib3JkZXI6IG5vbmU7IGJveC1zaGFkb3c6IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiXG4gICAgICAoZGF0ZVRpbWVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8b3dsLWRhdGUtdGltZSBbcGlja2VyVHlwZV09XCInY2FsZW5kYXInXCIgI2R0MT48L293bC1kYXRlLXRpbWU+XG4gIDwvcD5cbiAgPHNwYW4gKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3ItbXNnXCI+e3tlcnJvck1lc3NhZ2V9fTwvc3Bhbj4iXX0=
|
|
@@ -24,10 +24,10 @@ export class CustomDatePickerComponent {
|
|
|
24
24
|
onDateChange(event) {
|
|
25
25
|
this.dateChange.emit(event);
|
|
26
26
|
}
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
28
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomDatePickerComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CustomDatePickerComponent, selector: "app-custom-date-picker", inputs: { date: "date", minDate: "minDate", maxDate: "maxDate", error: "error", errorMessage: "errorMessage", readOnly: "readOnly" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<!-- <div class=\"date-picker-container\">\n <label>{{label}}</label>\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\n</div> -->\n<!-- <mat-form-field>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field> -->\n<!--VD 12Jun24 - readonly change --> \n<!-- VD 01Aug24 - validation change-->\n<p>\n <input \n [class]=\"error ? 'invalid' : ''\"\n [(ngModel)]=\"dateSelected\" \n [owlDateTimeTrigger]=\"dt\" \n [owlDateTime]=\"dt\" \n [min]=\"minDate\"\n [disabled]=\"readOnly\"\n placeholder=\"DD/MM/YYYY HH:MM\"\n (input)=\"onDateChange($event)\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\">\n <owl-date-time #dt></owl-date-time>\n</p>\n<span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>\n ", styles: [".invalid{border-color:red!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["disabled", "owlDateTimeTrigger"] }, { kind: "directive", type: i4.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["rangeSeparator", "owlDateTime", "owlDateTimeFilter", "min", "max", "selectMode", "value", "values", "_disabled"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i4.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["startAt", "pickerType", "pickerMode", "disabled", "opened", "backdropClass", "panelClass", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }] });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CustomDatePickerComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'app-custom-date-picker', template: "<!-- <div class=\"date-picker-container\">\n <label>{{label}}</label>\n <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\n</div> -->\n<!-- <mat-form-field>\n <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field> -->\n<!--VD 12Jun24 - readonly change --> \n<!-- VD 01Aug24 - validation change-->\n<p>\n <input \n [class]=\"error ? 'invalid' : ''\"\n [(ngModel)]=\"dateSelected\" \n [owlDateTimeTrigger]=\"dt\" \n [owlDateTime]=\"dt\" \n [min]=\"minDate\"\n [disabled]=\"readOnly\"\n placeholder=\"DD/MM/YYYY HH:MM\"\n (input)=\"onDateChange($event)\"\n style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n (dateTimeChange)=\"onDateChange($event)\">\n <owl-date-time #dt></owl-date-time>\n</p>\n<span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>\n ", styles: [".invalid{border-color:red!important}\n"] }]
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i1.I18nService }]; }, propDecorators: { date: [{
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
45
45
|
}], dateChange: [{
|
|
46
46
|
type: Output
|
|
47
47
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1kYXRlLXBpY2tlci9jdXN0b20tZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUtcGlja2VyL2N1c3RvbS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRM0UsTUFBTSxPQUFPLHlCQUF5QjtJQVNqQjtJQVJWLElBQUksQ0FBUztJQUNiLE9BQU8sQ0FBSztJQUNaLE9BQU8sQ0FBSztJQUNaLEtBQUssQ0FBSztJQUNWLFlBQVksQ0FBUTtJQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsK0JBQStCO0lBQ2hELFVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRSxZQUFZLENBQUk7SUFDaEIsWUFBbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBSSxDQUFDO0lBRWhELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt1R0FsQlUseUJBQXlCOzJGQUF6Qix5QkFBeUIsMk9DUnRDLDZxQ0EwQkU7OzJGRGxCVyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCO2tHQUt6QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tZGF0ZS1waWNrZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbkRhdGU6YW55O1xuICBASW5wdXQoKSBtYXhEYXRlOmFueTtcbiAgQElucHV0KCkgZXJyb3I6YW55O1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6c3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlOyAvLyBWRCAxMkp1bjI0IC0gcmVhZG9ubHkgY2hhbmdlXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBkYXRlU2VsZWN0ZWQ6YW55XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdyZWFkIG9ubHkgY2hlY2snLHRoaXMucmVhZE9ubHkpO1xuICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBuZXcgRGF0ZSh0aGlzLmRhdGUpO1xuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxufVxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgPGxhYmVsPnt7bGFiZWx9fTwvbGFiZWw+XG4gICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2VkKCRldmVudClcIj5cbjwvZGl2PiAtLT5cbjwhLS0gPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbbWluXT1cIm1pbkRhdGVcIiBbbWF4XT1cIm1heERhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuPC9tYXQtZm9ybS1maWVsZD4gLS0+XG48IS0tVkQgMTJKdW4yNCAtIHJlYWRvbmx5IGNoYW5nZSAtLT4gXG48IS0tIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZS0tPlxuPHA+XG4gICAgPGlucHV0ICBcbiAgICBbY2xhc3NdPVwiZXJyb3IgPyAnaW52YWxpZCcgOiAnJ1wiXG4gICAgWyhuZ01vZGVsKV09XCJkYXRlU2VsZWN0ZWRcIiBcbiAgICBbb3dsRGF0ZVRpbWVUcmlnZ2VyXT1cImR0XCIgXG4gICAgW293bERhdGVUaW1lXT1cImR0XCIgIFxuICAgIFttaW5dPVwibWluRGF0ZVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5XCJcbiAgICBwbGFjZWhvbGRlcj1cIkREL01NL1lZWVkgSEg6TU1cIlxuICAgIChpbnB1dCk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAzNXB4OyBib3JkZXI6IG5vbmU7IGJveC1zaGFkb3c6IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiXG4gICAgKGRhdGVUaW1lQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPG93bC1kYXRlLXRpbWUgI2R0Pjwvb3dsLWRhdGUtdGltZT5cbjwvcD5cbjxzcGFuICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yLW1zZ1wiPnt7ZXJyb3JNZXNzYWdlfX08L3NwYW4+XG4gICJdfQ==
|