@rangertechnologies/ngnxt 2.1.253 → 2.1.254
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/environments/version.mjs +2 -2
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +5 -3
- package/esm2022/lib/components/datatable/datatable.component.mjs +3 -16
- package/esm2022/lib/components/icon-selector/icon-selector.component.mjs +4 -3
- package/esm2022/lib/model/bookletWrapper.mjs +1 -3
- package/esm2022/lib/pages/booklet/booklet.component.mjs +8 -50
- package/esm2022/lib/pages/builder/element/element.component.mjs +6 -31
- package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +9 -9
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +52 -20
- package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +3 -45
- package/esm2022/lib/pages/pdfDesigner/pdf-properties/pdf-properties.component.mjs +11 -15
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +5 -22
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +1 -14
- package/esm2022/lib/pipe/custom-translate.pipe.mjs +6 -5
- package/esm2022/lib/pipe/svg/svg.pipe.mjs +26 -0
- package/esm2022/lib/services/form-builder/form-builder.service.mjs +12 -38
- package/esm2022/lib/services/pdf-designer/pdf-designer.service.mjs +1 -4
- package/esm2022/lib/services/template/template.service.mjs +1 -17
- package/esm2022/lib/services/translation/translation.service.mjs +4 -4
- package/fesm2022/rangertechnologies-ngnxt.mjs +139 -283
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/datatable/datatable.component.d.ts +0 -1
- package/lib/model/bookletWrapper.d.ts +0 -1
- package/lib/pages/booklet/booklet.component.d.ts +0 -2
- package/lib/pages/builder/element/element.component.d.ts +0 -3
- package/lib/pages/builder/properties/properties.component.d.ts +6 -2
- package/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.d.ts +0 -3
- package/lib/pages/questionbook/questionbook.component.d.ts +0 -1
- package/lib/pages/questionnaire/questionnaire.component.d.ts +0 -1
- package/lib/pipe/custom-translate.pipe.d.ts +1 -1
- package/lib/pipe/svg/svg.pipe.d.ts +10 -0
- package/lib/services/form-builder/form-builder.service.d.ts +1 -0
- package/lib/services/translation/translation.service.d.ts +1 -1
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.254.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.253.tgz +0 -0
|
@@ -13,13 +13,14 @@ export class NxtCustomTranslatePipe {
|
|
|
13
13
|
this.cache.clear();
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
transform(key, fallback) {
|
|
17
|
-
if (this.cache.has(key)) {
|
|
16
|
+
transform(key, fallback, from) {
|
|
17
|
+
if (from !== 'formBuilder' && this.cache.has(key)) {
|
|
18
18
|
return this.cache.get(key);
|
|
19
19
|
}
|
|
20
20
|
const translated = this.translationService.translate(key);
|
|
21
|
-
const result = translated || fallback || key;
|
|
22
|
-
|
|
21
|
+
const result = translated || fallback || (from === 'formBuilder' ? null : key);
|
|
22
|
+
if (from !== 'formBuilder')
|
|
23
|
+
this.cache.set(key, result);
|
|
23
24
|
return result;
|
|
24
25
|
}
|
|
25
26
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtCustomTranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -33,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33
34
|
standalone: true
|
|
34
35
|
}]
|
|
35
36
|
}], ctorParameters: () => [] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRyYW5zbGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BpcGUvY3VzdG9tLXRyYW5zbGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPaEUsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDbEMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFeEQ7UUFDRSx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQjthQUN4QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsSUFBYTtRQUNwRCxJQUFJLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE1BQU0sTUFBTSxHQUFHLFVBQVUsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLElBQUksSUFBSSxLQUFLLGFBQWE7WUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzt3R0FyQlUsc0JBQXNCO3NHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBTGxDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbnh0Q3VzdG9tVHJhbnNsYXRlJyxcbiAgcHVyZTogZmFsc2UsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTnh0Q3VzdG9tVHJhbnNsYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBTS1MyOEpVTDI1IGNsZWFyIGNhdGNoIGlmIGlucHV0IGxhbmd1YWdlIGNvZGUgY2hhbmdlXG4gICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRpb25zTG9hZGVkJFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgICAgfSk7XG4gIH1cblxuICB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIGZhbGxiYWNrOiBzdHJpbmcsIGZyb20/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChmcm9tICE9PSAnZm9ybUJ1aWxkZXInICYmIHRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlLmdldChrZXkpITtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNsYXRlZCA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRyYW5zbGF0ZWQgfHwgZmFsbGJhY2sgfHwgKGZyb20gPT09ICdmb3JtQnVpbGRlcicgPyBudWxsIDoga2V5KTtcbiAgICBpZiAoZnJvbSAhPT0gJ2Zvcm1CdWlsZGVyJyl0aGlzLmNhY2hlLnNldChrZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
// SKS31JUL25 for icon selector
|
|
5
|
+
export class SvgPipe {
|
|
6
|
+
sanitizer;
|
|
7
|
+
constructor(sanitizer) {
|
|
8
|
+
this.sanitizer = sanitizer;
|
|
9
|
+
}
|
|
10
|
+
transform(icon) {
|
|
11
|
+
if (typeof icon === 'object') {
|
|
12
|
+
return this.sanitizer.bypassSecurityTrustHtml(icon.changingThisBreaksApplicationSecurity || '');
|
|
13
|
+
}
|
|
14
|
+
return this.sanitizer.bypassSecurityTrustHtml(icon);
|
|
15
|
+
}
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
17
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SvgPipe, isStandalone: true, name: "svg" });
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SvgPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'svg',
|
|
23
|
+
standalone: true
|
|
24
|
+
}]
|
|
25
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGlwZS9zdmcvc3ZnLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU9wRCwrQkFBK0I7QUFDL0IsTUFBTSxPQUFPLE9BQU87SUFDRTtJQUFwQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQyxTQUFTLENBQUMsSUFBUztRQUNqQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDM0MsSUFBSSxDQUFDLHFDQUFxQyxJQUFJLEVBQUUsQ0FDakQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzt3R0FWVSxPQUFPO3NHQUFQLE9BQU87OzRGQUFQLE9BQU87a0JBTG5CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdzdmcnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuLy8gU0tTMzFKVUwyNSBmb3IgaWNvbiBzZWxlY3RvclxuZXhwb3J0IGNsYXNzIFN2Z1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICB0cmFuc2Zvcm0oaWNvbjogYW55KTogU2FmZUh0bWwge1xuICAgIGlmICh0eXBlb2YgaWNvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgICAgaWNvbi5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5IHx8ICcnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaWNvbik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -44,20 +44,10 @@ export class FormBuilderService {
|
|
|
44
44
|
console.error("API Error:", error);
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
if (element?.['options'] !== undefined && element?.['options'] !== null && Array.isArray(element['options'])) {
|
|
48
|
-
element['options'].forEach(opt => {
|
|
49
|
-
if (opt.id !== undefined && opt.id !== null) {
|
|
50
|
-
opt.id = opt.uniqueIdentifier;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
47
|
});
|
|
55
48
|
book.bookQuestionsMap[this.unique_id].subQuestions = tempbook;
|
|
56
49
|
this.book = book;
|
|
57
50
|
this.book.bookQuestionsMap[this.unique_id]?.subQuestions?.forEach(element => {
|
|
58
|
-
if (this.book.sqOptions?.[element.id]) {
|
|
59
|
-
element.options = this.book.sqOptions[element.id].options;
|
|
60
|
-
}
|
|
61
51
|
this.addElement(element);
|
|
62
52
|
});
|
|
63
53
|
let translationMap = { en: {} };
|
|
@@ -71,9 +61,9 @@ export class FormBuilderService {
|
|
|
71
61
|
});
|
|
72
62
|
if (element?.['options'] !== undefined && element?.['options'] !== null && Array.isArray(element['options'])) {
|
|
73
63
|
element['options'].forEach(opt => {
|
|
74
|
-
if (opt.
|
|
64
|
+
if (opt.label !== undefined && opt.label !== null && typeof opt.label === 'string') {
|
|
75
65
|
translationMap.en[opt.id] = translationMap.en[opt.id] ?? {};
|
|
76
|
-
translationMap.en[opt.id]['
|
|
66
|
+
translationMap.en[opt.id]['label'] = opt.label;
|
|
77
67
|
}
|
|
78
68
|
});
|
|
79
69
|
}
|
|
@@ -91,9 +81,9 @@ export class FormBuilderService {
|
|
|
91
81
|
});
|
|
92
82
|
if (field?.question?.['options'] !== undefined && field?.question?.['options'] !== null && Array.isArray(field?.question?.['options'])) {
|
|
93
83
|
field.question['options'].forEach(opt => {
|
|
94
|
-
if (opt.
|
|
84
|
+
if (opt.label !== undefined && opt.label !== null && typeof opt.label === 'string') {
|
|
95
85
|
translationMap.en[opt.id] = translationMap.en[opt.id] ?? {};
|
|
96
|
-
translationMap.en[opt.id]['
|
|
86
|
+
translationMap.en[opt.id]['label'] = opt.label;
|
|
97
87
|
}
|
|
98
88
|
});
|
|
99
89
|
}
|
|
@@ -137,6 +127,7 @@ export class FormBuilderService {
|
|
|
137
127
|
newBook() {
|
|
138
128
|
this.unique_id = this.addElementWithId();
|
|
139
129
|
this.book = {
|
|
130
|
+
'translationMap': { 'en': {} },
|
|
140
131
|
'bookQuestionsMap': {
|
|
141
132
|
[this.unique_id]: {
|
|
142
133
|
'subQuestions': [],
|
|
@@ -366,12 +357,6 @@ export class FormBuilderService {
|
|
|
366
357
|
updateBook(book) {
|
|
367
358
|
this.book = book;
|
|
368
359
|
const updatedSubQuestions = book.bookQuestionsMap[this.unique_id]?.subQuestions ?? [];
|
|
369
|
-
// Update options from sqOptions if they exist
|
|
370
|
-
updatedSubQuestions.forEach(element => {
|
|
371
|
-
if (book.sqOptions?.[element.id]) {
|
|
372
|
-
element.options = book.sqOptions[element.id].options;
|
|
373
|
-
}
|
|
374
|
-
});
|
|
375
360
|
this.formElements = updatedSubQuestions;
|
|
376
361
|
this.formElementsSubject.next([...this.formElements]);
|
|
377
362
|
}
|
|
@@ -382,11 +367,11 @@ export class FormBuilderService {
|
|
|
382
367
|
let downloadFormElements = this.formElements;
|
|
383
368
|
downloadFormElements?.forEach(element => {
|
|
384
369
|
keysToTranslate.forEach(key => {
|
|
385
|
-
element[key] = translationMap.en[element.id][key] ? translationMap.en[element.id][key] : null;
|
|
370
|
+
element[key] = translationMap.en[element.id]?.[key] ? translationMap.en[element.id][key] : null;
|
|
386
371
|
});
|
|
387
372
|
if (element?.['options'] !== undefined && element?.['options'] !== null && Array.isArray(element['options'])) {
|
|
388
|
-
element['options'].forEach(opt => {
|
|
389
|
-
opt.
|
|
373
|
+
element['options'].forEach((opt) => {
|
|
374
|
+
opt.label = translationMap.en[opt.id]?.['label'];
|
|
390
375
|
});
|
|
391
376
|
}
|
|
392
377
|
if (element.type === 'Table' && element?.fieldsMeta) {
|
|
@@ -396,11 +381,11 @@ export class FormBuilderService {
|
|
|
396
381
|
element?.fieldsMeta?.forEach(field => {
|
|
397
382
|
keysToTranslate.forEach(key => {
|
|
398
383
|
if (key !== 'question')
|
|
399
|
-
field[key] = translationMap.en[field.uniqueIdentifier][key];
|
|
384
|
+
field[key] = translationMap.en[field.uniqueIdentifier]?.[key];
|
|
400
385
|
});
|
|
401
386
|
if (field?.question?.['options'] !== undefined && field?.question?.['options'] !== null && Array.isArray(field?.question?.['options'])) {
|
|
402
387
|
field.question['options'].forEach(opt => {
|
|
403
|
-
opt.
|
|
388
|
+
opt.label = translationMap.en[opt.id]?.['label'];
|
|
404
389
|
});
|
|
405
390
|
}
|
|
406
391
|
});
|
|
@@ -408,7 +393,7 @@ export class FormBuilderService {
|
|
|
408
393
|
});
|
|
409
394
|
let downloadBook = this.book;
|
|
410
395
|
downloadBook?.questionbook?.action?.forEach((act) => {
|
|
411
|
-
act.name = translationMap.en[act.id]['name'];
|
|
396
|
+
act.name = translationMap.en[act.id]?.['name'];
|
|
412
397
|
});
|
|
413
398
|
// SKS28MAR25 remove qbReferenceQuestions for download time and subtext to convert too string
|
|
414
399
|
downloadFormElements.forEach(element => {
|
|
@@ -445,17 +430,6 @@ export class FormBuilderService {
|
|
|
445
430
|
});
|
|
446
431
|
downloadBook.bookQuestionsMap[Object.keys(this.book.bookQuestionsMap)[0]].subQuestions = downloadFormElements;
|
|
447
432
|
console.log('book', downloadBook);
|
|
448
|
-
let tempElement = {};
|
|
449
|
-
downloadFormElements.forEach((element) => {
|
|
450
|
-
if (element.type === 'Dropdown' || element.type === 'Radio' || element.type === 'Checkbox') {
|
|
451
|
-
//AP 25FEB25 - Store the entire question with its options under its ID
|
|
452
|
-
tempElement[element.id] = {
|
|
453
|
-
...element,
|
|
454
|
-
options: element.options || []
|
|
455
|
-
};
|
|
456
|
-
}
|
|
457
|
-
});
|
|
458
|
-
downloadBook.sqOptions = tempElement;
|
|
459
433
|
return downloadBook;
|
|
460
434
|
}
|
|
461
435
|
// AP-06MAR25 - Element new order update
|
|
@@ -497,4 +471,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
497
471
|
providedIn: 'root',
|
|
498
472
|
}]
|
|
499
473
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
500
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyL2Zvcm0tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQTJEbkQsTUFBTSxPQUFPLGtCQUFrQjtJQW1CVDtJQWxCWixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7SUFDN0Qsc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNyRCxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQU07SUFDVixTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELGNBQWMsQ0FBTTtJQUNwQixpQkFBaUIsQ0FBTTtJQUN2Qix5RUFBeUU7SUFFekUsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNsQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDbEUsNkNBQTZDO1FBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNYLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLDBDQUEwQztnQkFDeEYsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUcsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUM7Z0JBQzVHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9CLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQzt3QkFDNUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUE7b0JBQy9CLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUE7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFFaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUM1RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksY0FBYyxHQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sZUFBZSxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxRSxjQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzVGLGNBQWMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBRyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztnQkFDNUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ25GLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDNUQsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDakQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFDRCxJQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQztnQkFDbEQsSUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLE9BQU8sT0FBTyxFQUFFLFVBQVUsS0FBSyxRQUFRLEVBQUMsQ0FBQztvQkFDakYsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtnQkFDdEQsQ0FBQztnQkFDRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDbkMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQy9DLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDOzRCQUN0RixJQUFHLEdBQUcsS0FBSyxVQUFVO2dDQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNyRixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQzt3QkFDdEksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3RDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dDQUNuRixjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQzVELGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7NEJBQ2pELENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUE7b0JBQ0osQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwRCxJQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFDLEVBQUUsQ0FBQTtZQUMzRCxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGNBQWMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFlBQVksQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sd0NBQXdDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVBLDJDQUEyQztJQUMzQyxnQkFBZ0I7UUFDZixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsZ0VBQWdFLENBQUM7UUFDL0UsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUNELDJGQUEyRjtJQUMzRiwrQkFBK0IsQ0FBQyxNQUFXLEVBQUMsTUFBYztRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUcsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFLLElBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1Ysa0JBQWtCLEVBQUU7Z0JBQ2xCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNoQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLE1BQU07aUJBQ2Y7YUFDRjtZQUNELGNBQWMsRUFBRTtnQkFDZCxRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsTUFBTSxFQUFFLFFBQVE7d0JBQ2hCLGFBQWEsRUFBRSxPQUFPO3dCQUN0QixLQUFLLEVBQUUsRUFBRTt3QkFDVCxpQkFBaUIsRUFBRSxDQUFDO3dCQUNwQixPQUFPLEVBQUUsR0FBRzt3QkFDWixXQUFXLEVBQUUsU0FBUzt3QkFDdEIsY0FBYyxFQUFFLENBQUM7d0JBQ2pCLElBQUksRUFBRSxDQUFDO3FCQUVSO29CQUNEO3dCQUNFLE1BQU0sRUFBRSxNQUFNO3dCQUNkLGFBQWEsRUFBRSxRQUFRO3dCQUN2QixLQUFLLEVBQUUsRUFBRTt3QkFDVCxVQUFVLEVBQUUsRUFBRTt3QkFDZCxRQUFRLEVBQUUsTUFBTTt3QkFDaEIsaUJBQWlCLEVBQUUsRUFBRTt3QkFDckIsT0FBTyxFQUFFLEdBQUc7d0JBQ1osV0FBVyxFQUFFLFNBQVM7d0JBQ3RCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLEVBQUUsQ0FBQztxQkFDUjtpQkFDRjthQUNGO1lBQ0QsU0FBUyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUNwQixPQUFPLEVBQUUsVUFBVTtvQkFDbkIsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUNyQixDQUFDO1NBQ0gsQ0FBQTtJQUNILENBQUM7SUFDRCx3Q0FBd0M7SUFDeEMsYUFBYTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxzQ0FBc0M7SUFDdEMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUEyQjtRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsVUFBVSxDQUFDLE9BQW9CO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7UUFDakQsQ0FBQztRQUNELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUNuTSxDQUFDO0lBQ0QsK0JBQStCO0lBQy9CLGVBQWUsQ0FBQyxPQUFZLEVBQUUsR0FBUTtRQUNwQyx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUNqQyx1QkFBdUI7UUFDdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLHFEQUFxRDtRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksY0FBYyxHQUFHO1lBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDMUIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsS0FBSztZQUNwQixVQUFVLEVBQUUsS0FBSztZQUNqQixPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDckIsUUFBUSxFQUFFLEtBQUs7WUFDZixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUM1QixRQUFRLEVBQUM7Z0JBQ1AsS0FBSyxFQUFFO29CQUNMLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsU0FBUyxFQUFFLElBQUk7b0JBQ2YsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLGFBQWEsRUFBRSxJQUFJO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLElBQUk7b0JBQ1gsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZ0JBQWdCLEVBQUUsS0FBSztvQkFDdkIsY0FBYyxFQUFFLElBQUk7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2dCQUNELE9BQU8sRUFDUCxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVU7b0JBQ2hGLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJO2FBQ2I7U0FDRixDQUFDO1FBQ0YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV6UixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNuRSxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsb0JBQW9CO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLE9BQTZCO1FBQ3hELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRztnQkFDaEIsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNsQixHQUFHLE9BQU87Z0JBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFO2FBQzFELENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkQsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0JBQzNCLEdBQUcsT0FBTzthQUNYLENBQUM7WUFDRixJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ25DLElBQUksY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNoQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3hFLGNBQWMsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUN0RixDQUFDO2dCQUNELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO29CQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0csY0FBYyxDQUFDLFlBQVksR0FBRyxHQUFHLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQztZQUNuRSxDQUFDO2lCQUFNLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxLQUFLLElBQUksY0FBYyxDQUFDLFlBQVksSUFBSSxjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsSCxjQUFjLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQztZQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0RCwyRUFBMkU7UUFDN0UsQ0FBQztRQUNELElBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDbk0sQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUNELDJDQUEyQztJQUMzQyx1QkFBdUIsQ0FBQyxLQUFVLEVBQUUsS0FBVTtRQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pLLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMzSyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxFQUFFLGdCQUFnQixDQUFBO1FBQ3BELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELDBCQUEwQixDQUFDLEtBQWEsRUFBRSxLQUFVO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkssNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDNUgsMkJBQTJCO1lBQzNCLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFDRCwyQ0FBMkM7SUFDM0Msb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBVTtRQUN0QiwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7U0FDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ0QsbUJBQW1CO1FBQ2pCLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCw0Q0FBNEM7SUFDNUMsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7UUFFdEYsOENBQThDO1FBQzlDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLGVBQWU7UUFDYixJQUFJLGNBQWMsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUNsRCxNQUFNLGVBQWUsR0FBRyxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUM1QyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBRyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztnQkFDNUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0IsR0FBRyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBRTtnQkFDbEQsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1lBQ0QsSUFBRyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLEVBQUUsVUFBVSxFQUFDLENBQUM7Z0JBQ2xELElBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxPQUFPLE9BQU8sRUFBRSxVQUFVLEtBQUssUUFBUSxFQUFDLENBQUM7b0JBQ2pGLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7Z0JBQ3RELENBQUM7Z0JBQ0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ25DLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLElBQUcsR0FBRyxLQUFLLFVBQVU7NEJBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JGLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQzt3QkFDdEksS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3RDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pELENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQzVCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3ZELEdBQUcsQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUE7UUFDRiw2RkFBNkY7UUFDN0Ysb0JBQW9CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxPQUFPLENBQUMsb0JBQW9CLENBQUM7WUFDdEMsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQyxDQUFDO2dCQUNuQixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNHLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUVyRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDOzRCQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ25FLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNqQyxJQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFDLENBQUM7NEJBQzNCLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDOUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQzFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7b0NBQzlCLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0NBQzFFLENBQUM7NEJBQ0gsQ0FBQyxDQUFDLENBQUM7d0JBQ0wsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQyxDQUFDO2dCQUNuQixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sT0FBTyxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakgsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1FBQzlHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLElBQUksV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUUxQixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzNGLHNFQUFzRTtnQkFDdEUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRztvQkFDeEIsR0FBRyxPQUFPO29CQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7aUJBQy9CLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxZQUFZLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUNyQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBQ0Qsd0NBQXdDO0lBQ3hDLG1CQUFtQixDQUFDLGVBQThCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCwwQkFBMEI7SUFDMUIsdURBQXVEO0lBQ3ZELHNCQUFzQixDQUFDLEVBQU87UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ3pDLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xDLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFBO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzt3R0EzZlUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbnRlcmZhY2UgRm9ybUVsZW1lbnQge1xuICBhY3Rpb246IGFueTtcbiAgaWQ6IGFueTtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBhbnk7XG4gIHF1ZXN0aW9uVGV4dD86IHN0cmluZztcbiAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgcmVmZXJlbmNlRmllbGQ/OiBhbnk7XG4gIGFkZGl0aW9uYWxSaWNoQ29udGVudD86IGFueTtcbiAgZ3JvdXBOYW1lPzogYW55O1xuICBpc0RhdGVCYWNrd2FyZD86IGJvb2xlYW47XG4gIHRpdGxlPzogYW55O1xuICBzdWJUaXRsZT86IGFueTtcbiAgc2l6ZT86IG51bWJlcjtcbiAgaXNEYXRlRm9yd2FyZD86IGJvb2xlYW47XG4gIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICBpc1RpdGxlPzogYm9vbGVhbjtcbiAgbmV4dFF1ZXN0aW9uPzogYW55O1xuICBhbGxvd2VkRmlsZUV4dGVuc2lvbnM/OiBhbnk7XG4gIHF1ZXN0aW9uTnVtYmVyPzogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbkJvb2tJZD86IGFueTtcbiAgZmllbGRzTWV0YT86IGFueTtcbiAgdHJhY2tpbmdJZD86IGFueTtcbiAgcmVjb3JkSWQ/OiBhbnk7XG4gIHFiUmVmZXJlbmNlPzogYW55O1xuICBxYlJlZmVyZW5jZVF1ZXN0aW9ucz86IGFueTtcbiAgcHJpbWFyeUtleTogYm9vbGVhbixcbiAgc3R5bGU6IHtcbiAgICBsYWJlbENsYXNzOiBhbnksXG4gICAgbGFiZWxTdHlsZTogYW55LFxuICAgIGxhYmVsVmFsdWVTdHlsZTogYW55LFxuICAgIGlucHV0Q2xhc3M6IGFueSxcbiAgICBpbnB1dFN0eWxlOiBhbnksXG4gICAgc2hvd0xhYmVsOiBib29sZWFuLFxuICAgIGJvb2tTdHlsZTogYW55LFxuICAgIGRpcmVjdGlvbjogYW55LFxuICAgIHF1ZXN0aW9uU3R5bGU6IGFueSxcbiAgfSxcbiAgICAvLyBBUCAyNUZFQjI1IC0gb3B0aW9ucyBhcnJheVxuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogYW55O1xuICAgIGlkOiBhbnk7XG4gIH0+O1xuICBzdWJUZXh0OiBhbnlcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclNlcnZpY2Uge1xuICBwcml2YXRlIGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGZvcm1FbGVtZW50c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FbGVtZW50W10+KFtdKTtcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcbiAgcHJpdmF0ZSBzZWxlY3RIZWFkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGFjdGlvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgZWxlbWVudENvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBib29rOiBhbnk7XG4gIHVuaXF1ZV9pZDogYW55O1xuICB0ZW1wRWxlbTogYW55W107XG5cbiAgZm9ybUVsZW1lbnRzJCA9IHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0ZWRFbGVtZW50JCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0SGVhZGVyU3ViamVjdCQgPSB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGFjdGlvblN1YmplY3QkID0gdGhpcy5hY3Rpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBjdXJyZW50RWxlbWVudDogYW55O1xuICBzZWxlY3RUYWJsZUNvbHVtbjogYW55O1xuICAvLyBib29rOiB7IGJvb2tRdWVzdGlvbnNNYXA6IHsgdW5pcXVlX2lkOiB7IHN1YlF1ZXN0aW9uczogYW55W107IH07IH07IH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XG4gICAgaWYgKHNhdmVkRm9ybUVsZW1lbnRzKSB7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IEpTT04ucGFyc2Uoc2F2ZWRGb3JtRWxlbWVudHMpO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgfVxuICB9XG4gXG4gIGludGlhbGl6ZUJvb2soYm9vazogYW55KSB7XG4gICAgLy8gQVAgMTNNQVIyNSAtIEdldCB0aGUgdW5pcXVlIGlkIGluIHRoZSBib29rUXVlc3Rpb25zTWFwIFxuICAgIHRoaXMudW5pcXVlX2lkID0gT2JqZWN0LmtleXMoYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXTtcbiAgICBsZXQgdGVtcGJvb2sgPSBib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdLnN1YlF1ZXN0aW9ucztcbiAgICAvLyBTS1MyOE1BUjI1IHVwZGF0ZSBuZXN0ZWQgYm9vayBRdWVzdGlvbnNNYXBcbiAgICB0ZW1wYm9vay5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImJvb2tcIiAmJiBlbGVtZW50LnFiUmVmZXJlbmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0UmVmUWJEYXRhKGVsZW1lbnQucWJSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ3FiUmVmZXJlbmNlUXVlc3Rpb25zJ10gPSByZXNwb25zZTsgLy8gQXNzaWduIHJlc3BvbnNlIHRvIHFiUmVmZXJlbmNlUXVlc3Rpb25zXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBUEkgRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZihlbGVtZW50Py5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQ/Llsnb3B0aW9ucyddICE9PSBudWxsICYmICBBcnJheS5pc0FycmF5KGVsZW1lbnRbJ29wdGlvbnMnXSkpe1xuICAgICAgICBlbGVtZW50WydvcHRpb25zJ10uZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgIGlmIChvcHQuaWQgIT09IHVuZGVmaW5lZCAmJiBvcHQuaWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIG9wdC5pZCA9IG9wdC51bmlxdWVJZGVudGlmaWVyXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIGJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGVtcGJvb2tcbiAgICB0aGlzLmJvb2sgPSBib29rXG5cbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0/LnN1YlF1ZXN0aW9ucz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmICh0aGlzLmJvb2suc3FPcHRpb25zPy5bZWxlbWVudC5pZF0pIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5ib29rLnNxT3B0aW9uc1tlbGVtZW50LmlkXS5vcHRpb25zO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIGxldCB0cmFuc2xhdGlvbk1hcDogYW55ID0geyBlbjoge30gfTtcbiAgICBjb25zdCBrZXlzVG9UcmFuc2xhdGUgPSBbJ3F1ZXN0aW9uVGV4dCcsICdoZWxwVGV4dCcsICdxdWVzdGlvbicsICdsYWJlbCddO1xuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF0gPSB7fTsgXG4gICAgICBrZXlzVG9UcmFuc2xhdGUuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudFtrZXldICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudFtrZXldICE9PSBudWxsICYmIHR5cGVvZiBlbGVtZW50W2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF1ba2V5XSA9IGVsZW1lbnRba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZihlbGVtZW50Py5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQ/Llsnb3B0aW9ucyddICE9PSBudWxsICYmICBBcnJheS5pc0FycmF5KGVsZW1lbnRbJ29wdGlvbnMnXSkpe1xuICAgICAgICBlbGVtZW50WydvcHRpb25zJ10uZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgIGlmIChvcHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHQudmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIG9wdC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW29wdC5pZF0gPSB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdID8/IHt9O1xuICAgICAgICAgICAgdHJhbnNsYXRpb25NYXAuZW5bb3B0LmlkXVsndmFsdWUnXSA9IG9wdC52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdUYWJsZScgJiYgZWxlbWVudD8uZmllbGRzTWV0YSl7XG4gICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGVsZW1lbnQ/LmZpZWxkc01ldGEpICYmIHR5cGVvZiBlbGVtZW50Py5maWVsZHNNZXRhID09PSAnc3RyaW5nJyl7XG4gICAgICAgICAgZWxlbWVudC5maWVsZHNNZXRhID0gSlNPTi5wYXJzZShlbGVtZW50Py5maWVsZHNNZXRhKVxuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnQ/LmZpZWxkc01ldGE/LmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW2ZpZWxkLnVuaXF1ZUlkZW50aWZpZXJdID0ge307IFxuICAgICAgICAgIGtleXNUb1RyYW5zbGF0ZS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGRba2V5XSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGZpZWxkW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmKGtleSAhPT0gJ3F1ZXN0aW9uJykgdHJhbnNsYXRpb25NYXAuZW5bZmllbGQudW5pcXVlSWRlbnRpZmllcl1ba2V5XSA9IGZpZWxkW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkPy5xdWVzdGlvbj8uWydvcHRpb25zJ10gIT09IG51bGwgJiYgIEFycmF5LmlzQXJyYXkoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSkpe1xuICAgICAgICAgICAgZmllbGQucXVlc3Rpb25bJ29wdGlvbnMnXS5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgIGlmIChvcHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHQudmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIG9wdC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdID0gdHJhbnNsYXRpb25NYXAuZW5bb3B0LmlkXSA/PyB7fTtcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdWyd2YWx1ZSddID0gb3B0LnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ib29rPy5xdWVzdGlvbmJvb2s/LmFjdGlvbj8uZm9yRWFjaCgoYWN0OiBhbnkpID0+e1xuICAgICAgaWYoIXRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF0pIHRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF09e31cbiAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF1bJ25hbWUnXSA9IGFjdC5uYW1lO1xuICAgIH0pXG4gICAgdGhpcy5ib29rWyd0cmFuc2xhdGlvbk1hcCddID0gdHJhbnNsYXRpb25NYXBcbiAgfVxuXG4gIC8vU0tTMjhNQVIyNSBGdW5jdGlvbiB0byBmZXRjaCByZWZxYiBkYXRhXG4gIGdldFJlZlFiRGF0YShyZWZxYmlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYGh0dHBzOi8vZGV2LWFwaS52YWxhcmhyLmNvbS9ueHQ/bmFtZT0ke3JlZnFiaWR9YCk7XG4gIH1cblxuICAgLy9BUC0xN0FQUjI1IEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHVuaXF1ZSBpZFxuICAgYWRkRWxlbWVudFdpdGhJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9ICduZ254dCc7IFxuICAgIGNvbnN0IGNoYXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBsZXQgY29yZSA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTQ7IGkrKykge1xuICAgICAgY29yZSArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXggKyBjb3JlOyBcbiAgfVxuICAvLyBBUCAyM01BWTI1IFVwZGF0ZXMgdGhlIHF1ZXN0aW9uYm9vayBhY3Rpb24gYnV0dG9uczogYWRkcyBvciByZW1vdmVzIGJhc2VkIG9uIGFjdGlvbiB0eXBlXG4gIHVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnV0dG9uOiBhbnksYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYm9vay5xdWVzdGlvbmJvb2spIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2sgPSB7fTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAnYWRkJykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24ucHVzaChidXR0b24pO1xuICAgIH1lbHNlIGlmKGFjdGlvbiA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uID0gdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQgIT09IGJ1dHRvbi5pZCk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uU3ViamVjdC5uZXh0KHRoaXMuYm9vayk7XG4gIH1cbiAgXG4gIG5ld0Jvb2soKSB7XG4gICAgdGhpcy51bmlxdWVfaWQgPSB0aGlzLmFkZEVsZW1lbnRXaXRoSWQoKTtcbiAgICB0aGlzLmJvb2sgPSB7XG4gICAgICAnYm9va1F1ZXN0aW9uc01hcCc6IHtcbiAgICAgICAgW3RoaXMudW5pcXVlX2lkXToge1xuICAgICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXSxcbiAgICAgICAgICAndHlwZSc6ICdCb29rJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ3F1ZXN0aW9uYm9vayc6IHtcbiAgICAgICAgXCJhY3Rpb25cIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhbmNlbFwiLFxuICAgICAgICAgICAgXCJldmVudHRvZW1pdFwiOiBcImNsb3NlXCIsXG4gICAgICAgICAgICBcImFsdFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJwb3NpdGlvblBlcmNlbnRcIjogMyxcbiAgICAgICAgICAgIFwid2lkdGhcIjogMTAwLFxuICAgICAgICAgICAgXCJ0ZXh0Q29sb3JcIjogXCIjZmZmZmZmXCIsXG4gICAgICAgICAgICBcImJvcmRlclJhZGl1c1wiOiA2LFxuICAgICAgICAgICAgJ2lkJzogMSxcblxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2F2ZVwiLFxuICAgICAgICAgICAgXCJldmVudHRvZW1pdFwiOiBcInN1Ym1pdFwiLFxuICAgICAgICAgICAgXCJhbHRcIjogXCJcIixcbiAgICAgICAgICAgIFwiZW5kcG9pbnRcIjogXCJcIixcbiAgICAgICAgICAgIFwibWV0aG9kXCI6IFwiUE9TVFwiLFxuICAgICAgICAgICAgXCJwb3NpdGlvblBlcmNlbnRcIjogMTQsICBcbiAgICAgICAgICAgIFwid2lkdGhcIjogMTAwLFxuICAgICAgICAgICAgXCJ0ZXh0Q29sb3JcIjogXCIjZmZmZmZmXCIsXG4gICAgICAgICAgICBcImJvcmRlclJhZGl1c1wiOiA2LFxuICAgICAgICAgICAgJ2lkJzogMSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAncmVjb3Jkcyc6IFt7XG4gICAgICAgICdpZCc6IHRoaXMudW5pcXVlX2lkLFxuICAgICAgICAndGl0bGUnOiAnVW50aXRsZWQnLFxuICAgICAgICAnc3ViUXVlc3Rpb25zJzogW3t9XVxuICAgICAgfV1cbiAgICB9XG4gIH1cbiAgLy8gQVAgMjZGRUIyNSAtIGNsZWFyIHRoZSBmb3JtIGVsZW1lbnRzIFxuICBjbGVhckVsZW1lbnRzKCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gR2V0IHRoZSBlbGVtZW50IGNvbXBvbmVudCByZWZlcmVuY2VcbiAgZ2V0RWxlbWVudENvbXBvbmVudCgpOiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudENvbXBvbmVudDtcbiAgfVxuXG4gIHNldEVsZW1lbnRDb21wb25lbnQoY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgdGhpcy5lbGVtZW50Q29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgLy8gQWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGZvcm1cbiAgYWRkRWxlbWVudChlbGVtZW50OiBGb3JtRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghZWxlbWVudC5vcHRpb25zKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSBbXTsgLy8gb3B0aW9ucyBpcyBpbml0aWFsaXplZFxuICAgIH1cbiAgICBlbGVtZW50WydxdWVzdGlvbkJvb2tJZCddID0gdGhpcy51bmlxdWVfaWQ7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICBpZih0aGlzLmJvb2s/LmJvb2tRdWVzdGlvbnNNYXBbT2JqZWN0LmtleXModGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdXT8uc3ViUXVlc3Rpb25zKSB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFtPYmplY3Qua2V5cyh0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcClbMF1dLnN1YlF1ZXN0aW9ucyA9IHRoaXMuZm9ybUVsZW1lbnRzXG4gIH1cbiAgLy8gU0tTMTNNQVIyNSBhZGQgdGFibGUgZWxlbWVudFxuICBhZGRUYWJsZUVsZW1lbnQoZWxlbWVudDogYW55LCBpbmQgOmFueSkge1xuICAgIC8vU0tTMTNNQVIyNSBFbnN1cmUgY3VycmVudEVsZW1lbnQgZXhpc3RzXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuXG4gICAgLy8gU0tTMTNNQVIyNSBGaW5kIHRoZSBlbGVtZW50IGFuZCB1cGRhdGUgaXRzIGNvbHVtbnNcbiAgICBjb25zdCBpbmRleCA9IGVsZW1lbnRzLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0gdGhpcy5jdXJyZW50RWxlbWVudC5pZCk7XG5cbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7XG4gICAgICBsYWJlbDogZWxlbWVudC5sYWJlbCxcbiAgICAgIGFwaU5hbWU6IGVsZW1lbnQuZmllbGROYW1lLFxuICAgICAgaXNkZWxldGVkOiBmYWxzZSxcbiAgICAgIG9yZGVyYnlmbGFnOiBmYWxzZSxcbiAgICAgIGZpbHRlcmZsYWc6IGZhbHNlLFxuICAgICAgb3V0cHV0RmxhZzogdHJ1ZSxcbiAgICAgIGlzY2hpbGQ6IGZhbHNlLFxuICAgICAgcmVzdWx0YW50ZmxhZzogZmFsc2UsXG4gICAgICBzZWFyY2hmbGFnOiBmYWxzZSxcbiAgICAgIGZsZFR5cGU6IGVsZW1lbnQudHlwZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHVuaXF1ZUlkZW50aWZpZXI6IGVsZW1lbnQuaWQsXG4gICAgICBxdWVzdGlvbjp7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgbGFiZWxDbGFzczogbnVsbCxcbiAgICAgICAgICBsYWJlbFN0eWxlOiBudWxsLFxuICAgICAgICAgIGxhYmVsVmFsdWVTdHlsZTogbnVsbCxcbiAgICAgICAgICBpbnB1dENsYXNzOiBudWxsLFxuICAgICAgICAgIGlucHV0U3R5bGU6IG51bGwsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICAgIGJvb2tTdHlsZTogbnVsbCxcbiAgICAgICAgICBkaXJlY3Rpb246IFwibHRyXCIsXG4gICAgICAgICAgcXVlc3Rpb25TdHlsZTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgc3ViVGV4dDoge1xuICAgICAgICAgIGVuZHBvaW50OiBudWxsLFxuICAgICAgICAgIHZhcmlhYmxlOiBudWxsLFxuICAgICAgICAgIGZpZWxkOiBudWxsLFxuICAgICAgICAgIGRlZmF1bHRGaWVsZDogbnVsbCxcbiAgICAgICAgICBzb3VyY2VRdWVzdGlvbklkOiBudWxsLFxuICAgICAgICAgIHZhbHVlRmllbGQ6IG51bGwsXG4gICAgICAgICAgbGFiZWxGaWVsZDogbnVsbCxcbiAgICAgICAgICBpc0RlcGVuZGVudEZpZWxkOiBmYWxzZSxcbiAgICAgICAgICBkZXBlbmRlbnRWYWx1ZTogbnVsbCxcbiAgICAgICAgICBxdWVyeUZpZWxkOiBudWxsLFxuICAgICAgICAgIHF1ZXJ5VmFsdWU6IG51bGwsXG4gICAgICAgICAgcXVlcnlWYWx1ZVJlZmVyZW5jZTogbnVsbCxcbiAgICAgICAgICB1bmlxdWVLZXk6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6XG4gICAgICAgIGVsZW1lbnQudHlwZSA9PT0gXCJEcm9wZG93blwiIHx8IGVsZW1lbnQudHlwZSA9PT0gXCJSYWRpb1wiIHx8IGVsZW1lbnQudHlwZSA9PT0gXCJDaGVja2JveFwiXG4gICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgfVxuICAgIH07ICAgIFxuICAgIGxldCBmaWVsZHNNZXRhID0gWy4uLihBcnJheS5pc0FycmF5KHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhKSA/IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhIDogKHR5cGVvZiB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSA9PT0gJ3N0cmluZycgPyAoSlNPTi5wYXJzZSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkpIDogW3RoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhXSkpLCB0ZW1wRmllbGRzTWV0YV07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgZmllbGRzTWV0YTogZmllbGRzTWV0YSB9O1xuICAgIH1cblxuICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgZm9ybSBlbGVtZW50c1xuICAgIC8vIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi5lbGVtZW50c10pO1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZCk7XG4gICAgLy8gTG9nIGZvciBkZWJ1Z2dpbmdcbiAgfVxuXG4gIHVwZGF0ZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgdXBkYXRlczogUGFydGlhbDxGb3JtRWxlbWVudD4pIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHtcbiAgICAgICAgLi4uZWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgICBvcHRpb25zOiB1cGRhdGVzLm9wdGlvbnMgfHwgZWxlbWVudHNbaW5kZXhdLm9wdGlvbnMgfHwgW10sXG4gICAgICB9O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoZWxlbWVudHMpO1xuICAgIH1cblxuICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5mb3JtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRWxlbWVudCA9IHtcbiAgICAgICAgLi4udGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzXG4gICAgICB9O1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0KSB7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnJlcGxhY2UoL1xccypcXCorJC8sICcnKTtcbiAgICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSB1cGRhdGVzLnJlcXVpcmVkID8gYCR7cXVlc3Rpb25UZXh0fSAqYCA6IHF1ZXN0aW9uVGV4dDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICAgICAgZWxlbWVudHNbaW5kZXhdID0geyAuLi5lbGVtZW50c1tpbmRleF0sIC4uLnVwZGF0ZXMgfTtcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBzcGVjaWFsIGNhc2VzXG4gICAgICBpZiAodXBkYXRlcy5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgIXVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5lbmRzV2l0aCgnKicpKSB7XG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IGAke3VwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dH0gKmA7XG4gICAgICB9IGVsc2UgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IGZhbHNlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuc2xpY2UoMCwgLTIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0gPSB1cGRhdGVkRWxlbWVudDtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgfVxuICAgIGlmKHRoaXMuYm9vaz8uYm9va1F1ZXN0aW9uc01hcFtPYmplY3Qua2V5cyh0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcClbMF1dPy5zdWJRdWVzdGlvbnMpIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW09iamVjdC5rZXlzKHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXV0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHNcbiAgfVxuICB1cGRhdGVUaXRsZShldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIG9mIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIGJvb2sgIFxuICAgIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG4gIH1cbiAgc2V0U2VsZWN0ZWRFbGVtZW50KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBzZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBzZXRTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogYW55LCBldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmN1cnJlbnRFbGVtZW50LmZpZWxkc01ldGEpO1xuICAgIH1cbiAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnID8gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmQoaXRlbSA9PiBpdGVtWyd1bmlxdWVJZGVudGlmaWVyJ10gPT09IGV2ZW50Py51bmlxdWVJZGVudGlmaWVyKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gZm91bmRJdGVtPy51bmlxdWVJZGVudGlmaWVyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICB9XG4gIHJlbW92ZVNlbGVjdGVkVGFibGVFbGVtZW50KGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuY3VycmVudEVsZW1lbnQuZmllbGRzTWV0YSk7XG4gICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgaXRlbVxuICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bJ3VuaXF1ZUlkZW50aWZpZXInXSA9PT0gZXZlbnQ/LnVuaXF1ZUlkZW50aWZpZXIpO1xuICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGlmIGZvdW5kXG4gICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gICAgdGhpcy5lbGVtZW50VXBkYXRlKGluZGV4LCB0aGlzLmN1cnJlbnRFbGVtZW50KVxuICB9XG4gIC8vIFNLUzE5TUFSMjUgZ2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgZ2V0U2VsZWN0VGFibGVDb2x1bW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0VGFibGVDb2x1bW47XG4gIH1cbiAgc2VsZWN0SGVhZGluZyhldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IEVtaXRzIHRoZSBzZWxlY3RlZCBoZWFkaW5nIGV2ZW50ICBcbiAgICB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QubmV4dChldmVudCk7XG4gIH1cblxuXG4gIGdldEVsZW1lbnRzKCk6IEZvcm1FbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbGVtZW50cy5tYXAoZWxlbWVudCA9PiAoe1xuICAgICAgLi4uZWxlbWVudCxcbiAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXSxcbiAgICB9KSk7XG4gIH1cbiAgc29ydEVsZW1lbnRzQnlPcmRlcigpOiB2b2lkIHtcbiAgICAvL0FQLTEwTUFSMjUgU29ydCBlbGVtZW50cyBieSBjdXJyZW50IG9yZGVyXG4gICAgdGhpcy5mb3JtRWxlbWVudHMuc29ydCgoYSwgYikgPT4gYS5xdWVzdGlvbk51bWJlciAtIGIucXVlc3Rpb25OdW1iZXIpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBlbGVtZW50LnF1ZXN0aW9uTnVtYmVyID0gaW5kZXggKyAxO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vQVAtMTBNQVIyNSBSZXR1cm5zIHRoZSBjdXJyZW50IGJvb2sgZGF0YSAgXG4gIGdldEJvb2soKSB7XG4gICAgcmV0dXJuIHRoaXMuYm9vaztcbiAgfVxuICB1cGRhdGVCb29rKGJvb2s6IGFueSkge1xuICAgIHRoaXMuYm9vayA9IGJvb2s7XG4gIFxuICAgIGNvbnN0IHVwZGF0ZWRTdWJRdWVzdGlvbnMgPSBib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdPy5zdWJRdWVzdGlvbnMgPz8gW107XG4gIFxuICAgIC8vIFVwZGF0ZSBvcHRpb25zIGZyb20gc3FPcHRpb25zIGlmIHRoZXkgZXhpc3RcbiAgICB1cGRhdGVkU3ViUXVlc3Rpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoYm9vay5zcU9wdGlvbnM/LltlbGVtZW50LmlkXSkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSBib29rLnNxT3B0aW9uc1tlbGVtZW50LmlkXS5vcHRpb25zO1xuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IHVwZGF0ZWRTdWJRdWVzdGlvbnM7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgXG4gIC8vIEluIEZvcm1CdWlsZGVyU2VydmljZVxuICBkb3dubG9hZEVsZW1lbnQoKSB7XG4gICAgbGV0IHRyYW5zbGF0aW9uTWFwOiBhbnkgPSB0aGlzLmJvb2sudHJhbnNsYXRpb25NYXBcbiAgICBjb25zdCBrZXlzVG9UcmFuc2xhdGUgPSBbJ3F1ZXN0aW9uVGV4dCcsICdoZWxwVGV4dCcsICdxdWVzdGlvbicsICdsYWJlbCddO1xuICAgIGxldCBkb3dubG9hZEZvcm1FbGVtZW50cyA9IHRoaXMuZm9ybUVsZW1lbnRzXG4gICAgZG93bmxvYWRGb3JtRWxlbWVudHM/LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBrZXlzVG9UcmFuc2xhdGUuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVsZW1lbnRba2V5XSA9IHRyYW5zbGF0aW9uTWFwLmVuW2VsZW1lbnQuaWRdW2tleV0gPyB0cmFuc2xhdGlvbk1hcC5lbltlbGVtZW50LmlkXVtrZXldIDogbnVsbDtcbiAgICAgIH0pO1xuICAgICAgaWYoZWxlbWVudD8uWydvcHRpb25zJ10gIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50Py5bJ29wdGlvbnMnXSAhPT0gbnVsbCAmJiAgQXJyYXkuaXNBcnJheShlbGVtZW50WydvcHRpb25zJ10pKXtcbiAgICAgICAgZWxlbWVudFsnb3B0aW9ucyddLmZvckVhY2gob3B0ID0+IHtcbiAgICAgICAgICBvcHQudmFsdWUgPSB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdWyd2YWx1ZSddIDtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmKGVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyAmJiBlbGVtZW50Py5maWVsZHNNZXRhKXtcbiAgICAgICAgaWYoIUFycmF5LmlzQXJyYXkoZWxlbWVudD8uZmllbGRzTWV0YSkgJiYgdHlwZW9mIGVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdzdHJpbmcnKXtcbiAgICAgICAgICBlbGVtZW50LmZpZWxkc01ldGEgPSBKU09OLnBhcnNlKGVsZW1lbnQ/LmZpZWxkc01ldGEpXG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudD8uZmllbGRzTWV0YT8uZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAga2V5c1RvVHJhbnNsYXRlLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmKGtleSAhPT0gJ3F1ZXN0aW9uJykgZmllbGRba2V5XSA9IHRyYW5zbGF0aW9uTWFwLmVuW2ZpZWxkLnVuaXF1ZUlkZW50aWZpZXJdW2tleV07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkPy5xdWVzdGlvbj8uWydvcHRpb25zJ10gIT09IG51bGwgJiYgIEFycmF5LmlzQXJyYXkoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSkpe1xuICAgICAgICAgICAgZmllbGQucXVlc3Rpb25bJ29wdGlvbnMnXS5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgIG9wdC52YWx1ZSA9IHRyYW5zbGF0aW9uTWFwLmVuW29wdC5pZF1bJ3ZhbHVlJ107XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGRvd25sb2FkQm9vayA9IHRoaXMuYm9va1xuICAgIGRvd25sb2FkQm9vaz8ucXVlc3Rpb25ib29rPy5hY3Rpb24/LmZvckVhY2goKGFjdDogYW55KSA9PntcbiAgICAgIGFjdC5uYW1lID0gdHJhbnNsYXRpb25NYXAuZW5bYWN0LmlkXVsnbmFtZSddO1xuICAgIH0pXG4gICAgLy8gU0tTMjhNQVIyNSByZW1vdmUgcWJSZWZlcmVuY2VRdWVzdGlvbnMgZm9yIGRvd25sb2FkIHRpbWUgYW5kIHN1YnRleHQgdG8gY29udmVydCB0b28gc3RyaW5nXG4gICAgZG93bmxvYWRGb3JtRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdib29rJykge1xuICAgICAgICBkZWxldGUgZWxlbWVudC5xYlJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5wYXJzZShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgICBjb25zdCBzdHJpbmdBcnJheUZpZWxkcyA9IFsnZmllbGQnLCdxdWVyeVBhcmFtZXRlcicsICdzb3VyY2VRdWVzdGlvbklkJywgJ3F1ZXJ5RmllbGQnLCAncXVlcnlWYWx1ZSddO1xuXG4gICAgICAgIGlmIChlbGVtZW50LnN1YlRleHQpIHtcbiAgICAgICAgICBzdHJpbmdBcnJheUZpZWxkcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQuc3ViVGV4dFtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5zdWJUZXh0W2tleV0gPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAgICAgIFxuICAgICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdUYWJsZScpe1xuICAgICAgICAgIGVsZW1lbnQuZmllbGRzTWV0YS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGlmKGZpZWxkPy5xdWVzdGlvbj8uc3ViVGV4dCl7XG4gICAgICAgICAgICAgIHN0cmluZ0FycmF5RmllbGRzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkLnF1ZXN0aW9uLnN1YlRleHRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgZmllbGQucXVlc3Rpb24uc3ViVGV4dFtrZXldID0gdmFsdWUuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoIGVsZW1lbnQuc3ViVGV4dCl7XG4gICAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IHR5cGVvZiBlbGVtZW50Py5zdWJUZXh0ICE9PSAnb2JqZWN0JyA/IGVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnN0cmluZ2lmeShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIGRvd25sb2FkQm9vay5ib29rUXVlc3Rpb25zTWFwW09iamVjdC5rZXlzKHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXV0uc3ViUXVlc3Rpb25zID0gZG93bmxvYWRGb3JtRWxlbWVudHM7XG4gICAgY29uc29sZS5sb2coJ2Jvb2snLCBkb3dubG9hZEJvb2spO1xuICAgIGxldCB0ZW1wRWxlbWVudDogYW55ID0ge307XG5cbiAgICBkb3dubG9hZEZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ1JhZGlvJyB8fCBlbGVtZW50LnR5cGUgPT09ICdDaGVja2JveCcpIHtcbiAgICAgICAgLy9BUCAyNUZFQjI1IC0gU3RvcmUgdGhlIGVudGlyZSBxdWVzdGlvbiB3aXRoIGl0cyBvcHRpb25zIHVuZGVyIGl0cyBJRFxuICAgICAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSA9IHtcbiAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZG93bmxvYWRCb29rLnNxT3B0aW9ucyA9IHRlbXBFbGVtZW50O1xuICAgIHJldHVybiBkb3dubG9hZEJvb2s7XG4gIH1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogRm9ybUVsZW1lbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQodGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG4gIC8vIFJlbW92ZSBhbiBlbGVtZW50IGJ5IElEXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcbiAgcmVtb3ZlRWxlbWVudENvbXBvbmVudChpZDogYW55KSB7XG4gICAgdGhpcy50ZW1wRWxlbSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB7fVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IHRoaXMudGVtcEVsZW07XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZShpbmRleDogYW55LCBlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgIGVsZW1lbnRzW2luZGV4XSA9IGVsZW1lbnRcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
474
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyL2Zvcm0tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQTREbkQsTUFBTSxPQUFPLGtCQUFrQjtJQW1CVDtJQWxCWixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7SUFDN0Qsc0JBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNyRCxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQU07SUFDVixTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELGNBQWMsQ0FBTTtJQUNwQixpQkFBaUIsQ0FBTTtJQUN2Qix5RUFBeUU7SUFFekUsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxH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S0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFBO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzt3R0E1ZFUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbnRlcmZhY2UgRm9ybUVsZW1lbnQge1xuICBhY3Rpb246IGFueTtcbiAgaWQ6IGFueTtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBhbnk7XG4gIHF1ZXN0aW9uVGV4dD86IHN0cmluZztcbiAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgcmVmZXJlbmNlRmllbGQ/OiBhbnk7XG4gIGFkZGl0aW9uYWxSaWNoQ29udGVudD86IGFueTtcbiAgZ3JvdXBOYW1lPzogYW55O1xuICBpc0RhdGVCYWNrd2FyZD86IGJvb2xlYW47XG4gIHRpdGxlPzogYW55O1xuICBzdWJUaXRsZT86IGFueTtcbiAgc2l6ZT86IG51bWJlcjtcbiAgaXNEYXRlRm9yd2FyZD86IGJvb2xlYW47XG4gIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICBpc1RpdGxlPzogYm9vbGVhbjtcbiAgbmV4dFF1ZXN0aW9uPzogYW55O1xuICBhbGxvd2VkRmlsZUV4dGVuc2lvbnM/OiBhbnk7XG4gIHF1ZXN0aW9uTnVtYmVyPzogbnVtYmVyO1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbkJvb2tJZD86IGFueTtcbiAgZmllbGRzTWV0YT86IGFueTtcbiAgdHJhY2tpbmdJZD86IGFueTtcbiAgcmVjb3JkSWQ/OiBhbnk7XG4gIHFiUmVmZXJlbmNlPzogYW55O1xuICBxYlJlZmVyZW5jZVF1ZXN0aW9ucz86IGFueTtcbiAgcHJpbWFyeUtleTogYm9vbGVhbixcbiAgc3R5bGU6IHtcbiAgICBsYWJlbENsYXNzOiBhbnksXG4gICAgbGFiZWxTdHlsZTogYW55LFxuICAgIGxhYmVsVmFsdWVTdHlsZTogYW55LFxuICAgIGlucHV0Q2xhc3M6IGFueSxcbiAgICBpbnB1dFN0eWxlOiBhbnksXG4gICAgc2hvd0xhYmVsOiBib29sZWFuLFxuICAgIGJvb2tTdHlsZTogYW55LFxuICAgIGRpcmVjdGlvbjogYW55LFxuICAgIHF1ZXN0aW9uU3R5bGU6IGFueSxcbiAgfSxcbiAgICAvLyBBUCAyNUZFQjI1IC0gb3B0aW9ucyBhcnJheVxuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6ICBzdHJpbmc7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogYW55O1xuICAgIGlkOiBhbnk7XG4gIH0+O1xuICBzdWJUZXh0OiBhbnlcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclNlcnZpY2Uge1xuICBwcml2YXRlIGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGZvcm1FbGVtZW50c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FbGVtZW50W10+KFtdKTtcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcbiAgcHJpdmF0ZSBzZWxlY3RIZWFkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGFjdGlvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgZWxlbWVudENvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBib29rOiBhbnk7XG4gIHVuaXF1ZV9pZDogYW55O1xuICB0ZW1wRWxlbTogYW55W107XG5cbiAgZm9ybUVsZW1lbnRzJCA9IHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0ZWRFbGVtZW50JCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc2VsZWN0SGVhZGVyU3ViamVjdCQgPSB0aGlzLnNlbGVjdEhlYWRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGFjdGlvblN1YmplY3QkID0gdGhpcy5hY3Rpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBjdXJyZW50RWxlbWVudDogYW55O1xuICBzZWxlY3RUYWJsZUNvbHVtbjogYW55O1xuICAvLyBib29rOiB7IGJvb2tRdWVzdGlvbnNNYXA6IHsgdW5pcXVlX2lkOiB7IHN1YlF1ZXN0aW9uczogYW55W107IH07IH07IH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XG4gICAgaWYgKHNhdmVkRm9ybUVsZW1lbnRzKSB7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IEpTT04ucGFyc2Uoc2F2ZWRGb3JtRWxlbWVudHMpO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgfVxuICB9XG4gXG4gIGludGlhbGl6ZUJvb2soYm9vazogYW55KSB7XG4gICAgLy8gQVAgMTNNQVIyNSAtIEdldCB0aGUgdW5pcXVlIGlkIGluIHRoZSBib29rUXVlc3Rpb25zTWFwIFxuICAgIHRoaXMudW5pcXVlX2lkID0gT2JqZWN0LmtleXMoYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXTtcbiAgICBsZXQgdGVtcGJvb2sgPSBib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdLnN1YlF1ZXN0aW9ucztcbiAgICAvLyBTS1MyOE1BUjI1IHVwZGF0ZSBuZXN0ZWQgYm9vayBRdWVzdGlvbnNNYXBcbiAgICB0ZW1wYm9vay5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImJvb2tcIiAmJiBlbGVtZW50LnFiUmVmZXJlbmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0UmVmUWJEYXRhKGVsZW1lbnQucWJSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ3FiUmVmZXJlbmNlUXVlc3Rpb25zJ10gPSByZXNwb25zZTsgLy8gQXNzaWduIHJlc3BvbnNlIHRvIHFiUmVmZXJlbmNlUXVlc3Rpb25zXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBUEkgRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0ZW1wYm9va1xuICAgIHRoaXMuYm9vayA9IGJvb2tcblxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgIH0pO1xuICAgIGxldCB0cmFuc2xhdGlvbk1hcDogYW55ID0geyBlbjoge30gfTtcbiAgICBjb25zdCBrZXlzVG9UcmFuc2xhdGUgPSBbJ3F1ZXN0aW9uVGV4dCcsICdoZWxwVGV4dCcsICdxdWVzdGlvbicsICdsYWJlbCddO1xuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF0gPSB7fTsgXG4gICAgICBrZXlzVG9UcmFuc2xhdGUuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudFtrZXldICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudFtrZXldICE9PSBudWxsICYmIHR5cGVvZiBlbGVtZW50W2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF1ba2V5XSA9IGVsZW1lbnRba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZihlbGVtZW50Py5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQ/Llsnb3B0aW9ucyddICE9PSBudWxsICYmICBBcnJheS5pc0FycmF5KGVsZW1lbnRbJ29wdGlvbnMnXSkpe1xuICAgICAgICBlbGVtZW50WydvcHRpb25zJ10uZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgIGlmIChvcHQubGFiZWwgIT09IHVuZGVmaW5lZCAmJiBvcHQubGFiZWwgIT09IG51bGwgJiYgdHlwZW9mIG9wdC5sYWJlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW29wdC5pZF0gPSB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdID8/IHt9O1xuICAgICAgICAgICAgdHJhbnNsYXRpb25NYXAuZW5bb3B0LmlkXVsnbGFiZWwnXSA9IG9wdC5sYWJlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdUYWJsZScgJiYgZWxlbWVudD8uZmllbGRzTWV0YSl7XG4gICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGVsZW1lbnQ/LmZpZWxkc01ldGEpICYmIHR5cGVvZiBlbGVtZW50Py5maWVsZHNNZXRhID09PSAnc3RyaW5nJyl7XG4gICAgICAgICAgZWxlbWVudC5maWVsZHNNZXRhID0gSlNPTi5wYXJzZShlbGVtZW50Py5maWVsZHNNZXRhKVxuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnQ/LmZpZWxkc01ldGE/LmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW2ZpZWxkLnVuaXF1ZUlkZW50aWZpZXJdID0ge307IFxuICAgICAgICAgIGtleXNUb1RyYW5zbGF0ZS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGRba2V5XSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGZpZWxkW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmKGtleSAhPT0gJ3F1ZXN0aW9uJykgdHJhbnNsYXRpb25NYXAuZW5bZmllbGQudW5pcXVlSWRlbnRpZmllcl1ba2V5XSA9IGZpZWxkW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkPy5xdWVzdGlvbj8uWydvcHRpb25zJ10gIT09IG51bGwgJiYgIEFycmF5LmlzQXJyYXkoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSkpe1xuICAgICAgICAgICAgZmllbGQucXVlc3Rpb25bJ29wdGlvbnMnXS5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgIGlmIChvcHQubGFiZWwgIT09IHVuZGVmaW5lZCAmJiBvcHQubGFiZWwgIT09IG51bGwgJiYgdHlwZW9mIG9wdC5sYWJlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdID0gdHJhbnNsYXRpb25NYXAuZW5bb3B0LmlkXSA/PyB7fTtcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk1hcC5lbltvcHQuaWRdWydsYWJlbCddID0gb3B0LmxhYmVsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ib29rPy5xdWVzdGlvbmJvb2s/LmFjdGlvbj8uZm9yRWFjaCgoYWN0OiBhbnkpID0+e1xuICAgICAgaWYoIXRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF0pIHRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF09e31cbiAgICAgIHRyYW5zbGF0aW9uTWFwLmVuW2FjdC5pZF1bJ25hbWUnXSA9IGFjdC5uYW1lO1xuICAgIH0pXG4gICAgdGhpcy5ib29rWyd0cmFuc2xhdGlvbk1hcCddID0gdHJhbnNsYXRpb25NYXBcbiAgfVxuXG4gIC8vU0tTMjhNQVIyNSBGdW5jdGlvbiB0byBmZXRjaCByZWZxYiBkYXRhXG4gIGdldFJlZlFiRGF0YShyZWZxYmlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYGh0dHBzOi8vZGV2LWFwaS52YWxhcmhyLmNvbS9ueHQ/bmFtZT0ke3JlZnFiaWR9YCk7XG4gIH1cblxuICAgLy9BUC0xN0FQUjI1IEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHVuaXF1ZSBpZFxuICAgYWRkRWxlbWVudFdpdGhJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9ICduZ254dCc7IFxuICAgIGNvbnN0IGNoYXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBsZXQgY29yZSA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTQ7IGkrKykge1xuICAgICAgY29yZSArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXggKyBjb3JlOyBcbiAgfVxuICAvLyBBUCAyM01BWTI1IFVwZGF0ZXMgdGhlIHF1ZXN0aW9uYm9vayBhY3Rpb24gYnV0dG9uczogYWRkcyBvciByZW1vdmVzIGJhc2VkIG9uIGFjdGlvbiB0eXBlXG4gIHVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnV0dG9uOiBhbnksYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYm9vay5xdWVzdGlvbmJvb2spIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2sgPSB7fTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAnYWRkJykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24ucHVzaChidXR0b24pO1xuICAgIH1lbHNlIGlmKGFjdGlvbiA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uID0gdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQgIT09IGJ1dHRvbi5pZCk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uU3ViamVjdC5uZXh0KHRoaXMuYm9vayk7XG4gIH1cbiAgXG4gIG5ld0Jvb2soKSB7XG4gICAgdGhpcy51bmlxdWVfaWQgPSB0aGlzLmFkZEVsZW1lbnRXaXRoSWQoKTtcbiAgICB0aGlzLmJvb2sgPSB7XG4gICAgICAndHJhbnNsYXRpb25NYXAnOnsnZW4nOnt9fSxcbiAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFtdLFxuICAgICAgICAgICd0eXBlJzogJ0Jvb2snXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAncXVlc3Rpb25ib29rJzoge1xuICAgICAgICBcImFjdGlvblwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FuY2VsXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwiY2xvc2VcIixcbiAgICAgICAgICAgIFwiYWx0XCI6IFwiXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAzLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJTYXZlXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwic3VibWl0XCIsXG4gICAgICAgICAgICBcImFsdFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJlbmRwb2ludFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJtZXRob2RcIjogXCJQT1NUXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAxNCwgIFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgICdyZWNvcmRzJzogW3tcbiAgICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICB9XVxuICAgIH1cbiAgfVxuICAvLyBBUCAyNkZFQjI1IC0gY2xlYXIgdGhlIGZvcm0gZWxlbWVudHMgXG4gIGNsZWFyRWxlbWVudHMoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBHZXQgdGhlIGVsZW1lbnQgY29tcG9uZW50IHJlZmVyZW5jZVxuICBnZXRFbGVtZW50Q29tcG9uZW50KCk6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Q29tcG9uZW50O1xuICB9XG5cbiAgc2V0RWxlbWVudENvbXBvbmVudChjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICB0aGlzLmVsZW1lbnRDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICAvLyBBZGQgYSBuZXcgZWxlbWVudCB0byB0aGUgZm9ybVxuICBhZGRFbGVtZW50KGVsZW1lbnQ6IEZvcm1FbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFlbGVtZW50Lm9wdGlvbnMpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IFtdOyAvLyBvcHRpb25zIGlzIGluaXRpYWxpemVkXG4gICAgfVxuICAgIGVsZW1lbnRbJ3F1ZXN0aW9uQm9va0lkJ10gPSB0aGlzLnVuaXF1ZV9pZDtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICAgIGlmKHRoaXMuYm9vaz8uYm9va1F1ZXN0aW9uc01hcFtPYmplY3Qua2V5cyh0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcClbMF1dPy5zdWJRdWVzdGlvbnMpIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW09iamVjdC5rZXlzKHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXV0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHNcbiAgfVxuICAvLyBTS1MxM01BUjI1IGFkZCB0YWJsZSBlbGVtZW50XG4gIGFkZFRhYmxlRWxlbWVudChlbGVtZW50OiBhbnksIGluZCA6YW55KSB7XG4gICAgLy9TS1MxM01BUjI1IEVuc3VyZSBjdXJyZW50RWxlbWVudCBleGlzdHNcbiAgICBpZiAoIXRoaXMuY3VycmVudEVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBDbG9uZSBlbGVtZW50cyBhcnJheVxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG5cbiAgICAvLyBTS1MxM01BUjI1IEZpbmQgdGhlIGVsZW1lbnQgYW5kIHVwZGF0ZSBpdHMgY29sdW1uc1xuICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudHMuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB0aGlzLmN1cnJlbnRFbGVtZW50LmlkKTtcblxuICAgIGxldCB0ZW1wRmllbGRzTWV0YSA9IHtcbiAgICAgIGxhYmVsOiBlbGVtZW50LmxhYmVsLFxuICAgICAgYXBpTmFtZTogZWxlbWVudC5maWVsZE5hbWUsXG4gICAgICBpc2RlbGV0ZWQ6IGZhbHNlLFxuICAgICAgb3JkZXJieWZsYWc6IGZhbHNlLFxuICAgICAgZmlsdGVyZmxhZzogZmFsc2UsXG4gICAgICBvdXRwdXRGbGFnOiB0cnVlLFxuICAgICAgaXNjaGlsZDogZmFsc2UsXG4gICAgICByZXN1bHRhbnRmbGFnOiBmYWxzZSxcbiAgICAgIHNlYXJjaGZsYWc6IGZhbHNlLFxuICAgICAgZmxkVHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgdW5pcXVlSWRlbnRpZmllcjogZWxlbWVudC5pZCxcbiAgICAgIHF1ZXN0aW9uOntcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBsYWJlbENsYXNzOiBudWxsLFxuICAgICAgICAgIGxhYmVsU3R5bGU6IG51bGwsXG4gICAgICAgICAgbGFiZWxWYWx1ZVN0eWxlOiBudWxsLFxuICAgICAgICAgIGlucHV0Q2xhc3M6IG51bGwsXG4gICAgICAgICAgaW5wdXRTdHlsZTogbnVsbCxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgICAgYm9va1N0eWxlOiBudWxsLFxuICAgICAgICAgIGRpcmVjdGlvbjogXCJsdHJcIixcbiAgICAgICAgICBxdWVzdGlvblN0eWxlOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICBzdWJUZXh0OiB7XG4gICAgICAgICAgZW5kcG9pbnQ6IG51bGwsXG4gICAgICAgICAgdmFyaWFibGU6IG51bGwsXG4gICAgICAgICAgZmllbGQ6IG51bGwsXG4gICAgICAgICAgZGVmYXVsdEZpZWxkOiBudWxsLFxuICAgICAgICAgIHNvdXJjZVF1ZXN0aW9uSWQ6IG51bGwsXG4gICAgICAgICAgdmFsdWVGaWVsZDogbnVsbCxcbiAgICAgICAgICBsYWJlbEZpZWxkOiBudWxsLFxuICAgICAgICAgIGlzRGVwZW5kZW50RmllbGQ6IGZhbHNlLFxuICAgICAgICAgIGRlcGVuZGVudFZhbHVlOiBudWxsLFxuICAgICAgICAgIHF1ZXJ5RmllbGQ6IG51bGwsXG4gICAgICAgICAgcXVlcnlWYWx1ZTogbnVsbCxcbiAgICAgICAgICBxdWVyeVZhbHVlUmVmZXJlbmNlOiBudWxsLFxuICAgICAgICAgIHVuaXF1ZUtleTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczpcbiAgICAgICAgZWxlbWVudC50eXBlID09PSBcIkRyb3Bkb3duXCIgfHwgZWxlbWVudC50eXBlID09PSBcIlJhZGlvXCIgfHwgZWxlbWVudC50eXBlID09PSBcIkNoZWNrYm94XCJcbiAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICB9XG4gICAgfTsgICAgXG4gICAgbGV0IGZpZWxkc01ldGEgPSBbLi4uKEFycmF5LmlzQXJyYXkodGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEpID8gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEgOiAodHlwZW9mIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhID09PSAnc3RyaW5nJyA/IChKU09OLnBhcnNlKHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhKSkgOiBbdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGFdKSksIHRlbXBGaWVsZHNNZXRhXTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCBmaWVsZHNNZXRhOiBmaWVsZHNNZXRhIH07XG4gICAgfVxuXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBmb3JtIGVsZW1lbnRzXG4gICAgLy8gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoZWxlbWVudHMpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kKTtcbiAgICAvLyBMb2cgZm9yIGRlYnVnZ2luZ1xuICB9XG5cbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgIG9wdGlvbnM6IHVwZGF0ZXMub3B0aW9ucyB8fCBlbGVtZW50c1tpbmRleF0ub3B0aW9ucyB8fCBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRFbGVtZW50ID0ge1xuICAgICAgICAuLi50aGlzLmZvcm1FbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXNcbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQpIHtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvblRleHQgPSB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQucmVwbGFjZSgvXFxzKlxcKiskLywgJycpO1xuICAgICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZXMucmVxdWlyZWQgPyBgJHtxdWVzdGlvblRleHR9ICpgIDogcXVlc3Rpb25UZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgLi4udXBkYXRlcyB9O1xuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSB0cnVlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiAhdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gYCR7dXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0fSAqYDtcbiAgICAgIH0gZWxzZSBpZiAodXBkYXRlcy5yZXF1aXJlZCA9PT0gZmFsc2UgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5lbmRzV2l0aCgnKicpKSB7XG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5zbGljZSgwLCAtMik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gICAgaWYodGhpcy5ib29rPy5ib29rUXVlc3Rpb25zTWFwW09iamVjdC5rZXlzKHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwKVswXV0/LnN1YlF1ZXN0aW9ucykgdGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXBbT2JqZWN0LmtleXModGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdXS5zdWJRdWVzdGlvbnMgPSB0aGlzLmZvcm1FbGVtZW50c1xuICB9XG4gIHVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgb2YgdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgYm9vayAgXG4gICAgdGhpcy5ib29rLnJlY29yZHNbMF0udGl0bGUgPSBldmVudDtcbiAgfVxuICBzZXRTZWxlY3RlZEVsZW1lbnQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdXG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IG51bGxcbiAgfVxuICAvLyBTS1MxOU1BUjI1IHNldCB0aGUgc2VsZWN0ZWQgdGFibGUgY29sdW1uXG4gIHNldFNlbGVjdGVkVGFibGVFbGVtZW50KGluZGV4OiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuY3VycmVudEVsZW1lbnQuZmllbGRzTWV0YSk7XG4gICAgfVxuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgPyB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZChpdGVtID0+IGl0ZW1bJ3VuaXF1ZUlkZW50aWZpZXInXSA9PT0gZXZlbnQ/LnVuaXF1ZUlkZW50aWZpZXIpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBmb3VuZEl0ZW0/LnVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gIH1cbiAgcmVtb3ZlU2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5jdXJyZW50RWxlbWVudC5maWVsZHNNZXRhKTtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBpdGVtXG4gICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZEluZGV4KGl0ZW0gPT4gaXRlbVsndW5pcXVlSWRlbnRpZmllciddID09PSBldmVudD8udW5pcXVlSWRlbnRpZmllcik7XG4gICAgICAvLyBSZW1vdmUgdGhlIGl0ZW0gaWYgZm91bmRcbiAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IG51bGxcbiAgICB0aGlzLmVsZW1lbnRVcGRhdGUoaW5kZXgsIHRoaXMuY3VycmVudEVsZW1lbnQpXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBnZXRTZWxlY3RUYWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RUYWJsZUNvbHVtbjtcbiAgfVxuICBzZWxlY3RIZWFkaW5nKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgRW1pdHMgdGhlIHNlbGVjdGVkIGhlYWRpbmcgZXZlbnQgIFxuICAgIHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG5cbiAgZ2V0RWxlbWVudHMoKTogRm9ybUVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVsZW1lbnRzLm1hcChlbGVtZW50ID0+ICh7XG4gICAgICAuLi5lbGVtZW50LFxuICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdLFxuICAgIH0pKTtcbiAgfVxuICBzb3J0RWxlbWVudHNCeU9yZGVyKCk6IHZvaWQge1xuICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJ5IGN1cnJlbnQgb3JkZXJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5zb3J0KChhLCBiKSA9PiBhLnF1ZXN0aW9uTnVtYmVyIC0gYi5xdWVzdGlvbk51bWJlcik7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQucXVlc3Rpb25OdW1iZXIgPSBpbmRleCArIDE7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy9BUC0xME1BUjI1IFJldHVybnMgdGhlIGN1cnJlbnQgYm9vayBkYXRhICBcbiAgZ2V0Qm9vaygpIHtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuICB9XG4gIHVwZGF0ZUJvb2soYm9vazogYW55KSB7XG4gICAgdGhpcy5ib29rID0gYm9vaztcbiAgICBjb25zdCB1cGRhdGVkU3ViUXVlc3Rpb25zID0gYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zID8/IFtdO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gdXBkYXRlZFN1YlF1ZXN0aW9ucztcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICBcbiAgLy8gSW4gRm9ybUJ1aWxkZXJTZXJ2aWNlXG4gIGRvd25sb2FkRWxlbWVudCgpIHtcbiAgICBsZXQgdHJhbnNsYXRpb25NYXA6IGFueSA9IHRoaXMuYm9vay50cmFuc2xhdGlvbk1hcFxuICAgIGNvbnN0IGtleXNUb1RyYW5zbGF0ZSA9IFsncXVlc3Rpb25UZXh0JywgJ2hlbHBUZXh0JywgJ3F1ZXN0aW9uJywgJ2xhYmVsJ107XG4gICAgbGV0IGRvd25sb2FkRm9ybUVsZW1lbnRzID0gdGhpcy5mb3JtRWxlbWVudHNcbiAgICBkb3dubG9hZEZvcm1FbGVtZW50cz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGtleXNUb1RyYW5zbGF0ZS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgZWxlbWVudFtrZXldID0gdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF0/LltrZXldID8gdHJhbnNsYXRpb25NYXAuZW5bZWxlbWVudC5pZF1ba2V5XSA6IG51bGw7XG4gICAgICB9KTtcbiAgICAgIGlmKGVsZW1lbnQ/Llsnb3B0aW9ucyddICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudD8uWydvcHRpb25zJ10gIT09IG51bGwgJiYgIEFycmF5LmlzQXJyYXkoZWxlbWVudFsnb3B0aW9ucyddKSl7XG4gICAgICAgIGVsZW1lbnRbJ29wdGlvbnMnXS5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xuICAgICAgICAgIG9wdC5sYWJlbCA9IHRyYW5zbGF0aW9uTWFwLmVuW29wdC5pZF0/LlsnbGFiZWwnXSA7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdUYWJsZScgJiYgZWxlbWVudD8uZmllbGRzTWV0YSl7XG4gICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGVsZW1lbnQ/LmZpZWxkc01ldGEpICYmIHR5cGVvZiBlbGVtZW50Py5maWVsZHNNZXRhID09PSAnc3RyaW5nJyl7XG4gICAgICAgICAgZWxlbWVudC5maWVsZHNNZXRhID0gSlNPTi5wYXJzZShlbGVtZW50Py5maWVsZHNNZXRhKVxuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnQ/LmZpZWxkc01ldGE/LmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIGtleXNUb1RyYW5zbGF0ZS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZihrZXkgIT09ICdxdWVzdGlvbicpIGZpZWxkW2tleV0gPSB0cmFuc2xhdGlvbk1hcC5lbltmaWVsZC51bmlxdWVJZGVudGlmaWVyXT8uW2tleV07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkPy5xdWVzdGlvbj8uWydvcHRpb25zJ10gIT09IG51bGwgJiYgIEFycmF5LmlzQXJyYXkoZmllbGQ/LnF1ZXN0aW9uPy5bJ29wdGlvbnMnXSkpe1xuICAgICAgICAgICAgZmllbGQucXVlc3Rpb25bJ29wdGlvbnMnXS5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgIG9wdC5sYWJlbCA9IHRyYW5zbGF0aW9uTWFwLmVuW29wdC5pZF0/LlsnbGFiZWwnXTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgZG93bmxvYWRCb29rID0gdGhpcy5ib29rXG4gICAgZG93bmxvYWRCb29rPy5xdWVzdGlvbmJvb2s/LmFjdGlvbj8uZm9yRWFjaCgoYWN0OiBhbnkpID0+e1xuICAgICAgYWN0Lm5hbWUgPSB0cmFuc2xhdGlvbk1hcC5lblthY3QuaWRdPy5bJ25hbWUnXTtcbiAgICB9KVxuICAgIC8vIFNLUzI4TUFSMjUgcmVtb3ZlIHFiUmVmZXJlbmNlUXVlc3Rpb25zIGZvciBkb3dubG9hZCB0aW1lIGFuZCBzdWJ0ZXh0IHRvIGNvbnZlcnQgdG9vIHN0cmluZ1xuICAgIGRvd25sb2FkRm9ybUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnYm9vaycpIHtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnQucWJSZWZlcmVuY2VRdWVzdGlvbnM7XG4gICAgICB9XG4gICAgICBpZiggZWxlbWVudC5zdWJUZXh0KXtcbiAgICAgICAgZWxlbWVudC5zdWJUZXh0ID0gdHlwZW9mIGVsZW1lbnQ/LnN1YlRleHQgPT09ICdvYmplY3QnID8gZWxlbWVudD8uc3ViVGV4dCA6IEpTT04ucGFyc2UoZWxlbWVudFsnc3ViVGV4dCddKTtcbiAgICAgICAgY29uc3Qgc3RyaW5nQXJyYXlGaWVsZHMgPSBbJ2ZpZWxkJywncXVlcnlQYXJhbWV0ZXInLCAnc291cmNlUXVlc3Rpb25JZCcsICdxdWVyeUZpZWxkJywgJ3F1ZXJ5VmFsdWUnXTtcblxuICAgICAgICBpZiAoZWxlbWVudC5zdWJUZXh0KSB7XG4gICAgICAgICAgc3RyaW5nQXJyYXlGaWVsZHMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LnN1YlRleHRba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGVsZW1lbnQuc3ViVGV4dFtrZXldID0gdmFsdWUuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gICAgICBcbiAgICAgICAgaWYoZWxlbWVudC50eXBlID09PSAnVGFibGUnKXtcbiAgICAgICAgICBlbGVtZW50LmZpZWxkc01ldGEuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZihmaWVsZD8ucXVlc3Rpb24/LnN1YlRleHQpe1xuICAgICAgICAgICAgICBzdHJpbmdBcnJheUZpZWxkcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZC5xdWVzdGlvbi5zdWJUZXh0W2tleV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkLnF1ZXN0aW9uLnN1YlRleHRba2V5XSA9IHZhbHVlLnNwbGl0KCcsJykubWFwKGl0ZW0gPT4gaXRlbS50cmltKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCAhPT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5zdHJpbmdpZnkoZWxlbWVudFsnc3ViVGV4dCddKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb3dubG9hZEJvb2suYm9va1F1ZXN0aW9uc01hcFtPYmplY3Qua2V5cyh0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcClbMF1dLnN1YlF1ZXN0aW9ucyA9IGRvd25sb2FkRm9ybUVsZW1lbnRzO1xuICAgIGNvbnNvbGUubG9nKCdib29rJywgZG93bmxvYWRCb29rKTtcbiAgICByZXR1cm4gZG93bmxvYWRCb29rO1xuICB9XG4gIC8vIEFQLTA2TUFSMjUgLSBFbGVtZW50IG5ldyBvcmRlciB1cGRhdGVcbiAgdXBkYXRlRWxlbWVudHNPcmRlcih1cGRhdGVkRWxlbWVudHM6IEZvcm1FbGVtZW50W10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFsuLi51cGRhdGVkRWxlbWVudHNdO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KHRoaXMuZm9ybUVsZW1lbnRzKTtcbiAgfVxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxuICAvLyBTYXZlIGVsZW1lbnRzIHRvIGxvY2FsU3RvcmFnZSBhbmQgdXBkYXRlIHRoZSBzdWJqZWN0XG4gIHJlbW92ZUVsZW1lbnRDb21wb25lbnQoaWQ6IGFueSkge1xuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0ge31cbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlkICE9PSBpZCkge1xuICAgICAgICB0aGlzLnRlbXBFbGVtLnB1c2goZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSB0aGlzLnRlbXBFbGVtO1xuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vIFNLUzE5TUFSMjUgdXBkYXRlIHRoZSBlbGVtZW50XG4gIGVsZW1lbnRVcGRhdGUoaW5kZXg6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSBlbGVtZW50XG4gICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|