@rangertechnologies/ngnxt 2.1.211 → 2.1.212
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/pages/builder/element/element.component.mjs +133 -146
- package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +68 -0
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +91 -1117
- package/esm2022/lib/services/form-builder.service.mjs +11 -8
- package/fesm2022/rangertechnologies-ngnxt.mjs +297 -1267
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/pages/builder/element/element.component.d.ts +5 -4
- package/lib/pages/builder/properties/common-fields.constants.d.ts +79 -0
- package/lib/pages/builder/properties/properties.component.d.ts +105 -1395
- package/lib/services/form-builder.service.d.ts +1 -0
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.212.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.211.tgz +0 -0
|
@@ -28,10 +28,13 @@ export class FormBuilderService {
|
|
|
28
28
|
const savedFormElements = localStorage.getItem('formElements');
|
|
29
29
|
if (savedFormElements) {
|
|
30
30
|
this.formElements = JSON.parse(savedFormElements);
|
|
31
|
-
this.
|
|
31
|
+
this.emitFormElements();
|
|
32
32
|
// this.book = JSON.parse(localStorage.getItem('book') || '{}');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
+
emitFormElements() {
|
|
36
|
+
this.formElementsSubject.next([...this.formElements]);
|
|
37
|
+
}
|
|
35
38
|
intializeBook(book) {
|
|
36
39
|
// AP 13MAR25 - Get the unique id in the bookQuestionsMap
|
|
37
40
|
this.unique_id = Object.keys(book.bookQuestionsMap)[0];
|
|
@@ -127,7 +130,7 @@ export class FormBuilderService {
|
|
|
127
130
|
// AP 26FEB25 - clear the form elements
|
|
128
131
|
clearElements() {
|
|
129
132
|
this.formElements = [];
|
|
130
|
-
this.
|
|
133
|
+
this.emitFormElements();
|
|
131
134
|
}
|
|
132
135
|
// Get the element component reference
|
|
133
136
|
getElementComponent() {
|
|
@@ -143,7 +146,7 @@ export class FormBuilderService {
|
|
|
143
146
|
}
|
|
144
147
|
element['questionBookId'] = this.unique_id;
|
|
145
148
|
this.formElements.push(element);
|
|
146
|
-
this.
|
|
149
|
+
this.emitFormElements();
|
|
147
150
|
}
|
|
148
151
|
// SKS13MAR25 add table element
|
|
149
152
|
addTableElement(element, ind) {
|
|
@@ -205,7 +208,7 @@ export class FormBuilderService {
|
|
|
205
208
|
if (elements[index]) {
|
|
206
209
|
elements[index] = { ...elements[index], ...updates };
|
|
207
210
|
this.formElements = elements;
|
|
208
|
-
this.
|
|
211
|
+
this.emitFormElements();
|
|
209
212
|
}
|
|
210
213
|
}
|
|
211
214
|
// Handle special cases
|
|
@@ -216,7 +219,7 @@ export class FormBuilderService {
|
|
|
216
219
|
updatedElement.questionText = updatedElement.questionText.slice(0, -2);
|
|
217
220
|
}
|
|
218
221
|
this.formElements[index] = updatedElement;
|
|
219
|
-
this.
|
|
222
|
+
this.emitFormElements();
|
|
220
223
|
// localStorage.setItem('formElements', JSON.stringify(this.formElements));
|
|
221
224
|
}
|
|
222
225
|
}
|
|
@@ -273,7 +276,7 @@ export class FormBuilderService {
|
|
|
273
276
|
this.formElements.forEach((element, index) => {
|
|
274
277
|
element.questionNumber = index + 1;
|
|
275
278
|
});
|
|
276
|
-
this.
|
|
279
|
+
this.emitFormElements();
|
|
277
280
|
}
|
|
278
281
|
//AP-10MAR25 Returns the current book data
|
|
279
282
|
getBook() {
|
|
@@ -330,7 +333,7 @@ export class FormBuilderService {
|
|
|
330
333
|
});
|
|
331
334
|
this.formElements = this.tempElem;
|
|
332
335
|
// localStorage.setItem('formElements', JSON.stringify(this.formElements));
|
|
333
|
-
this.
|
|
336
|
+
this.emitFormElements();
|
|
334
337
|
}
|
|
335
338
|
// SKS19MAR25 update the element
|
|
336
339
|
elementUpdate(index, element) {
|
|
@@ -351,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
351
354
|
providedIn: 'root',
|
|
352
355
|
}]
|
|
353
356
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBK0RuRCxNQUFNLE9BQU8sa0JBQWtCO0lBbUJUO0lBbEJaLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3RCxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELElBQUksQ0FBTTtJQUNWLFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBQ3ZCLHlFQUF5RTtJQUV6RSxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FB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Q0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUE7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO3dHQXZXVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVAgMjJKQU4yNVxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZXMvYnVpbGRlci9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmludGVyZmFjZSBGb3JtRWxlbWVudCB7XG4gIGFjdGlvbjogYW55O1xuICBpZDogYW55O1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWU6IGFueTtcbiAgcXVlc3Rpb25UZXh0Pzogc3RyaW5nO1xuICBxdWVzdGlvbj86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgaXNSZWFkT25seT86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICByZWZlcmVuY2VGaWVsZD86IGFueTtcbiAgYWRkaXRpb25hbFJpY2hDb250ZW50PzogYW55O1xuICBncm91cE5hbWU/OiBhbnk7XG4gIGlzRGF0ZUJhY2t3YXJkPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBhbnk7XG4gIHN1YlRpdGxlPzogYW55O1xuICBzaXplPzogbnVtYmVyO1xuICBpc0RhdGVGb3J3YXJkPzogYm9vbGVhbjtcbiAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gIGlzVGl0bGU/OiBib29sZWFuO1xuICBuZXh0UXVlc3Rpb24/OiBhbnk7XG4gIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucz86IGFueTtcbiAgcXVlc3Rpb25OdW1iZXI/OiBudW1iZXI7XG4gIG9yZGVyOiBudW1iZXI7XG4gIHF1ZXN0aW9uQm9va0lkPzogYW55O1xuICBmaWVsZHNNZXRhPzogYW55O1xuICB0cmFja2luZ0lkPzogYW55O1xuICByZWNvcmRJZD86IGFueTtcbiAgcWJSZWZlcmVuY2U/OiBhbnk7XG4gIHFiUmVmZXJlbmNlUXVlc3Rpb25zPzogYW55O1xuICBwcmltYXJ5S2V5OiBib29sZWFuLFxuICBzdHlsZToge1xuICAgIGxhYmVsQ2xhc3M6IGFueSxcbiAgICBsYWJlbFN0eWxlOiBhbnksXG4gICAgbGFiZWxWYWx1ZVN0eWxlOiBhbnksXG4gICAgaW5wdXRDbGFzczogYW55LFxuICAgIGlucHV0U3R5bGU6IGFueSxcbiAgICBzaG93TGFiZWw6IGJvb2xlYW4sXG4gICAgYm9va1N0eWxlOiBhbnksXG4gICAgZGlyZWN0aW9uOiBhbnksXG4gICAgcXVlc3Rpb25TdHlsZTogYW55LFxuICB9LFxuICAgIC8vIEFQIDI1RkVCMjUgLSBvcHRpb25zIGFycmF5XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBhbnk7XG4gICAgcXVlc3Rpb25JZDogYW55O1xuICAgIG5leHRRdWVzdGlvbjogYW55O1xuICAgIG5hbWU6IGFueTtcbiAgICBpZDogYW55O1xuICB9PjtcbiAgc3ViVGV4dDogYW55LFxuICBjb2x1bW5zPzogYW55O1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUVsZW1lbnRbXT4oW10pO1xuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuICBwcml2YXRlIHNlbGVjdEhlYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHByaXZhdGUgYWN0aW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBlbGVtZW50Q29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gIGJvb2s6IGFueTtcbiAgdW5pcXVlX2lkOiBhbnk7XG4gIHRlbXBFbGVtOiBhbnlbXTtcblxuICBmb3JtRWxlbWVudHMkID0gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBzZWxlY3RlZEVsZW1lbnQkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBzZWxlY3RIZWFkZXJTdWJqZWN0JCA9IHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgYWN0aW9uU3ViamVjdCQgPSB0aGlzLmFjdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGN1cnJlbnRFbGVtZW50OiBhbnk7XG4gIHNlbGVjdFRhYmxlQ29sdW1uOiBhbnk7XG4gIC8vIGJvb2s6IHsgYm9va1F1ZXN0aW9uc01hcDogeyB1bmlxdWVfaWQ6IHsgc3ViUXVlc3Rpb25zOiBhbnlbXTsgfTsgfTsgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAvLyBMb2FkIHNhdmVkIGVsZW1lbnRzIGZyb20gbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBzYXZlZEZvcm1FbGVtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtRWxlbWVudHMnKTtcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMpIHtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZEZvcm1FbGVtZW50cyk7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgIC8vIHRoaXMuYm9vayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Jvb2snKSB8fCAne30nKTtcbiAgICB9XG4gIH1cbiAgaW50aWFsaXplQm9vayhib29rOiBhbnkpIHtcbiAgICAvLyBBUCAxM01BUjI1IC0gR2V0IHRoZSB1bmlxdWUgaWQgaW4gdGhlIGJvb2tRdWVzdGlvbnNNYXAgXG4gICAgdGhpcy51bmlxdWVfaWQgPSBPYmplY3Qua2V5cyhib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuICAgIGxldCB0ZW1wYm9vayA9IGJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zO1xuLy8gU0tTMjhNQVIyNSB1cGRhdGUgbmVzdGVkIGJvb2sgUXVlc3Rpb25zTWFwXG4gICAgdGVtcGJvb2suZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJib29rXCIgJiYgZWxlbWVudC5xYlJlZmVyZW5jZSkge1xuICAgICAgICB0aGlzLmdldFJlZlFiRGF0YShlbGVtZW50LnFiUmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50WydxYlJlZmVyZW5jZVF1ZXN0aW9ucyddID0gcmVzcG9uc2U7IC8vIEFzc2lnbiByZXNwb25zZSB0byBxYlJlZmVyZW5jZVF1ZXN0aW9uc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQVBJIEVycm9yOlwiLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGVtcGJvb2tcbiAgICB0aGlzLmJvb2sgPSBib29rXG5cbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0/LnN1YlF1ZXN0aW9ucz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmICh0aGlzLmJvb2suc3FPcHRpb25zPy5bZWxlbWVudC5pZF0pIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5ib29rLnNxT3B0aW9uc1tlbGVtZW50LmlkXS5vcHRpb25zO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy9TS1MyOE1BUjI1IEZ1bmN0aW9uIHRvIGZldGNoIHJlZnFiIGRhdGFcbiAgZ2V0UmVmUWJEYXRhKHJlZnFiaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgaHR0cHM6Ly9kZXYtYXBpLnZhbGFyaHIuY29tL254dD9uYW1lPSR7cmVmcWJpZH1gKTtcbiAgfVxuXG4gICAvL0FQLTE3QVBSMjUgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgdW5pcXVlIGlkXG4gICBhZGRFbGVtZW50V2l0aElkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gJ25nbnh0JzsgXG4gICAgY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGxldCBjb3JlID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICBjb3JlICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArIGNvcmU7IFxuICB9XG4gIC8vIEFQIDIzTUFZMjUgVXBkYXRlcyB0aGUgcXVlc3Rpb25ib29rIGFjdGlvbiBidXR0b25zOiBhZGRzIG9yIHJlbW92ZXMgYmFzZWQgb24gYWN0aW9uIHR5cGVcbiAgdXBkYXRlUXVlc3Rpb25Cb29rQWN0aW9uQnV0dG9ucyhidXR0b246IGFueSxhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ib29rLnF1ZXN0aW9uYm9vaykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vayA9IHt9O1xuICAgIH1cbiAgICBpZihhY3Rpb24gPT09ICdhZGQnKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbi5wdXNoKGJ1dHRvbik7XG4gICAgfWVsc2UgaWYoYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgdGhpcy5ib29rLnF1ZXN0aW9uYm9vay5hY3Rpb24gPSB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbi5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCAhPT0gYnV0dG9uLmlkKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25TdWJqZWN0Lm5leHQodGhpcy5ib29rKTtcbiAgfVxuICBcbiAgbmV3Qm9vaygpIHtcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IHRoaXMuYWRkRWxlbWVudFdpdGhJZCgpO1xuICAgIHRoaXMuYm9vayA9IHtcbiAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFtdLFxuICAgICAgICAgICd0eXBlJzogJ0Jvb2snXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAncXVlc3Rpb25ib29rJzoge1xuICAgICAgICBcImFjdGlvblwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FuY2VsXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwiY2xvc2VcIixcbiAgICAgICAgICAgIFwiYWx0XCI6IFwiXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAzLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJTYXZlXCIsXG4gICAgICAgICAgICBcImV2ZW50dG9lbWl0XCI6IFwic3VibWl0XCIsXG4gICAgICAgICAgICBcImFsdFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJlbmRwb2ludFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJtZXRob2RcIjogXCJQT1NUXCIsXG4gICAgICAgICAgICBcInBvc2l0aW9uUGVyY2VudFwiOiAxNCwgIFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcInRleHRDb2xvclwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IDYsXG4gICAgICAgICAgICAnaWQnOiAxLFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgICdyZWNvcmRzJzogW3tcbiAgICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICB9XVxuICAgIH1cbiAgfVxuICAvLyBBUCAyNkZFQjI1IC0gY2xlYXIgdGhlIGZvcm0gZWxlbWVudHMgXG4gIGNsZWFyRWxlbWVudHMoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBHZXQgdGhlIGVsZW1lbnQgY29tcG9uZW50IHJlZmVyZW5jZVxuICBnZXRFbGVtZW50Q29tcG9uZW50KCk6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Q29tcG9uZW50O1xuICB9XG5cbiAgc2V0RWxlbWVudENvbXBvbmVudChjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICB0aGlzLmVsZW1lbnRDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICAvLyBBZGQgYSBuZXcgZWxlbWVudCB0byB0aGUgZm9ybVxuICBhZGRFbGVtZW50KGVsZW1lbnQ6IEZvcm1FbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFlbGVtZW50Lm9wdGlvbnMpIHtcbiAgICAgIGVsZW1lbnQub3B0aW9ucyA9IFtdOyAvLyBvcHRpb25zIGlzIGluaXRpYWxpemVkXG4gICAgfVxuICAgIGVsZW1lbnRbJ3F1ZXN0aW9uQm9va0lkJ10gPSB0aGlzLnVuaXF1ZV9pZDtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vIFNLUzEzTUFSMjUgYWRkIHRhYmxlIGVsZW1lbnRcbiAgYWRkVGFibGVFbGVtZW50KGVsZW1lbnQ6IGFueSwgaW5kIDphbnkpIHtcbiAgICAvL1NLUzEzTUFSMjUgRW5zdXJlIGN1cnJlbnRFbGVtZW50IGV4aXN0c1xuICAgIGlmICghdGhpcy5jdXJyZW50RWxlbWVudCkgcmV0dXJuO1xuICAgIC8vIENsb25lIGVsZW1lbnRzIGFycmF5XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcblxuICAgIC8vIFNLUzEzTUFSMjUgRmluZCB0aGUgZWxlbWVudCBhbmQgdXBkYXRlIGl0cyBjb2x1bW5zXG4gICAgY29uc3QgaW5kZXggPSBlbGVtZW50cy5maW5kSW5kZXgoZWwgPT4gZWwuaWQgPT09IHRoaXMuY3VycmVudEVsZW1lbnQuaWQpO1xuXG4gICAgLy8gQ2xvbmUgY29sdW1ucyBhcnJheSB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb25zdCB1cGRhdGVkQ29sdW1ucyA9IFsuLi4odGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmNvbHVtbnMgfHwgW10pLCBlbGVtZW50XTtcbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7XG4gICAgICAnbGFiZWwnOiBlbGVtZW50LmxhYmVsLFxuICAgICAgJ2FwaU5hbWUnOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgIFwiaXNkZWxldGVkXCI6IGZhbHNlLFxuICAgICAgXCJvcmRlcmJ5ZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwiZmlsdGVyZmxhZ1wiOiBmYWxzZSxcbiAgICAgIFwib3V0cHV0RmxhZ1wiOiB0cnVlLFxuICAgICAgXCJpc2NoaWxkXCI6IGZhbHNlLFxuICAgICAgXCJyZXN1bHRhbnRmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJzZWFyY2hmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJmbGRUeXBlXCI6IGVsZW1lbnQudHlwZSxcbiAgICAgIFwicmVhZE9ubHlcIjogZmFsc2UsXG4gICAgICBcInVuaXF1ZUlkZW50aWZpZXJcIjogZWxlbWVudC5pZFxuICAgIH1cbiAgICBsZXQgZmllbGRzTWV0YSA9IFsuLi4oQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkgPyB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSA6ICh0eXBlb2YgdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEgPT09ICdzdHJpbmcnID8gKEpTT04ucGFyc2UodGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmZpZWxkc01ldGEpKSA6IFt0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YV0pKSwgdGVtcEZpZWxkc01ldGFdO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0geyAuLi5lbGVtZW50c1tpbmRleF0sIGNvbHVtbnM6IHVwZGF0ZWRDb2x1bW5zLCBmaWVsZHNNZXRhOiBmaWVsZHNNZXRhIH07XG4gICAgfVxuXG4gICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBmb3JtIGVsZW1lbnRzXG4gICAgLy8gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoZWxlbWVudHMpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kKTtcbiAgICAvLyBMb2cgZm9yIGRlYnVnZ2luZ1xuICAgIC8vIGNvbnNvbGUubG9nKFwiVXBkYXRlZCBmb3JtIGVsZW1lbnRzOlwiLCAgdGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG5cbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgIG9wdGlvbnM6IHVwZGF0ZXMub3B0aW9ucyB8fCBlbGVtZW50c1tpbmRleF0ub3B0aW9ucyB8fCBbXSxcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRFbGVtZW50ID0ge1xuICAgICAgICAuLi50aGlzLmZvcm1FbGVtZW50c1tpbmRleF0sXG4gICAgICAgIC4uLnVwZGF0ZXNcbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQpIHtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvblRleHQgPSB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQucmVwbGFjZSgvXFxzKlxcKiskLywgJycpO1xuICAgICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZXMucmVxdWlyZWQgPyBgJHtxdWVzdGlvblRleHR9ICpgIDogcXVlc3Rpb25UZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgLi4udXBkYXRlcyB9O1xuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSB0cnVlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiAhdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gYCR7dXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0fSAqYDtcbiAgICAgIH0gZWxzZSBpZiAodXBkYXRlcy5yZXF1aXJlZCA9PT0gZmFsc2UgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5lbmRzV2l0aCgnKicpKSB7XG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5zbGljZSgwLCAtMik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cbiAgdXBkYXRlVGl0bGUoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBVcGRhdGVzIHRoZSB0aXRsZSBvZiB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSBib29rICBcbiAgICB0aGlzLmJvb2sucmVjb3Jkc1swXS50aXRsZSA9IGV2ZW50O1xuICB9XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICB9XG4gIC8vIFNLUzE5TUFSMjUgc2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5jdXJyZW50RWxlbWVudC5maWVsZHNNZXRhKTtcbiAgICB9XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5maW5kKGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gZm91bmRJdGVtPy51bmlxdWVJZGVudGlmaWVyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICB9XG4gIHJlbW92ZVNlbGVjdGVkVGFibGVFbGVtZW50KGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuY3VycmVudEVsZW1lbnQuZmllbGRzTWV0YSk7XG4gICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgaXRlbVxuICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmRJbmRleChpdGVtID0+IGl0ZW1bJ2FwaU5hbWUnXSA9PT0gZXZlbnQ/LmNvbHVtbik7XG4gICAgICAvLyBSZW1vdmUgdGhlIGl0ZW0gaWYgZm91bmRcbiAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IG51bGxcbiAgICB0aGlzLmVsZW1lbnRVcGRhdGUoaW5kZXgsIHRoaXMuY3VycmVudEVsZW1lbnQpXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBnZXRTZWxlY3RUYWJsZUNvbHVtbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RUYWJsZUNvbHVtbjtcbiAgfVxuICBzZWxlY3RIZWFkaW5nKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgRW1pdHMgdGhlIHNlbGVjdGVkIGhlYWRpbmcgZXZlbnQgIFxuICAgIHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG5cbiAgZ2V0RWxlbWVudHMoKTogRm9ybUVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVsZW1lbnRzLm1hcChlbGVtZW50ID0+ICh7XG4gICAgICAuLi5lbGVtZW50LFxuICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdLFxuICAgIH0pKTtcbiAgfVxuICBzb3J0RWxlbWVudHNCeU9yZGVyKCk6IHZvaWQge1xuICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJ5IGN1cnJlbnQgb3JkZXJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5zb3J0KChhLCBiKSA9PiBhLnF1ZXN0aW9uTnVtYmVyIC0gYi5xdWVzdGlvbk51bWJlcik7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGVsZW1lbnQucXVlc3Rpb25OdW1iZXIgPSBpbmRleCArIDE7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy9BUC0xME1BUjI1IFJldHVybnMgdGhlIGN1cnJlbnQgYm9vayBkYXRhICBcbiAgZ2V0Qm9vaygpIHtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuICB9XG4gIC8vIEluIEZvcm1CdWlsZGVyU2VydmljZVxuICBkb3dubG9hZEVsZW1lbnQoKSB7XG4gICAgLy8gU0tTMjhNQVIyNSByZW1vdmUgcWJSZWZlcmVuY2VRdWVzdGlvbnMgZm9yIGRvd25sb2FkIHRpbWUgYW5kIHN1YnRleHQgdG8gY29udmVydCB0b28gc3RyaW5nXG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdib29rJykge1xuICAgICAgICBkZWxldGUgZWxlbWVudC5xYlJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5wYXJzZShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuc3ViVGV4dC5maWVsZCAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8gQ29udmVydCB0byBhbiBhcnJheSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICAgIGVsZW1lbnQuc3ViVGV4dC5maWVsZCAgPSBlbGVtZW50LnN1YlRleHQuZmllbGQuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKCBlbGVtZW50LnN1YlRleHQpe1xuICAgICAgICBlbGVtZW50LnN1YlRleHQgPSB0eXBlb2YgZWxlbWVudD8uc3ViVGV4dCAhPT0gJ29iamVjdCcgPyBlbGVtZW50Py5zdWJUZXh0IDogSlNPTi5zdHJpbmdpZnkoZWxlbWVudFsnc3ViVGV4dCddKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gICAgY29uc29sZS5sb2coJ2Jvb2snLCB0aGlzLmJvb2spO1xuICAgIGxldCB0ZW1wRWxlbWVudDogYW55ID0ge307XG5cbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ1JhZGlvJyB8fCBlbGVtZW50LnR5cGUgPT09ICdDaGVja2JveCcpIHtcbiAgICAgICAgLy9BUCAyNUZFQjI1IC0gU3RvcmUgdGhlIGVudGlyZSBxdWVzdGlvbiB3aXRoIGl0cyBvcHRpb25zIHVuZGVyIGl0cyBJRFxuICAgICAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSA9IHtcbiAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgIG9wdGlvbnM6IGVsZW1lbnQub3B0aW9ucyB8fCBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ib29rLnNxT3B0aW9ucyA9IHRlbXBFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gIH1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogRm9ybUVsZW1lbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQodGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG4gIC8vIFJlbW92ZSBhbiBlbGVtZW50IGJ5IElEXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcbiAgcmVtb3ZlRWxlbWVudENvbXBvbmVudChpZDogYW55KSB7XG4gICAgdGhpcy50ZW1wRWxlbSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB7fVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IHRoaXMudGVtcEVsZW07XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZShpbmRleDogYW55LCBlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgIGVsZW1lbnRzW2luZGV4XSA9IGVsZW1lbnRcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBK0RuRCxNQUFNLE9BQU8sa0JBQWtCO0lBbUJUO0lBbEJaLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3RCxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3JELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3pELElBQUksQ0FBTTtJQUNWLFNBQVMsQ0FBTTtJQUNmLFFBQVEsQ0FBUTtJQUVoQixhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsY0FBYyxDQUFNO0lBQ3BCLGlCQUFpQixDQUFNO0lBQ3ZCLHlFQUF5RTtJQUV6RSxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FB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LGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBUCAyMkpBTjI1XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlcy9idWlsZGVyL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW50ZXJmYWNlIEZvcm1FbGVtZW50IHtcbiAgYWN0aW9uOiBhbnk7XG4gIGlkOiBhbnk7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogYW55O1xuICBxdWVzdGlvblRleHQ/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uPzogc3RyaW5nO1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlZmVyZW5jZUZpZWxkPzogYW55O1xuICBhZGRpdGlvbmFsUmljaENvbnRlbnQ/OiBhbnk7XG4gIGdyb3VwTmFtZT86IGFueTtcbiAgaXNEYXRlQmFja3dhcmQ/OiBib29sZWFuO1xuICB0aXRsZT86IGFueTtcbiAgc3ViVGl0bGU/OiBhbnk7XG4gIHNpemU/OiBudW1iZXI7XG4gIGlzRGF0ZUZvcndhcmQ/OiBib29sZWFuO1xuICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgaXNUaXRsZT86IGJvb2xlYW47XG4gIG5leHRRdWVzdGlvbj86IGFueTtcbiAgYWxsb3dlZEZpbGVFeHRlbnNpb25zPzogYW55O1xuICBxdWVzdGlvbk51bWJlcj86IG51bWJlcjtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb25Cb29rSWQ/OiBhbnk7XG4gIGZpZWxkc01ldGE/OiBhbnk7XG4gIHRyYWNraW5nSWQ/OiBhbnk7XG4gIHJlY29yZElkPzogYW55O1xuICBxYlJlZmVyZW5jZT86IGFueTtcbiAgcWJSZWZlcmVuY2VRdWVzdGlvbnM/OiBhbnk7XG4gIHByaW1hcnlLZXk6IGJvb2xlYW4sXG4gIHN0eWxlOiB7XG4gICAgbGFiZWxDbGFzczogYW55LFxuICAgIGxhYmVsU3R5bGU6IGFueSxcbiAgICBsYWJlbFZhbHVlU3R5bGU6IGFueSxcbiAgICBpbnB1dENsYXNzOiBhbnksXG4gICAgaW5wdXRTdHlsZTogYW55LFxuICAgIHNob3dMYWJlbDogYm9vbGVhbixcbiAgICBib29rU3R5bGU6IGFueSxcbiAgICBkaXJlY3Rpb246IGFueSxcbiAgICBxdWVzdGlvblN0eWxlOiBhbnksXG4gIH0sXG4gICAgLy8gQVAgMjVGRUIyNSAtIG9wdGlvbnMgYXJyYXlcbiAgb3B0aW9ucz86IEFycmF5PHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IGFueTtcbiAgICBxdWVzdGlvbklkOiBhbnk7XG4gICAgbmV4dFF1ZXN0aW9uOiBhbnk7XG4gICAgbmFtZTogYW55O1xuICAgIGlkOiBhbnk7XG4gIH0+O1xuICBzdWJUZXh0OiBhbnksXG4gIGNvbHVtbnM/OiBhbnk7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHM6IEZvcm1FbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRWxlbWVudFtdPihbXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRFbGVtZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIHByaXZhdGUgc2VsZWN0SGVhZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBhY3Rpb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgYm9vazogYW55O1xuICB1bmlxdWVfaWQ6IGFueTtcbiAgdGVtcEVsZW06IGFueVtdO1xuXG4gIGZvcm1FbGVtZW50cyQgPSB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdEhlYWRlclN1YmplY3QkID0gdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBhY3Rpb25TdWJqZWN0JCA9IHRoaXMuYWN0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgY3VycmVudEVsZW1lbnQ6IGFueTtcbiAgc2VsZWN0VGFibGVDb2x1bW46IGFueTtcbiAgLy8gYm9vazogeyBib29rUXVlc3Rpb25zTWFwOiB7IHVuaXF1ZV9pZDogeyBzdWJRdWVzdGlvbnM6IGFueVtdOyB9OyB9OyB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIC8vIExvYWQgc2F2ZWQgZWxlbWVudHMgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xuICAgIGlmIChzYXZlZEZvcm1FbGVtZW50cykge1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcbiAgICAgIHRoaXMuZW1pdEZvcm1FbGVtZW50cygpO1xuICAgICAgLy8gdGhpcy5ib29rID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYm9vaycpIHx8ICd7fScpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGVtaXRGb3JtRWxlbWVudHMoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH0gIFxuICBpbnRpYWxpemVCb29rKGJvb2s6IGFueSkge1xuICAgIC8vIEFQIDEzTUFSMjUgLSBHZXQgdGhlIHVuaXF1ZSBpZCBpbiB0aGUgYm9va1F1ZXN0aW9uc01hcCBcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IE9iamVjdC5rZXlzKGJvb2suYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgbGV0IHRlbXBib29rID0gYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnM7XG4vLyBTS1MyOE1BUjI1IHVwZGF0ZSBuZXN0ZWQgYm9vayBRdWVzdGlvbnNNYXBcbiAgICB0ZW1wYm9vay5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImJvb2tcIiAmJiBlbGVtZW50LnFiUmVmZXJlbmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0UmVmUWJEYXRhKGVsZW1lbnQucWJSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ3FiUmVmZXJlbmNlUXVlc3Rpb25zJ10gPSByZXNwb25zZTsgLy8gQXNzaWduIHJlc3BvbnNlIHRvIHFiUmVmZXJlbmNlUXVlc3Rpb25zXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBUEkgRXJyb3I6XCIsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0ZW1wYm9va1xuICAgIHRoaXMuYm9vayA9IGJvb2tcblxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXT8uc3ViUXVlc3Rpb25zPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuYm9vay5zcU9wdGlvbnM/LltlbGVtZW50LmlkXSkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSB0aGlzLmJvb2suc3FPcHRpb25zW2VsZW1lbnQuaWRdLm9wdGlvbnM7XG4gICAgICB9XG4gICAgICB0aGlzLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvL1NLUzI4TUFSMjUgRnVuY3Rpb24gdG8gZmV0Y2ggcmVmcWIgZGF0YVxuICBnZXRSZWZRYkRhdGEocmVmcWJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGBodHRwczovL2Rldi1hcGkudmFsYXJoci5jb20vbnh0P25hbWU9JHtyZWZxYmlkfWApO1xuICB9XG5cbiAgIC8vQVAtMTdBUFIyNSBGdW5jdGlvbiB0byBnZW5lcmF0ZSB1bmlxdWUgaWRcbiAgIGFkZEVsZW1lbnRXaXRoSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSAnbmdueHQnOyBcbiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgbGV0IGNvcmUgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIGNvcmUgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgY29yZTsgXG4gIH1cbiAgLy8gQVAgMjNNQVkyNSBVcGRhdGVzIHRoZSBxdWVzdGlvbmJvb2sgYWN0aW9uIGJ1dHRvbnM6IGFkZHMgb3IgcmVtb3ZlcyBiYXNlZCBvbiBhY3Rpb24gdHlwZVxuICB1cGRhdGVRdWVzdGlvbkJvb2tBY3Rpb25CdXR0b25zKGJ1dHRvbjogYW55LGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJvb2sucXVlc3Rpb25ib29rKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rID0ge307XG4gICAgfVxuICAgIGlmKGFjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgIHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uLnB1c2goYnV0dG9uKTtcbiAgICB9ZWxzZSBpZihhY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICB0aGlzLmJvb2sucXVlc3Rpb25ib29rLmFjdGlvbiA9IHRoaXMuYm9vay5xdWVzdGlvbmJvb2suYWN0aW9uLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmlkICE9PSBidXR0b24uaWQpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblN1YmplY3QubmV4dCh0aGlzLmJvb2spO1xuICB9XG4gIFxuICBuZXdCb29rKCkge1xuICAgIHRoaXMudW5pcXVlX2lkID0gdGhpcy5hZGRFbGVtZW50V2l0aElkKCk7XG4gICAgdGhpcy5ib29rID0ge1xuICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XG4gICAgICAgIFt0aGlzLnVuaXF1ZV9pZF06IHtcbiAgICAgICAgICAnc3ViUXVlc3Rpb25zJzogW10sXG4gICAgICAgICAgJ3R5cGUnOiAnQm9vaydcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdxdWVzdGlvbmJvb2snOiB7XG4gICAgICAgIFwiYWN0aW9uXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDYW5jZWxcIixcbiAgICAgICAgICAgIFwiZXZlbnR0b2VtaXRcIjogXCJjbG9zZVwiLFxuICAgICAgICAgICAgXCJhbHRcIjogXCJcIixcbiAgICAgICAgICAgIFwicG9zaXRpb25QZXJjZW50XCI6IDMsXG4gICAgICAgICAgICBcIndpZHRoXCI6IDEwMCxcbiAgICAgICAgICAgIFwidGV4dENvbG9yXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICAgICAgXCJib3JkZXJSYWRpdXNcIjogNixcbiAgICAgICAgICAgICdpZCc6IDEsXG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlNhdmVcIixcbiAgICAgICAgICAgIFwiZXZlbnR0b2VtaXRcIjogXCJzdWJtaXRcIixcbiAgICAgICAgICAgIFwiYWx0XCI6IFwiXCIsXG4gICAgICAgICAgICBcImVuZHBvaW50XCI6IFwiXCIsXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBcIlBPU1RcIixcbiAgICAgICAgICAgIFwicG9zaXRpb25QZXJjZW50XCI6IDE0LCAgXG4gICAgICAgICAgICBcIndpZHRoXCI6IDEwMCxcbiAgICAgICAgICAgIFwidGV4dENvbG9yXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICAgICAgXCJib3JkZXJSYWRpdXNcIjogNixcbiAgICAgICAgICAgICdpZCc6IDEsXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgJ3JlY29yZHMnOiBbe1xuICAgICAgICAnaWQnOiB0aGlzLnVuaXF1ZV9pZCxcbiAgICAgICAgJ3RpdGxlJzogJ1VudGl0bGVkJyxcbiAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFt7fV1cbiAgICAgIH1dXG4gICAgfVxuICB9XG4gIC8vIEFQIDI2RkVCMjUgLSBjbGVhciB0aGUgZm9ybSBlbGVtZW50cyBcbiAgY2xlYXJFbGVtZW50cygpIHtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xuICAgIHRoaXMuZW1pdEZvcm1FbGVtZW50cygpO1xuICB9XG4gIC8vIEdldCB0aGUgZWxlbWVudCBjb21wb25lbnQgcmVmZXJlbmNlXG4gIGdldEVsZW1lbnRDb21wb25lbnQoKTogRWxlbWVudENvbXBvbmVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRDb21wb25lbnQ7XG4gIH1cblxuICBzZXRFbGVtZW50Q29tcG9uZW50KGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCkge1xuICAgIHRoaXMuZWxlbWVudENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBlbGVtZW50IHRvIHRoZSBmb3JtXG4gIGFkZEVsZW1lbnQoZWxlbWVudDogRm9ybUVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIWVsZW1lbnQub3B0aW9ucykge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0gW107IC8vIG9wdGlvbnMgaXMgaW5pdGlhbGl6ZWRcbiAgICB9XG4gICAgZWxlbWVudFsncXVlc3Rpb25Cb29rSWQnXSA9IHRoaXMudW5pcXVlX2lkO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgdGhpcy5lbWl0Rm9ybUVsZW1lbnRzKCk7XG4gIH1cbiAgLy8gU0tTMTNNQVIyNSBhZGQgdGFibGUgZWxlbWVudFxuICBhZGRUYWJsZUVsZW1lbnQoZWxlbWVudDogYW55LCBpbmQgOmFueSkge1xuICAgIC8vU0tTMTNNQVIyNSBFbnN1cmUgY3VycmVudEVsZW1lbnQgZXhpc3RzXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuXG4gICAgLy8gU0tTMTNNQVIyNSBGaW5kIHRoZSBlbGVtZW50IGFuZCB1cGRhdGUgaXRzIGNvbHVtbnNcbiAgICBjb25zdCBpbmRleCA9IGVsZW1lbnRzLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0gdGhpcy5jdXJyZW50RWxlbWVudC5pZCk7XG5cbiAgICAvLyBDbG9uZSBjb2x1bW5zIGFycmF5IHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gWy4uLih0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uY29sdW1ucyB8fCBbXSksIGVsZW1lbnRdO1xuICAgIGxldCB0ZW1wRmllbGRzTWV0YSA9IHtcbiAgICAgICdsYWJlbCc6IGVsZW1lbnQubGFiZWwsXG4gICAgICAnYXBpTmFtZSc6IGVsZW1lbnQuZmllbGROYW1lLFxuICAgICAgXCJpc2RlbGV0ZWRcIjogZmFsc2UsXG4gICAgICBcIm9yZGVyYnlmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJmaWx0ZXJmbGFnXCI6IGZhbHNlLFxuICAgICAgXCJvdXRwdXRGbGFnXCI6IHRydWUsXG4gICAgICBcImlzY2hpbGRcIjogZmFsc2UsXG4gICAgICBcInJlc3VsdGFudGZsYWdcIjogZmFsc2UsXG4gICAgICBcInNlYXJjaGZsYWdcIjogZmFsc2UsXG4gICAgICBcImZsZFR5cGVcIjogZWxlbWVudC50eXBlLFxuICAgICAgXCJyZWFkT25seVwiOiBmYWxzZSxcbiAgICAgIFwidW5pcXVlSWRlbnRpZmllclwiOiBlbGVtZW50LmlkXG4gICAgfVxuICAgIGxldCBmaWVsZHNNZXRhID0gWy4uLihBcnJheS5pc0FycmF5KHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhKSA/IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhIDogKHR5cGVvZiB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSA9PT0gJ3N0cmluZycgPyAoSlNPTi5wYXJzZSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkpIDogW3RoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhXSkpLCB0ZW1wRmllbGRzTWV0YV07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgY29sdW1uczogdXBkYXRlZENvbHVtbnMsIGZpZWxkc01ldGE6IGZpZWxkc01ldGEgfTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZvcm0gZWxlbWVudHNcbiAgICAvLyB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmQpO1xuICAgIC8vIExvZyBmb3IgZGVidWdnaW5nXG4gICAgLy8gY29uc29sZS5sb2coXCJVcGRhdGVkIGZvcm0gZWxlbWVudHM6XCIsICB0aGlzLmZvcm1FbGVtZW50cyk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KGluZGV4OiBudW1iZXIsIHVwZGF0ZXM6IFBhcnRpYWw8Rm9ybUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgIC4uLmVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgb3B0aW9uczogdXBkYXRlcy5vcHRpb25zIHx8IGVsZW1lbnRzW2luZGV4XS5vcHRpb25zIHx8IFtdLFxuICAgICAgfTtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KGVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlc1xuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XG4gICAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlcy5yZXF1aXJlZCA/IGAke3F1ZXN0aW9uVGV4dH0gKmAgOiBxdWVzdGlvblRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCAuLi51cGRhdGVzIH07XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdID0gdXBkYXRlZEVsZW1lbnQ7XG4gICAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xuICAgIH1cbiAgfVxuICB1cGRhdGVUaXRsZShldmVudDogYW55KSB7XG4gICAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIG9mIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIGJvb2sgIFxuICAgIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG4gIH1cbiAgc2V0U2VsZWN0ZWRFbGVtZW50KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBzZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBzZXRTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogYW55LCBldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XVxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmN1cnJlbnRFbGVtZW50LmZpZWxkc01ldGEpO1xuICAgIH1cbiAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnID8gdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLmZpbmQoaXRlbSA9PiBpdGVtWydhcGlOYW1lJ10gPT09IGV2ZW50Py5jb2x1bW4pIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBmb3VuZEl0ZW0/LnVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gIH1cbiAgcmVtb3ZlU2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5jdXJyZW50RWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5jdXJyZW50RWxlbWVudC5maWVsZHNNZXRhKTtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBpdGVtXG4gICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZEluZGV4KGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKTtcbiAgICAgIC8vIFJlbW92ZSB0aGUgaXRlbSBpZiBmb3VuZFxuICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RWxlbWVudFsnZmllbGRzTWV0YSddLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICAgIHRoaXMuZWxlbWVudFVwZGF0ZShpbmRleCwgdGhpcy5jdXJyZW50RWxlbWVudClcbiAgfVxuICAvLyBTS1MxOU1BUjI1IGdldCB0aGUgc2VsZWN0ZWQgdGFibGUgY29sdW1uXG4gIGdldFNlbGVjdFRhYmxlQ29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uO1xuICB9XG4gIHNlbGVjdEhlYWRpbmcoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBFbWl0cyB0aGUgc2VsZWN0ZWQgaGVhZGluZyBldmVudCAgXG4gICAgdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICB9XG5cblxuICBnZXRFbGVtZW50cygpOiBGb3JtRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gKHtcbiAgICAgIC4uLmVsZW1lbnQsXG4gICAgICBvcHRpb25zOiBlbGVtZW50Lm9wdGlvbnMgfHwgW10sXG4gICAgfSkpO1xuICB9XG4gIHNvcnRFbGVtZW50c0J5T3JkZXIoKTogdm9pZCB7XG4gICAgLy9BUC0xME1BUjI1IFNvcnQgZWxlbWVudHMgYnkgY3VycmVudCBvcmRlclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnNvcnQoKGEsIGIpID0+IGEucXVlc3Rpb25OdW1iZXIgLSBiLnF1ZXN0aW9uTnVtYmVyKTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5xdWVzdGlvbk51bWJlciA9IGluZGV4ICsgMTtcbiAgICB9KTtcbiAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgfVxuICAvL0FQLTEwTUFSMjUgUmV0dXJucyB0aGUgY3VycmVudCBib29rIGRhdGEgIFxuICBnZXRCb29rKCkge1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gIH1cbiAgLy8gSW4gRm9ybUJ1aWxkZXJTZXJ2aWNlXG4gIGRvd25sb2FkRWxlbWVudCgpIHtcbiAgICAvLyBTS1MyOE1BUjI1IHJlbW92ZSBxYlJlZmVyZW5jZVF1ZXN0aW9ucyBmb3IgZG93bmxvYWQgdGltZSBhbmQgc3VidGV4dCB0byBjb252ZXJ0IHRvbyBzdHJpbmdcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2Jvb2snKSB7XG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnFiUmVmZXJlbmNlUXVlc3Rpb25zO1xuICAgICAgfVxuICAgICAgaWYoIGVsZW1lbnQuc3ViVGV4dCl7XG4gICAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IHR5cGVvZiBlbGVtZW50Py5zdWJUZXh0ID09PSAnb2JqZWN0JyA/IGVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnBhcnNlKGVsZW1lbnRbJ3N1YlRleHQnXSk7XG4gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5zdWJUZXh0LmZpZWxkICA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGFuIGFycmF5IGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAgICAgICAgZWxlbWVudC5zdWJUZXh0LmZpZWxkICA9IGVsZW1lbnQuc3ViVGV4dC5maWVsZC5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoIGVsZW1lbnQuc3ViVGV4dCl7XG4gICAgICAgIGVsZW1lbnQuc3ViVGV4dCA9IHR5cGVvZiBlbGVtZW50Py5zdWJUZXh0ICE9PSAnb2JqZWN0JyA/IGVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnN0cmluZ2lmeShlbGVtZW50WydzdWJUZXh0J10pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0aGlzLmZvcm1FbGVtZW50cztcbiAgICBjb25zb2xlLmxvZygnYm9vaycsIHRoaXMuYm9vayk7XG4gICAgbGV0IHRlbXBFbGVtZW50OiBhbnkgPSB7fTtcblxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09PSAnUmFkaW8nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ0NoZWNrYm94Jykge1xuICAgICAgICAvL0FQIDI1RkVCMjUgLSBTdG9yZSB0aGUgZW50aXJlIHF1ZXN0aW9uIHdpdGggaXRzIG9wdGlvbnMgdW5kZXIgaXRzIElEXG4gICAgICAgIHRlbXBFbGVtZW50W2VsZW1lbnQuaWRdID0ge1xuICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmJvb2suc3FPcHRpb25zID0gdGVtcEVsZW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMuYm9vaztcbiAgfVxuICAvLyBBUC0wNk1BUjI1IC0gRWxlbWVudCBuZXcgb3JkZXIgdXBkYXRlXG4gIHVwZGF0ZUVsZW1lbnRzT3JkZXIodXBkYXRlZEVsZW1lbnRzOiBGb3JtRWxlbWVudFtdKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbLi4udXBkYXRlZEVsZW1lbnRzXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dCh0aGlzLmZvcm1FbGVtZW50cyk7XG4gIH1cbiAgLy8gUmVtb3ZlIGFuIGVsZW1lbnQgYnkgSURcbiAgLy8gU2F2ZSBlbGVtZW50cyB0byBsb2NhbFN0b3JhZ2UgYW5kIHVwZGF0ZSB0aGUgc3ViamVjdFxuICByZW1vdmVFbGVtZW50Q29tcG9uZW50KGlkOiBhbnkpIHtcbiAgICB0aGlzLnRlbXBFbGVtID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHt9XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pZCAhPT0gaWQpIHtcbiAgICAgICAgdGhpcy50ZW1wRWxlbS5wdXNoKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gdGhpcy50ZW1wRWxlbTtcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB0aGlzLmVtaXRGb3JtRWxlbWVudHMoKTtcbiAgfVxuICAvLyBTS1MxOU1BUjI1IHVwZGF0ZSB0aGUgZWxlbWVudFxuICBlbGVtZW50VXBkYXRlKGluZGV4OiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0gZWxlbWVudFxuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi5lbGVtZW50c10pO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIl19
|