asp-lib 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/lib/entity-admin/entity-admin.component.mjs +12 -1
- package/esm2022/lib/input/input.component.mjs +3 -3
- package/esm2022/lib/items-viewer/items-viewer.component.mjs +75 -4
- package/fesm2022/asp-lib.mjs +89 -8
- package/fesm2022/asp-lib.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
|
-
import { debounceTime, of, Subject, switchMap } from 'rxjs';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, EMPTY, of, Subject, switchMap } from 'rxjs';
|
|
4
4
|
import { defaultSwitchMapper } from '../utils/utils';
|
|
5
|
+
import { HttpParams } from '@angular/common/http';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/common/http";
|
|
7
8
|
import * as i2 from "../services/snackbar.service";
|
|
@@ -124,6 +125,69 @@ export class ItemsViewerComponent {
|
|
|
124
125
|
});
|
|
125
126
|
}
|
|
126
127
|
}
|
|
128
|
+
ngOnInit() {
|
|
129
|
+
if (Boolean(this.listEndpoint)) {
|
|
130
|
+
this.reloadSubject?.subscribe({ next: () => this.loadItems() });
|
|
131
|
+
}
|
|
132
|
+
if (this.title && this.title === 'Users') {
|
|
133
|
+
this.search.valueChanges
|
|
134
|
+
.pipe(debounceTime(300), distinctUntilChanged(), switchMap((newSearch) => {
|
|
135
|
+
if (!this.listEndpoint || this.listEndpoint.trim() === '') {
|
|
136
|
+
return EMPTY;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
}
|
|
140
|
+
this.loadingStatus = true;
|
|
141
|
+
let params = new HttpParams();
|
|
142
|
+
if (this.showPaginator) {
|
|
143
|
+
params = params
|
|
144
|
+
.set('page', this.currentPage)
|
|
145
|
+
.set('pageSize', this.pageSize);
|
|
146
|
+
}
|
|
147
|
+
if (this.endpointParams) {
|
|
148
|
+
const extraParams = new URLSearchParams(this.endpointParams);
|
|
149
|
+
extraParams.forEach((value, key) => {
|
|
150
|
+
params = params.set(key, value);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
params = params.set('search', newSearch?.trim() ?? '');
|
|
154
|
+
return this.http.get(this.listEndpoint, { params })
|
|
155
|
+
.pipe(switchMap(this.listRequestMapping ?? defaultSwitchMapper));
|
|
156
|
+
}))
|
|
157
|
+
.subscribe({
|
|
158
|
+
next: (response) => {
|
|
159
|
+
if (response.responseCode === 200) {
|
|
160
|
+
this.loadedItems = response.load;
|
|
161
|
+
this.itemsLoaded.emit(response.load);
|
|
162
|
+
this.lengthUsers = response.totalRecords;
|
|
163
|
+
this.filterItems = new Set(this.loadedItems.map(item => item.id));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.error(response);
|
|
167
|
+
this.snackbar.warning(this.translate.transform(this.itemsEndpoint.errors?.[response.responseCode] ?? 'Something went wrong'));
|
|
168
|
+
}
|
|
169
|
+
this.loadingStatus = false;
|
|
170
|
+
},
|
|
171
|
+
error: (error) => {
|
|
172
|
+
console.error(error);
|
|
173
|
+
this.loadingStatus = false;
|
|
174
|
+
this.snackbar.warning(this.translate.transform(this.itemsEndpoint.errors?.['default'] ?? 'Something went wrong'));
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.search.valueChanges.pipe(debounceTime(300)).subscribe({
|
|
180
|
+
next: (newSearch) => {
|
|
181
|
+
this.filterItems = new Set(this.loadedItems.filter(item => (this.searchFilter ?? defaultFilter)(item)
|
|
182
|
+
.filter((value) => Boolean(value))
|
|
183
|
+
.some((value) => {
|
|
184
|
+
return value.toLowerCase?.().includes(newSearch?.toLowerCase() ?? '');
|
|
185
|
+
})).map(item => item.id));
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/*
|
|
127
191
|
ngOnInit() {
|
|
128
192
|
if (Boolean(this.listEndpoint)) {
|
|
129
193
|
// this.loadItems();
|
|
@@ -131,10 +195,17 @@ export class ItemsViewerComponent {
|
|
|
131
195
|
}
|
|
132
196
|
this.search.valueChanges.pipe(debounceTime(300)).subscribe({
|
|
133
197
|
next: (newSearch) => {
|
|
134
|
-
this.filterItems = new Set(this.loadedItems.filter(
|
|
198
|
+
this.filterItems = new Set(this.loadedItems.filter(
|
|
199
|
+
item => (this.searchFilter ?? defaultFilter)(item)
|
|
200
|
+
.filter((value: any) => Boolean(value))
|
|
201
|
+
.some((value: string) => {
|
|
202
|
+
return value.toLowerCase?.().includes(newSearch?.toLowerCase() ?? '')
|
|
203
|
+
})
|
|
204
|
+
).map(item => item.id));
|
|
135
205
|
}
|
|
136
|
-
})
|
|
206
|
+
})
|
|
137
207
|
}
|
|
208
|
+
*/
|
|
138
209
|
ngOnChanges(changes) {
|
|
139
210
|
let { listEndpoint, items, orderProperties } = changes;
|
|
140
211
|
if (Boolean(listEndpoint) && (listEndpoint?.previousValue !== listEndpoint?.currentValue)) {
|
|
@@ -270,4 +341,4 @@ function switchMapper(mapper) {
|
|
|
270
341
|
return mapper(value);
|
|
271
342
|
};
|
|
272
343
|
}
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9pdGVtcy12aWV3ZXIvaXRlbXMtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9pdGVtcy12aWV3ZXIvaXRlbXMtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxZQUFZLEVBQXFCLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9FLE9BQU8sRUFBaUIsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUdwRSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQU8xRSxNQUFNLE9BQU8sb0JBQW9CO0lBZ0RoQyxJQUFJLFFBQVEsS0FBSyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzdDLElBQUksT0FBTyxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDM0MsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ2hFLElBQUksT0FBTyxLQUFLLE9BQU8sSUFB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TUFBZ0I7SUFDdEMsT0FBTyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQUEsQ0FBQyxDQUFBO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCYXNpY0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9iYXNpYy1pdGVtL2Jhc2ljLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBpc09ic2VydmFibGUsIG1hcCwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zbmFja2Jhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdERldGFpbHMsIFNlY3VyaXR5RW5kcG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0TWFwcGVyLCBkZWZhdWx0U3dpdGNoTWFwcGVyIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuY29uc3QgZGVmYXVsdEZpbHRlciA9IChpdGVtOiBhbnkpID0+IFtpdGVtPy5uYW1lID8/IEpTT04uc3RyaW5naWZ5KGl0ZW0pXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWl0ZW1zLXZpZXdlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2l0ZW1zLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCAnLi9pdGVtcy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRlbXNWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG5cdEBJbnB1dCgpIGljb246IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblx0QElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1JY29uOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtczogYW55W10gPSBbXTtcclxuXHRASW5wdXQoKSBlbnRpdHlVaUNvbXBvbmVudDogVHlwZTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblx0QElucHV0KCkgdWlDb21wb25lbnRJbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHQvLyBASW5wdXQoKSBzZWFyY2hCeTogc3RyaW5nW10gPSBbJ25hbWUnXTtcclxuXHRASW5wdXQoKSBzZWFyY2hGaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHRASW5wdXQoKSBzaG93Q3JlYXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd09yZGVyQnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcclxuXHRASW5wdXQoKSBzZWxlY3Rpb25JZHM6IFNldDxzdHJpbmcgfCBudW1iZXI+ID0gbmV3IFNldChbXSk7XHJcblx0QElucHV0KCkgbXVsdGlwbGVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93U2VsZWN0ZWRBdFRvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGl0ZW1Db250cm9sczogeyBba2V5OiBudW1iZXIgfCBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cdEBJbnB1dCgpIHNob3dQYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdEBJbnB1dCgpIGRyYWdnYWJsZUl0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgbGlzdEVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtc0VuZHBvaW50OiBTZWN1cml0eUVuZHBvaW50ID0ge3VybDogJyd9O1xyXG5cdEBJbnB1dCgpIGxpc3RSZXF1ZXN0TWFwcGluZzogYW55ID0gKHJlc3BvbnNlOiBhbnkpID0+IG9mKHJlc3BvbnNlKTtcclxuXHRASW5wdXQoKSBlbmRwb2ludFBhcmFtczogc3RyaW5nID0gJyc7XHJcblx0QElucHV0KCkgcmVsb2FkU3ViamVjdD86IFN1YmplY3Q8Ym9vbGVhbj47XHJcblx0QElucHV0KCkgZXh0ZXJuYWxMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgb3JkZXJQcm9wZXJ0aWVzOiB7IHByb3BlcnR5OiBzdHJpbmcsIGFzY0ljb246IHN0cmluZywgZGVzY0ljb246IHN0cmluZywgdG9vbHRpcD86IHN0cmluZyB9W10gPSBbXTtcclxuXHRASW5wdXQoKSBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnTm90IEZvdW5kIDInO1xyXG5cdEBJbnB1dCgpIGl0ZW1MYWJlbE1hcDogYW55ID0gKGl0ZW06IGFueSkgPT4gaXRlbS5uYW1lO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHRvZ2dsZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgYWRkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgaXRlbXNMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRASG9zdEJpbmRpbmcoJ3N0eWxlJykgaG9zdFN0eWxlOiBhbnk7XHJcblxyXG5cdG9yZGVyUHJvcGVydHlJY29uOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IG5hbWU6ICdtZW51LWFscGhhYmV0LWFzYycgfTtcclxuXHRjdXJyZW50T3JkZXI6IHsgcHJvcGVydHk6IHN0cmluZywgYXNjOiBib29sZWFuIH0gPSB7IHByb3BlcnR5OiAnbmFtZScsIGFzYzogdHJ1ZSB9O1xyXG5cdG9yZGVySXRlbXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcblx0c2VhcmNoID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xyXG5cdGN1cnJlbnRQYWdlID0gMTtcclxuXHRASW5wdXQoKSBwYWdlU2l6ZSA9IDUwO1xyXG5cdHBhZ2VJbmRleFVzZXJzID0gMTtcclxuXHRsZW5ndGhVc2VycyA9IDEwO1xyXG5cdHBhZ2VFdmVudDogYW55ID0gJyc7XHJcblx0ZmlsdGVySXRlbXM6IFNldDxudW1iZXI+ID0gbmV3IFNldChbXSk7XHJcblx0bG9hZGVkSXRlbXM6IGFueVtdID0gW107XHJcblx0bG9hZGluZ1N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGdldCBoYXNUaXRsZSgpIHsgcmV0dXJuIEJvb2xlYW4odGhpcy50aXRsZSkgfVxyXG5cdGdldCBoYXNJY29uKCkgeyByZXR1cm4gQm9vbGVhbih0aGlzLmljb24pIH1cclxuXHRnZXQgaGFzT3JkZXJCdXR0b25zKCkgeyByZXR1cm4gdGhpcy5vcmRlclByb3BlcnRpZXMubGVuZ3RoID4gMCB9XHJcblx0Z2V0IGxvYWRpbmcoKSB7IHJldHVybiB0aGlzLmxvYWRpbmdTdGF0dXMgfHwgdGhpcy5leHRlcm5hbExvYWRpbmcgfVxyXG5cclxuXHRnZXQgaXNEeW5hbWljKCkgeyByZXR1cm4gQm9vbGVhbih0aGlzLmxpc3RFbmRwb2ludCkgfVxyXG5cdEBJbnB1dCgpIHNldCBzdHlsZShzdHlsZUlucHV0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcblx0XHR0aGlzLmhvc3RTdHlsZSA9IHN0eWxlSW5wdXQ7XHJcblx0fTtcclxuXHJcblx0Z2V0IGlzRW1wdHkoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5saXN0SXRlbXMubGVuZ3RoIDwgMVxyXG5cdH1cclxuXHJcblx0Z2V0IGVtcHR5TGFiZWwoKSB7XHJcblx0XHRyZXR1cm4gQm9vbGVhbih0aGlzLnNlYXJjaC52YWx1ZSkgPyBcIk5vdCBGb3VuZCAxXCIgOiB0aGlzLmVtcHR5UGxhY2Vob2xkZXI7XHJcblx0fVxyXG5cclxuXHRnZXRJdGVtQ2xhc3MoaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gWydmaWx0ZXItaXRlbScsIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPyAodGhpcy5zZWxlY3Rpb25JZHMuaGFzKGl0ZW0uaWQpID8gJ3NlbGVjdGVkLWl0ZW0nIDogJycpIDogKHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyAnc2VsZWN0ZWQtaXRlbScgOiAnJyksICh0aGlzLm11bHRpcGxlU2VsZWN0aW9uICYmIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkpID8gJ3NlY29uZC1zZWxlY3Rpb24nIDogJycsIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPyAnY2hlY2tib3gtbWFyZ2luJyA6ICcnXVxyXG5cdH1cclxuXHJcblxyXG5cdGdldCBsaXN0SXRlbXMoKSB7XHJcblx0XHQvLyByZXR1cm4gKEJvb2xlYW4odGhpcy5saXN0RW5kcG9pbnQpID8gdGhpcy5sb2FkZWRJdGVtcyA6IHRoaXMuaXRlbXMpLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLnNlYXJjaEJhclByb3BlcnRpZXMuc29tZShwcm9wZXJ0eSA9PiBpdGVtW3Byb3BlcnR5XT8uaW5jbHVkZXModGhpcy5zZWFyY2gudmFsdWU/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSlcclxuXHRcdC8vIFx0LnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG5cdFx0cmV0dXJuIHRoaXMubG9hZGVkSXRlbXNcclxuXHR9XHJcblxyXG5cdGdldE9yZGVySWNvbihwcm9wZXJ0eTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcmRlclByb3BlcnR5SWNvbltwcm9wZXJ0eV07XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrYmFyU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVBpcGUpIHtcclxuXHRcdHRoaXMub3JkZXJJdGVtcy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAobmV3T3JkZXJQcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudE9yZGVyID0geyBwcm9wZXJ0eTogbmV3T3JkZXJQcm9wZXJ0eS5wcm9wZXJ0eSwgYXNjOiAhdGhpcy5jdXJyZW50T3JkZXIuYXNjIH1cclxuXHRcdFx0XHR0aGlzLmxvYWRlZEl0ZW1zID0gYWxwaGFiZXRTb3J0KHRoaXMubG9hZGVkSXRlbXMsIG5ld09yZGVyUHJvcGVydHkucHJvcGVydHksIHRoaXMuY3VycmVudE9yZGVyLmFzYyk7XHJcblx0XHRcdFx0dGhpcy5vcmRlclByb3BlcnR5SWNvbltuZXdPcmRlclByb3BlcnR5LnByb3BlcnR5XSA9IHRoaXMuY3VycmVudE9yZGVyLmFzYyA/IG5ld09yZGVyUHJvcGVydHkuYXNjSWNvbiA6IG5ld09yZGVyUHJvcGVydHkuZGVzY0ljb247XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRpc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtPy5pZCA9PT0gaXRlbS5pZCB9XHJcblxyXG5cclxuXHJcblx0bG9hZEl0ZW1zKCkge1xyXG5cdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gdHJ1ZTtcclxuXHRcdGlmICh0aGlzLmxpc3RFbmRwb2ludCkge3RoaXMuaHR0cC5nZXQodGhpcy5zaG93UGFnaW5hdG9yID8gYCR7dGhpcy5saXN0RW5kcG9pbnR9P3BhZ2U9JHt0aGlzLmN1cnJlbnRQYWdlfSZwYWdlU2l6ZT0ke3RoaXMucGFnZVNpemV9JiR7dGhpcy5lbmRwb2ludFBhcmFtc31gIDogdGhpcy5saXN0RW5kcG9pbnQpXHJcblx0XHRcdC5waXBlKHN3aXRjaE1hcCh0aGlzLmxpc3RSZXF1ZXN0TWFwcGluZyA/PyBkZWZhdWx0U3dpdGNoTWFwcGVyKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9hZGVkSXRlbXMgPSByZXNwb25zZS5sb2FkO1xyXG5cdFx0XHRcdFx0XHR0aGlzLml0ZW1zTG9hZGVkLmVtaXQocmVzcG9uc2UubG9hZCk7XHJcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoVXNlcnMgPSByZXNwb25zZS50b3RhbFJlY29yZHM7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyh0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odGhpcy5pdGVtc0VuZHBvaW50LmVycm9ycz8uW3Jlc3BvbnNlLnJlc3BvbnNlQ29kZV0gPz8gJ1NvbWV0aGluZyB3ZW50IHdyb25nJykpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmdTdGF0dXMgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyh0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odGhpcy5pdGVtc0VuZHBvaW50LmVycm9ycz8uWydkZWZhdWx0J10gPz8gJ1NvbWV0aGluZyB3ZW50IHdyb25nJykpO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRpZiAoQm9vbGVhbih0aGlzLmxpc3RFbmRwb2ludCkpIHtcclxuXHRcdFx0Ly8gdGhpcy5sb2FkSXRlbXMoKTtcclxuXHRcdFx0dGhpcy5yZWxvYWRTdWJqZWN0Py5zdWJzY3JpYmUoeyBuZXh0OiAoKSA9PiB0aGlzLmxvYWRJdGVtcygpIH0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChuZXdTZWFyY2gpID0+IHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlckl0ZW1zID0gbmV3IFNldCh0aGlzLmxvYWRlZEl0ZW1zLmZpbHRlcihcclxuXHRcdFx0XHRcdGl0ZW0gPT4gKHRoaXMuc2VhcmNoRmlsdGVyID8/IGRlZmF1bHRGaWx0ZXIpKGl0ZW0pLmZpbHRlcigodmFsdWU6IGFueSkgPT4gQm9vbGVhbih2YWx1ZSkpLnNvbWUoKHZhbHVlOiBzdHJpbmcpID0+IHsgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlPy4oKS5pbmNsdWRlcyhuZXdTZWFyY2g/LnRvTG93ZXJDYXNlKCkgPz8gJycpIH0pXHJcblx0XHRcdFx0KS5tYXAoaXRlbSA9PiBpdGVtLmlkKSk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRsZXQgeyBsaXN0RW5kcG9pbnQsIGl0ZW1zLCBvcmRlclByb3BlcnRpZXMgfSA9IGNoYW5nZXM7XHJcblx0XHRpZiAoQm9vbGVhbihsaXN0RW5kcG9pbnQpICYmIChsaXN0RW5kcG9pbnQ/LnByZXZpb3VzVmFsdWUgIT09IGxpc3RFbmRwb2ludD8uY3VycmVudFZhbHVlKSkge1xyXG5cdFx0XHR0aGlzLmxvYWRJdGVtcygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKGl0ZW1zKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkZWRJdGVtcyA9IGl0ZW1zLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKCFCb29sZWFuKHRoaXMubGlzdEVuZHBvaW50KSAmJiBpdGVtcz8uY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdH1cclxuXHRcdGlmIChvcmRlclByb3BlcnRpZXM/LmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLm9yZGVyUHJvcGVydHlJY29uID0gb3JkZXJQcm9wZXJ0aWVzLmN1cnJlbnRWYWx1ZS5yZWR1Y2UoKGFjYzogYW55LCBjdXJyOiBhbnkpID0+ICh7IC4uLmFjYywgW2N1cnIucHJvcGVydHldOiBjdXJyLmFzY0ljb24gfSksIHt9KVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2V0T3JkZXIocHJvcGVydHk6IGFueSkge1xyXG5cdFx0dGhpcy5vcmRlckl0ZW1zLm5leHQocHJvcGVydHkpO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0VXNlcih1c2VyOiBhbnkpIHsgfVxyXG5cclxuXHRnZXRTZXJ2ZXJEYXRhVXNlcnMoZXZlbnQ6IGFueSkge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZSA9IGV2ZW50LnBhZ2VJbmRleCArIDFcclxuXHRcdHRoaXMubG9hZEl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRVaUNvbXBvbmVudElucHV0cyhpdGVtOiBhbnkpIHtcclxuXHRcdHJldHVybiAoeyAuLi50aGlzLnVpQ29tcG9uZW50SW5wdXRzLCBvYmplY3Q6IGl0ZW0gfSk7XHJcblx0fVxyXG5cclxuXHJcblx0aGFzRm9ybUNvbnRyb2woaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gQm9vbGVhbih0aGlzLml0ZW1Db250cm9sc1tpdGVtLmlkXSkgPz8gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRpdGVtQ29udHJvbChpdGVtOiBhbnkpIHtcclxuXHRcdHJldHVybiB0aGlzLml0ZW1Db250cm9sc1tpdGVtLmlkXTtcclxuXHR9XHJcblxyXG5cdGNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnksIGlkOiBudW1iZXIpIHtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0dGhpcy50b2dnbGVJdGVtLmVtaXQoeyBpZCwgY2hlY2tlZDogZXZlbnQudGFyZ2V0LmNoZWNrZWQgfSk7XHJcblx0fVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcHJvcGVydHk6IHN0cmluZykge1xyXG5cdHJldHVybiBwcm9wZXJ0eS5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBvYmopO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhbHBoYWJldFNvcnQoYXJyYXk6IGFueVtdLCBwcm9wZXJ0eTogc3RyaW5nLCBhc2M6IGJvb2xlYW4pIHtcclxuXHRyZXR1cm4gYXJyYXkuc29ydCgoYSwgYikgPT4ge1xyXG5cdFx0Y29uc3QgYVZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHkoYSwgcHJvcGVydHkpID8/ICcnO1xyXG5cdFx0Y29uc3QgYlZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHkoYiwgcHJvcGVydHkpID8/ICcnO1xyXG5cclxuXHRcdGlmIChhVmFsdWUgPCBiVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuIGFzYyA/IC0xIDogMTtcclxuXHRcdH1cclxuXHRcdGlmIChhVmFsdWUgPiBiVmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuIGFzYyA/IDEgOiAtMTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAwO1xyXG5cdH0pO1x0XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN3aXRjaE1hcHBlciAobWFwcGVyOiBGdW5jdGlvbikgOiBhbnkge1xyXG5cdHJldHVybiAodmFsdWU6IGFueSkgPT4ge1xyXG5cdFx0cmV0dXJuIG1hcHBlcih2YWx1ZSl9XHJcbn0iLCI8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cInRpdGxlLWluZm8taGVhZGVyXCJcclxuXHQqbmdJZj1cImhhc0ljb24gfHwgaGFzVGl0bGUgfHwgc2hvd0NyZWF0ZUJ1dHRvbiB8fCBzaG93T3JkZXJCdXR0b25zXCI+XHJcblx0PGRpdiBjbGFzcz1cInRpdGxlLWluZm9cIiAqbmdJZj1cImhhc0ljb24gfHwgaGFzVGl0bGUgfHwgc2hvd0NyZWF0ZUJ1dHRvblwiPlxyXG5cdFx0PGkgKm5nSWY9XCJoYXNJY29uXCIgW2NsYXNzXT1cIltpY29uXVwiPjwvaT5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGVcIiAqbmdJZj1cImhhc1RpdGxlXCI+e3t0aXRsZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG5cdFx0PGRpdiAqbmdJZj1cInNob3dDcmVhdGVCdXR0b25cIiBjbGFzcz1cImFkZC1idXR0b24tdXNlclwiIG1hdFRvb2x0aXA9XCJOdWV2byBVc3VhcmlvXCIgKGNsaWNrKT1cImFkZENsaWNrLmVtaXQoJGV2ZW50KVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cIm1lbnUtcGx1c1wiPjwvaT5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDwhLS0gPGRpdiAqbmdJZj1cInNob3dPcmRlckJ1dHRvbnNcIiBjbGFzcz1cImJ1dHRvbnMtZmlsdGVyLXNlY3Rpb25cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJhbHBoYWJldGljLXVzZXItZmlsdGVyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwib3JkZXJCeS5uYW1lID09ICduYW1lJ1wiIChjbGljayk9XCJzZXRPcmRlcignbmFtZScpXCJcclxuXHRcdFx0bWF0VG9vbHRpcD1cIk9yZGVyIEJ5IE5hbWVcIiBtYXRUb29sdGlwQ2xhc3M9XCJwdWxzZS10b29sdGlwXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLWJ1dHRvbi1maWx0ZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1idXR0b24tZmlsdGVyXCIgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIG9yZGVyQnkubmFtZSA9PSAnbmFtZScgJiYgb3JkZXJCeS5vcmRlckRpcmVjdGlvbiA9PSAnREVTQydcclxuICAgICAgICAgICAgICA/ICdtZW51LWFscGhhYmV0LWFzYydcclxuICAgICAgICAgICAgICA6ICdtZW51LWFscGhhYmV0LWRlc2MnXHJcbiAgICAgICAgICBcIj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJhbHBoYWJldGljLXVzZXItZmlsdGVyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwib3JkZXJCeS5uYW1lID09ICdzZWNvbmRuYW1lJ1wiXHJcblx0XHRcdChjbGljayk9XCJzZXRPcmRlcignbGFzdG5hbWUnKVwiIG1hdFRvb2x0aXA9XCJPcmRlciBCeSBMYXN0IE5hbWVcIiBtYXRUb29sdGlwQ2xhc3M9XCJwdWxzZS10b29sdGlwXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLWJ1dHRvbi1maWx0ZXJcIiBbbmdDbGFzc109XCJcclxuICAgICAgICAgIG9yZGVyQnkubmFtZSA9PSAnc2Vjb25kbmFtZScgJiYgb3JkZXJCeS5vcmRlckRpcmVjdGlvbiA9PSAnREVTQydcclxuICAgICAgICAgICAgPyAnbWVudS11c2VyLWxlZnQnXHJcbiAgICAgICAgICAgIDogJ21lbnUtdXNlci1yaWdodCdcclxuICAgICAgICBcIj48L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImFscGhhYmV0aWMtdXNlci1maWx0ZXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJvcmRlckJ5Lm5hbWUgPT0gJ2N1c3RvbWVyJ1wiXHJcblx0XHRcdChjbGljayk9XCJzZXRPcmRlcignY3VzdG9tZXIubmFtZScpXCIgbWF0VG9vbHRpcD1cIk9yZGVyIEJ5IEN1c3RvbWVyXCIgbWF0VG9vbHRpcENsYXNzPVwicHVsc2UtdG9vbHRpcFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1idXR0b24tZmlsdGVyXCIgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBvcmRlckJ5Lm5hbWUgPT0gJ2N1c3RvbWVyJyAmJiBvcmRlckJ5Lm9yZGVyRGlyZWN0aW9uID09ICdERVNDJ1xyXG4gICAgICAgICAgICA/ICdtZXVuLWN1c3RvbWVyLWFzYydcclxuICAgICAgICAgICAgOiAnbWVudS1jdXN0b21lci1kZXNjJ1xyXG4gICAgICAgIFwiPjwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+IC0tPlxyXG5cdDxkaXYgKm5nSWY9XCJoYXNPcmRlckJ1dHRvbnNcIiBjbGFzcz1cImJ1dHRvbnMtZmlsdGVyLXNlY3Rpb25cIj5cclxuXHRcdDxkaXYgKm5nRm9yPVwibGV0IG9yZGVyIG9mIG9yZGVyUHJvcGVydGllc1wiIGNsYXNzPVwiYWxwaGFiZXRpYy11c2VyLWZpbHRlci1idXR0b25cIlxyXG5cdFx0XHRbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRPcmRlci5wcm9wZXJ0eSA9PT0gb3JkZXIucHJvcGVydHlcIiAoY2xpY2spPVwic2V0T3JkZXIob3JkZXIpXCJcclxuXHRcdFx0W21hdFRvb2x0aXBdPVwib3JkZXIudG9vbHRpcCA/PyAnJ1wiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1idXR0b24tZmlsdGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImljb24tYnV0dG9uLWZpbHRlclwiIFtjbGFzc109XCJbb3JkZXJQcm9wZXJ0eUljb25bb3JkZXIucHJvcGVydHldXVwiPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIDxkaXYgW2F0dHIuZGF0YS10aGVtZV09XCJ0aGVtZVwiIGNsYXNzPVwiZmlsdGVyLWl0ZW0gc2VsZWN0ZWQtaXRlbVwiICpuZ0lmPVwic2VsZWN0ZWRJdGVtICYmIHNob3dTZWxlY3RlZEF0VG9wXCI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJlbnRpdHlVaUNvbXBvbmVudDsgaW5wdXRzOmdldFVpQ29tcG9uZW50SW5wdXRzKHNlbGVjdGVkSXRlbSlcIj5cclxuXHJcblx0PC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj4gLS0+XHJcblxyXG5cclxuPGxpYi1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBuYW1lPVwic2VhcmNoXCIgW2xhYmVsXT1cIidTZWFyY2guLi4nIHwgdHJhbnNsYXRlXCIgW2NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG5cdGljb249XCJtZW51LXNlYXJjaFwiIFt0aGVtZV09XCJ0aGVtZVwiICpuZ0lmPVwic2hvd1NlYXJjaFwiPjwvbGliLWlucHV0PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0tY29udGFpbmVyXCI+XHJcblx0PGxpYi1sb2FkZXIgW3RoZW1lXT1cInRoZW1lXCIgW3R5cGVdPVwiJ2JhcidcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9saWItbG9hZGVyPlxyXG5cdDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXJcIiAqbmdJZj1cIiFsb2FkaW5nICYmIGlzRW1wdHlcIj57e2VtcHR5TGFiZWwgfCB0cmFuc2xhdGVcclxuXHRcdH19PC9zcGFuPlxyXG5cdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdEl0ZW1zXCI+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVySXRlbXMuaGFzKGl0ZW0uaWQpXCI+XHJcblx0XHRcdDxkaXYgKm5nSWY9XCJkcmFnZ2FibGVJdGVtc1wiIGNka0RyYWcgW2Nka0RyYWdEYXRhXT1cIml0ZW1cIj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIWRyYWdnYWJsZUl0ZW1zXCI+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGU+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCJcclxuXHRcdFx0XHRcdFtjbGFzc109XCJnZXRJdGVtQ2xhc3MoaXRlbSlcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cInNlbGVjdEl0ZW0uZW1pdChpdGVtKVwiPlxyXG5cdFx0XHRcdFx0PGxpYi1jaGVja2JveCAqbmdJZj1cIm11bHRpcGxlU2VsZWN0aW9uXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uSWRzLmhhcyhpdGVtLmlkKVwiXHJcblx0XHRcdFx0XHRcdChpbnB1dENoYW5nZSk9XCJjaGVja2JveENoYW5nZSgkZXZlbnQsIGl0ZW0uaWQpXCIgLz5cclxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnRpdHlVaUNvbXBvbmVudFwiPlxyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImVudGl0eVVpQ29tcG9uZW50OyBpbnB1dHM6Z2V0VWlDb21wb25lbnRJbnB1dHMoaXRlbSlcIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInNpbXBsZS1pdGVtXCIgKm5nSWY9XCIhZW50aXR5VWlDb21wb25lbnRcIj5cclxuXHRcdFx0XHRcdFx0e3tpdGVtTGFiZWxNYXAoaXRlbSkgPz8gaXRlbS5uYW1lfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8IS0tIDxkaXYgW2F0dHIuZGF0YS10aGVtZV09XCJ0aGVtZVwiXHJcbiAgICAgICAgW2NsYXNzXT1cIlsnZmlsdGVyLWl0ZW0nLCBzZWxlY3Rpb25JZHMuaGFzKGl0ZW0uaWQpID8gJ3NlbGVjdGVkLWl0ZW0nOiAnJywgbXVsdGlwbGVTZWxlY3Rpb24gPyAnY2hlY2tib3gtbWFyZ2luJyA6ICcnXVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0uZW1pdChpdGVtKVwiPlxyXG4gICAgICAgIDxsaWItY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVNlbGVjdGlvblwiIFtjaGVja2VkXT1cInNlbGVjdGlvbklkcy5oYXMoaXRlbS5pZClcIlxyXG4gICAgICAgICAgKGlucHV0Q2hhbmdlKT1cImNoZWNrYm94Q2hhbmdlKCRldmVudCwgaXRlbS5pZClcIiAvPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZW50aXR5VWlDb21wb25lbnQ7IGlucHV0czpnZXRVaUNvbXBvbmVudElucHV0cyhpdGVtKVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICBcdDwvZGl2PiAtLT5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJzaG93UGFnaW5hdG9yICYmIGlzRHluYW1pY1wiICNwYWdpbmF0b3IgaGlkZVBhZ2VTaXplIHNob3dGaXJzdExhc3RCdXR0b25zIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcblx0W3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZSAtIDFcIiBbbGVuZ3RoXT1cImxlbmd0aFVzZXJzXCIgKHBhZ2UpPVwicGFnZUV2ZW50ID0gZ2V0U2VydmVyRGF0YVVzZXJzKCRldmVudClcIlxyXG5cdGNsYXNzPVwibXNmLXBhZ2luYXRvci1tYXBwaW5nIG1zZi1wYWdpbmF0b3ItU3R5bGVcIj5cclxuXHJcbjwvbWF0LXBhZ2luYXRvcj5cclxuPCEtLSBcclxuPG1hdC1wYWdpbmF0b3JcclxuICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmdUeXBlRmlsdGVyc1wiXHJcbiAgICAgICAgI3BhZ2luYXRvclxyXG4gICAgICAgIGhpZGVQYWdlU2l6ZVxyXG4gICAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplVXNlcnNcIlxyXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4VXNlcnNcIlxyXG4gICAgICAgIFtsZW5ndGhdPVwibGVuZ3RoVXNlcnNcIlxyXG4gICAgICAgIChwYWdlKT1cInBhZ2VFdmVudCA9IGdldFNlcnZlckRhdGFVc2VycygkZXZlbnQpXCJcclxuICAgICAgICBjbGFzcz1cIm1zZi1wYWdpbmF0b3ItbWFwcGluZyBtc2YtcGFnaW5hdG9yLVN0eWxlXCJcclxuICAgICAgPlxyXG48L21hdC1wYWdpbmF0b3I+IC0tPiJdfQ==
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9pdGVtcy12aWV3ZXIvaXRlbXMtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9pdGVtcy12aWV3ZXIvaXRlbXMtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUVsRCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQU8xRSxNQUFNLE9BQU8sb0JBQW9CO0lBZ0RoQyxJQUFJLFFBQVEsS0FBSyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzdDLElBQUksT0FBTyxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDM0MsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsZUFBZSxD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R0FBRyxNQUFNLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFFLE1BQWdCO0lBQ3RDLE9BQU8sQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUNyQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUFBLENBQUMsQ0FBQTtBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgRU1QVFksIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlY3VyaXR5RW5kcG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0U3dpdGNoTWFwcGVyIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuY29uc3QgZGVmYXVsdEZpbHRlciA9IChpdGVtOiBhbnkpID0+IFtpdGVtPy5uYW1lID8/IEpTT04uc3RyaW5naWZ5KGl0ZW0pXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWl0ZW1zLXZpZXdlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2l0ZW1zLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCAnLi9pdGVtcy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRlbXNWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG5cdEBJbnB1dCgpIGljb246IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblx0QElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIGl0ZW1JY29uOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtczogYW55W10gPSBbXTtcclxuXHRASW5wdXQoKSBlbnRpdHlVaUNvbXBvbmVudDogVHlwZTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblx0QElucHV0KCkgdWlDb21wb25lbnRJbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHQvLyBASW5wdXQoKSBzZWFyY2hCeTogc3RyaW5nW10gPSBbJ25hbWUnXTtcclxuXHRASW5wdXQoKSBzZWFyY2hGaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHRASW5wdXQoKSBzaG93Q3JlYXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd09yZGVyQnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcclxuXHRASW5wdXQoKSBzZWxlY3Rpb25JZHM6IFNldDxzdHJpbmcgfCBudW1iZXI+ID0gbmV3IFNldChbXSk7XHJcblx0QElucHV0KCkgbXVsdGlwbGVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93U2VsZWN0ZWRBdFRvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGl0ZW1Db250cm9sczogeyBba2V5OiBudW1iZXIgfCBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cdEBJbnB1dCgpIHNob3dQYWdpbmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdEBJbnB1dCgpIGRyYWdnYWJsZUl0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgbGlzdEVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtc0VuZHBvaW50OiBTZWN1cml0eUVuZHBvaW50ID0ge3VybDogJyd9O1xyXG5cdEBJbnB1dCgpIGxpc3RSZXF1ZXN0TWFwcGluZzogYW55ID0gKHJlc3BvbnNlOiBhbnkpID0+IG9mKHJlc3BvbnNlKTtcclxuXHRASW5wdXQoKSBlbmRwb2ludFBhcmFtczogc3RyaW5nID0gJyc7XHJcblx0QElucHV0KCkgcmVsb2FkU3ViamVjdD86IFN1YmplY3Q8Ym9vbGVhbj47XHJcblx0QElucHV0KCkgZXh0ZXJuYWxMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgb3JkZXJQcm9wZXJ0aWVzOiB7IHByb3BlcnR5OiBzdHJpbmcsIGFzY0ljb246IHN0cmluZywgZGVzY0ljb246IHN0cmluZywgdG9vbHRpcD86IHN0cmluZyB9W10gPSBbXTtcclxuXHRASW5wdXQoKSBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnTm90IEZvdW5kIDInO1xyXG5cdEBJbnB1dCgpIGl0ZW1MYWJlbE1hcDogYW55ID0gKGl0ZW06IGFueSkgPT4gaXRlbS5uYW1lO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHRvZ2dsZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgYWRkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgaXRlbXNMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRASG9zdEJpbmRpbmcoJ3N0eWxlJykgaG9zdFN0eWxlOiBhbnk7XHJcblxyXG5cdG9yZGVyUHJvcGVydHlJY29uOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IG5hbWU6ICdtZW51LWFscGhhYmV0LWFzYycgfTtcclxuXHRjdXJyZW50T3JkZXI6IHsgcHJvcGVydHk6IHN0cmluZywgYXNjOiBib29sZWFuIH0gPSB7IHByb3BlcnR5OiAnbmFtZScsIGFzYzogdHJ1ZSB9O1xyXG5cdG9yZGVySXRlbXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcblx0c2VhcmNoID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xyXG5cdGN1cnJlbnRQYWdlID0gMTtcclxuXHRASW5wdXQoKSBwYWdlU2l6ZSA9IDUwO1xyXG5cdHBhZ2VJbmRleFVzZXJzID0gMTtcclxuXHRsZW5ndGhVc2VycyA9IDEwO1xyXG5cdHBhZ2VFdmVudDogYW55ID0gJyc7XHJcblx0ZmlsdGVySXRlbXM6IFNldDxudW1iZXI+ID0gbmV3IFNldChbXSk7XHJcblx0bG9hZGVkSXRlbXM6IGFueVtdID0gW107XHJcblx0bG9hZGluZ1N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGdldCBoYXNUaXRsZSgpIHsgcmV0dXJuIEJvb2xlYW4odGhpcy50aXRsZSkgfVxyXG5cdGdldCBoYXNJY29uKCkgeyByZXR1cm4gQm9vbGVhbih0aGlzLmljb24pIH1cclxuXHRnZXQgaGFzT3JkZXJCdXR0b25zKCkgeyByZXR1cm4gdGhpcy5vcmRlclByb3BlcnRpZXMubGVuZ3RoID4gMCB9XHJcblx0Z2V0IGxvYWRpbmcoKSB7IHJldHVybiB0aGlzLmxvYWRpbmdTdGF0dXMgfHwgdGhpcy5leHRlcm5hbExvYWRpbmcgfVxyXG5cclxuXHRnZXQgaXNEeW5hbWljKCkgeyByZXR1cm4gQm9vbGVhbih0aGlzLmxpc3RFbmRwb2ludCkgfVxyXG5cdEBJbnB1dCgpIHNldCBzdHlsZShzdHlsZUlucHV0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcblx0XHR0aGlzLmhvc3RTdHlsZSA9IHN0eWxlSW5wdXQ7XHJcblx0fTtcclxuXHJcblx0Z2V0IGlzRW1wdHkoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5saXN0SXRlbXMubGVuZ3RoIDwgMVxyXG5cdH1cclxuXHJcblx0Z2V0IGVtcHR5TGFiZWwoKSB7XHJcblx0XHRyZXR1cm4gQm9vbGVhbih0aGlzLnNlYXJjaC52YWx1ZSkgPyBcIk5vdCBGb3VuZCAxXCIgOiB0aGlzLmVtcHR5UGxhY2Vob2xkZXI7XHJcblx0fVxyXG5cclxuXHRnZXRJdGVtQ2xhc3MoaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gWydmaWx0ZXItaXRlbScsIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPyAodGhpcy5zZWxlY3Rpb25JZHMuaGFzKGl0ZW0uaWQpID8gJ3NlbGVjdGVkLWl0ZW0nIDogJycpIDogKHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyAnc2VsZWN0ZWQtaXRlbScgOiAnJyksICh0aGlzLm11bHRpcGxlU2VsZWN0aW9uICYmIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkpID8gJ3NlY29uZC1zZWxlY3Rpb24nIDogJycsIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPyAnY2hlY2tib3gtbWFyZ2luJyA6ICcnXVxyXG5cdH1cclxuXHJcblxyXG5cdGdldCBsaXN0SXRlbXMoKSB7XHJcblx0XHQvLyByZXR1cm4gKEJvb2xlYW4odGhpcy5saXN0RW5kcG9pbnQpID8gdGhpcy5sb2FkZWRJdGVtcyA6IHRoaXMuaXRlbXMpLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLnNlYXJjaEJhclByb3BlcnRpZXMuc29tZShwcm9wZXJ0eSA9PiBpdGVtW3Byb3BlcnR5XT8uaW5jbHVkZXModGhpcy5zZWFyY2gudmFsdWU/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSlcclxuXHRcdC8vIFx0LnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xyXG5cdFx0cmV0dXJuIHRoaXMubG9hZGVkSXRlbXNcclxuXHR9XHJcblxyXG5cdGdldE9yZGVySWNvbihwcm9wZXJ0eTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcmRlclByb3BlcnR5SWNvbltwcm9wZXJ0eV07XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrYmFyU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVBpcGUpIHtcclxuXHRcdHRoaXMub3JkZXJJdGVtcy5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAobmV3T3JkZXJQcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudE9yZGVyID0geyBwcm9wZXJ0eTogbmV3T3JkZXJQcm9wZXJ0eS5wcm9wZXJ0eSwgYXNjOiAhdGhpcy5jdXJyZW50T3JkZXIuYXNjIH1cclxuXHRcdFx0XHR0aGlzLmxvYWRlZEl0ZW1zID0gYWxwaGFiZXRTb3J0KHRoaXMubG9hZGVkSXRlbXMsIG5ld09yZGVyUHJvcGVydHkucHJvcGVydHksIHRoaXMuY3VycmVudE9yZGVyLmFzYyk7XHJcblx0XHRcdFx0dGhpcy5vcmRlclByb3BlcnR5SWNvbltuZXdPcmRlclByb3BlcnR5LnByb3BlcnR5XSA9IHRoaXMuY3VycmVudE9yZGVyLmFzYyA/IG5ld09yZGVyUHJvcGVydHkuYXNjSWNvbiA6IG5ld09yZGVyUHJvcGVydHkuZGVzY0ljb247XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRpc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtPy5pZCA9PT0gaXRlbS5pZCB9XHJcblxyXG5cclxuXHJcblx0bG9hZEl0ZW1zKCkge1xyXG5cdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gdHJ1ZTtcclxuXHRcdGlmICh0aGlzLmxpc3RFbmRwb2ludCkge3RoaXMuaHR0cC5nZXQodGhpcy5zaG93UGFnaW5hdG9yID8gYCR7dGhpcy5saXN0RW5kcG9pbnR9P3BhZ2U9JHt0aGlzLmN1cnJlbnRQYWdlfSZwYWdlU2l6ZT0ke3RoaXMucGFnZVNpemV9JiR7dGhpcy5lbmRwb2ludFBhcmFtc31gIDogdGhpcy5saXN0RW5kcG9pbnQpXHJcblx0XHRcdC5waXBlKHN3aXRjaE1hcCh0aGlzLmxpc3RSZXF1ZXN0TWFwcGluZyA/PyBkZWZhdWx0U3dpdGNoTWFwcGVyKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9hZGVkSXRlbXMgPSByZXNwb25zZS5sb2FkO1xyXG5cdFx0XHRcdFx0XHR0aGlzLml0ZW1zTG9hZGVkLmVtaXQocmVzcG9uc2UubG9hZCk7XHJcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoVXNlcnMgPSByZXNwb25zZS50b3RhbFJlY29yZHM7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyh0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odGhpcy5pdGVtc0VuZHBvaW50LmVycm9ycz8uW3Jlc3BvbnNlLnJlc3BvbnNlQ29kZV0gPz8gJ1NvbWV0aGluZyB3ZW50IHdyb25nJykpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmdTdGF0dXMgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyh0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odGhpcy5pdGVtc0VuZHBvaW50LmVycm9ycz8uWydkZWZhdWx0J10gPz8gJ1NvbWV0aGluZyB3ZW50IHdyb25nJykpO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7fVxyXG5cdH1cclxuXHRcclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdGlmIChCb29sZWFuKHRoaXMubGlzdEVuZHBvaW50KSkge1xyXG5cdFx0XHR0aGlzLnJlbG9hZFN1YmplY3Q/LnN1YnNjcmliZSh7IG5leHQ6ICgpID0+IHRoaXMubG9hZEl0ZW1zKCkgfSk7XHJcblx0XHR9XHJcblx0XHRpZih0aGlzLnRpdGxlICYmIHRoaXMudGl0bGUgPT09ICdVc2Vycycpe1xyXG5cdFx0XHR0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXNcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZGVib3VuY2VUaW1lKDMwMCksXHJcblx0XHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKG5ld1NlYXJjaCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmxpc3RFbmRwb2ludCB8fCB0aGlzLmxpc3RFbmRwb2ludC50cmltKCkgPT09ICcnKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiBFTVBUWTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmdTdGF0dXMgPSB0cnVlO1xyXG5cclxuXHRcdFx0XHRcdGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuc2hvd1BhZ2luYXRvcikge1xyXG5cdFx0XHRcdFx0XHRwYXJhbXMgPSBwYXJhbXNcclxuXHRcdFx0XHRcdFx0XHQuc2V0KCdwYWdlJywgdGhpcy5jdXJyZW50UGFnZSlcclxuXHRcdFx0XHRcdFx0XHQuc2V0KCdwYWdlU2l6ZScsIHRoaXMucGFnZVNpemUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMuZW5kcG9pbnRQYXJhbXMpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZXh0cmFQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHRoaXMuZW5kcG9pbnRQYXJhbXMpO1xyXG5cdFx0XHRcdFx0XHRleHRyYVBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0cGFyYW1zID0gcGFyYW1zLnNldChrZXksIHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0cGFyYW1zID0gcGFyYW1zLnNldCgnc2VhcmNoJywgbmV3U2VhcmNoPy50cmltKCkgPz8gJycpO1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMubGlzdEVuZHBvaW50LCB7IHBhcmFtcyB9KVxyXG5cdFx0XHRcdFx0XHQucGlwZShzd2l0Y2hNYXAodGhpcy5saXN0UmVxdWVzdE1hcHBpbmcgPz8gZGVmYXVsdFN3aXRjaE1hcHBlcikpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmIChyZXNwb25zZS5yZXNwb25zZUNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvYWRlZEl0ZW1zID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHRcdFx0dGhpcy5pdGVtc0xvYWRlZC5lbWl0KHJlc3BvbnNlLmxvYWQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aFVzZXJzID0gcmVzcG9uc2UudG90YWxSZWNvcmRzO1xyXG5cclxuXHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJJdGVtcyA9IG5ldyBTZXQoXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkZWRJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmlkKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihyZXNwb25zZSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLml0ZW1zRW5kcG9pbnQuZXJyb3JzPy5bcmVzcG9uc2UucmVzcG9uc2VDb2RlXSA/PyAnU29tZXRoaW5nIHdlbnQgd3JvbmcnXHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZ1N0YXR1cyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKFxyXG5cdFx0XHRcdFx0XHR0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5pdGVtc0VuZHBvaW50LmVycm9ycz8uWydkZWZhdWx0J10gPz8gJ1NvbWV0aGluZyB3ZW50IHdyb25nJ1xyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0dGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKG5ld1NlYXJjaCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJJdGVtcyA9IG5ldyBTZXQodGhpcy5sb2FkZWRJdGVtcy5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdGl0ZW0gPT4gKHRoaXMuc2VhcmNoRmlsdGVyID8/IGRlZmF1bHRGaWx0ZXIpKGl0ZW0pXHJcblx0XHRcdFx0XHRcdFx0LmZpbHRlcigodmFsdWU6IGFueSkgPT4gQm9vbGVhbih2YWx1ZSkpXHJcblx0XHRcdFx0XHRcdFx0LnNvbWUoKHZhbHVlOiBzdHJpbmcpID0+IHsgXHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2U/LigpLmluY2x1ZGVzKG5ld1NlYXJjaD8udG9Mb3dlckNhc2UoKSA/PyAnJykgXHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdCkubWFwKGl0ZW0gPT4gaXRlbS5pZCkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0fVxyXG5cdC8qXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRpZiAoQm9vbGVhbih0aGlzLmxpc3RFbmRwb2ludCkpIHtcclxuXHRcdFx0Ly8gdGhpcy5sb2FkSXRlbXMoKTtcclxuXHRcdFx0dGhpcy5yZWxvYWRTdWJqZWN0Py5zdWJzY3JpYmUoeyBuZXh0OiAoKSA9PiB0aGlzLmxvYWRJdGVtcygpIH0pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChuZXdTZWFyY2gpID0+IHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlckl0ZW1zID0gbmV3IFNldCh0aGlzLmxvYWRlZEl0ZW1zLmZpbHRlcihcclxuXHRcdFx0XHRcdGl0ZW0gPT4gKHRoaXMuc2VhcmNoRmlsdGVyID8/IGRlZmF1bHRGaWx0ZXIpKGl0ZW0pXHJcblx0XHRcdFx0XHRcdC5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IEJvb2xlYW4odmFsdWUpKVxyXG5cdFx0XHRcdFx0XHQuc29tZSgodmFsdWU6IHN0cmluZykgPT4geyBcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2U/LigpLmluY2x1ZGVzKG5ld1NlYXJjaD8udG9Mb3dlckNhc2UoKSA/PyAnJykgXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KS5tYXAoaXRlbSA9PiBpdGVtLmlkKSk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cdCovXHJcblxyXG5cdFx0XHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0bGV0IHsgbGlzdEVuZHBvaW50LCBpdGVtcywgb3JkZXJQcm9wZXJ0aWVzIH0gPSBjaGFuZ2VzO1xyXG5cdFx0aWYgKEJvb2xlYW4obGlzdEVuZHBvaW50KSAmJiAobGlzdEVuZHBvaW50Py5wcmV2aW91c1ZhbHVlICE9PSBsaXN0RW5kcG9pbnQ/LmN1cnJlbnRWYWx1ZSkpIHtcclxuXHRcdFx0dGhpcy5sb2FkSXRlbXMoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmIChpdGVtcykge1xyXG5cdFx0XHRcdHRoaXMubG9hZGVkSXRlbXMgPSBpdGVtcy5jdXJyZW50VmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICghQm9vbGVhbih0aGlzLmxpc3RFbmRwb2ludCkgJiYgaXRlbXM/LmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLnNlYXJjaC5zZXRWYWx1ZSgnJyk7XHJcblx0XHR9XHJcblx0XHRpZiAob3JkZXJQcm9wZXJ0aWVzPy5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0dGhpcy5vcmRlclByb3BlcnR5SWNvbiA9IG9yZGVyUHJvcGVydGllcy5jdXJyZW50VmFsdWUucmVkdWNlKChhY2M6IGFueSwgY3VycjogYW55KSA9PiAoeyAuLi5hY2MsIFtjdXJyLnByb3BlcnR5XTogY3Vyci5hc2NJY29uIH0pLCB7fSlcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNldE9yZGVyKHByb3BlcnR5OiBhbnkpIHtcclxuXHRcdHRoaXMub3JkZXJJdGVtcy5uZXh0KHByb3BlcnR5KTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFVzZXIodXNlcjogYW55KSB7IH1cclxuXHJcblx0Z2V0U2VydmVyRGF0YVVzZXJzKGV2ZW50OiBhbnkpIHtcclxuXHRcdHRoaXMuY3VycmVudFBhZ2UgPSBldmVudC5wYWdlSW5kZXggKyAxXHJcblx0XHR0aGlzLmxvYWRJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Z2V0VWlDb21wb25lbnRJbnB1dHMoaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gKHsgLi4udGhpcy51aUNvbXBvbmVudElucHV0cywgb2JqZWN0OiBpdGVtIH0pO1xyXG5cdH1cclxuXHJcblxyXG5cdGhhc0Zvcm1Db250cm9sKGl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIEJvb2xlYW4odGhpcy5pdGVtQ29udHJvbHNbaXRlbS5pZF0pID8/IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0aXRlbUNvbnRyb2woaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5pdGVtQ29udHJvbHNbaXRlbS5pZF07XHJcblx0fVxyXG5cclxuXHRjaGVja2JveENoYW5nZShldmVudDogYW55LCBpZDogbnVtYmVyKSB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdHRoaXMudG9nZ2xlSXRlbS5lbWl0KHsgaWQsIGNoZWNrZWQ6IGV2ZW50LnRhcmdldC5jaGVja2VkIH0pO1xyXG5cdH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHkob2JqOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuXHRyZXR1cm4gcHJvcGVydHkuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYWxwaGFiZXRTb3J0KGFycmF5OiBhbnlbXSwgcHJvcGVydHk6IHN0cmluZywgYXNjOiBib29sZWFuKSB7XHJcblx0cmV0dXJuIGFycmF5LnNvcnQoKGEsIGIpID0+IHtcclxuXHRcdGNvbnN0IGFWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5KGEsIHByb3BlcnR5KSA/PyAnJztcclxuXHRcdGNvbnN0IGJWYWx1ZSA9IGdldE5lc3RlZFByb3BlcnR5KGIsIHByb3BlcnR5KSA/PyAnJztcclxuXHJcblx0XHRpZiAoYVZhbHVlIDwgYlZhbHVlKSB7XHJcblx0XHRcdHJldHVybiBhc2MgPyAtMSA6IDE7XHJcblx0XHR9XHJcblx0XHRpZiAoYVZhbHVlID4gYlZhbHVlKSB7XHJcblx0XHRcdHJldHVybiBhc2MgPyAxIDogLTE7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gMDtcclxuXHR9KTtcdFxyXG59XHJcblxyXG5mdW5jdGlvbiBzd2l0Y2hNYXBwZXIgKG1hcHBlcjogRnVuY3Rpb24pIDogYW55IHtcclxuXHRyZXR1cm4gKHZhbHVlOiBhbnkpID0+IHtcclxuXHRcdHJldHVybiBtYXBwZXIodmFsdWUpfVxyXG59IiwiPGRpdiBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJ0aXRsZS1pbmZvLWhlYWRlclwiXHJcblx0Km5nSWY9XCJoYXNJY29uIHx8IGhhc1RpdGxlIHx8IHNob3dDcmVhdGVCdXR0b24gfHwgc2hvd09yZGVyQnV0dG9uc1wiPlxyXG5cdDxkaXYgY2xhc3M9XCJ0aXRsZS1pbmZvXCIgKm5nSWY9XCJoYXNJY29uIHx8IGhhc1RpdGxlIHx8IHNob3dDcmVhdGVCdXR0b25cIj5cclxuXHRcdDxpICpuZ0lmPVwiaGFzSWNvblwiIFtjbGFzc109XCJbaWNvbl1cIj48L2k+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJoYXNUaXRsZVwiPnt7dGl0bGUgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHRcdDxkaXYgKm5nSWY9XCJzaG93Q3JlYXRlQnV0dG9uXCIgY2xhc3M9XCJhZGQtYnV0dG9uLXVzZXJcIiBtYXRUb29sdGlwPVwiTnVldm8gVXN1YXJpb1wiIChjbGljayk9XCJhZGRDbGljay5lbWl0KCRldmVudClcIj5cclxuXHRcdFx0PGkgY2xhc3M9XCJtZW51LXBsdXNcIj48L2k+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8IS0tIDxkaXYgKm5nSWY9XCJzaG93T3JkZXJCdXR0b25zXCIgY2xhc3M9XCJidXR0b25zLWZpbHRlci1zZWN0aW9uXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWxwaGFiZXRpYy11c2VyLWZpbHRlci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cIm9yZGVyQnkubmFtZSA9PSAnbmFtZSdcIiAoY2xpY2spPVwic2V0T3JkZXIoJ25hbWUnKVwiXHJcblx0XHRcdG1hdFRvb2x0aXA9XCJPcmRlciBCeSBOYW1lXCIgbWF0VG9vbHRpcENsYXNzPVwicHVsc2UtdG9vbHRpcFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1idXR0b24tZmlsdGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImljb24tYnV0dG9uLWZpbHRlclwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICBvcmRlckJ5Lm5hbWUgPT0gJ25hbWUnICYmIG9yZGVyQnkub3JkZXJEaXJlY3Rpb24gPT0gJ0RFU0MnXHJcbiAgICAgICAgICAgICAgPyAnbWVudS1hbHBoYWJldC1hc2MnXHJcbiAgICAgICAgICAgICAgOiAnbWVudS1hbHBoYWJldC1kZXNjJ1xyXG4gICAgICAgICAgXCI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWxwaGFiZXRpYy11c2VyLWZpbHRlci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cIm9yZGVyQnkubmFtZSA9PSAnc2Vjb25kbmFtZSdcIlxyXG5cdFx0XHQoY2xpY2spPVwic2V0T3JkZXIoJ2xhc3RuYW1lJylcIiBtYXRUb29sdGlwPVwiT3JkZXIgQnkgTGFzdCBOYW1lXCIgbWF0VG9vbHRpcENsYXNzPVwicHVsc2UtdG9vbHRpcFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1idXR0b24tZmlsdGVyXCIgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBvcmRlckJ5Lm5hbWUgPT0gJ3NlY29uZG5hbWUnICYmIG9yZGVyQnkub3JkZXJEaXJlY3Rpb24gPT0gJ0RFU0MnXHJcbiAgICAgICAgICAgID8gJ21lbnUtdXNlci1sZWZ0J1xyXG4gICAgICAgICAgICA6ICdtZW51LXVzZXItcmlnaHQnXHJcbiAgICAgICAgXCI+PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJhbHBoYWJldGljLXVzZXItZmlsdGVyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwib3JkZXJCeS5uYW1lID09ICdjdXN0b21lcidcIlxyXG5cdFx0XHQoY2xpY2spPVwic2V0T3JkZXIoJ2N1c3RvbWVyLm5hbWUnKVwiIG1hdFRvb2x0aXA9XCJPcmRlciBCeSBDdXN0b21lclwiIG1hdFRvb2x0aXBDbGFzcz1cInB1bHNlLXRvb2x0aXBcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImljb24tYnV0dG9uLWZpbHRlclwiIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgb3JkZXJCeS5uYW1lID09ICdjdXN0b21lcicgJiYgb3JkZXJCeS5vcmRlckRpcmVjdGlvbiA9PSAnREVTQydcclxuICAgICAgICAgICAgPyAnbWV1bi1jdXN0b21lci1hc2MnXHJcbiAgICAgICAgICAgIDogJ21lbnUtY3VzdG9tZXItZGVzYydcclxuICAgICAgICBcIj48L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PiAtLT5cclxuXHQ8ZGl2ICpuZ0lmPVwiaGFzT3JkZXJCdXR0b25zXCIgY2xhc3M9XCJidXR0b25zLWZpbHRlci1zZWN0aW9uXCI+XHJcblx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBvcmRlciBvZiBvcmRlclByb3BlcnRpZXNcIiBjbGFzcz1cImFscGhhYmV0aWMtdXNlci1maWx0ZXItYnV0dG9uXCJcclxuXHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50T3JkZXIucHJvcGVydHkgPT09IG9yZGVyLnByb3BlcnR5XCIgKGNsaWNrKT1cInNldE9yZGVyKG9yZGVyKVwiXHJcblx0XHRcdFttYXRUb29sdGlwXT1cIm9yZGVyLnRvb2x0aXAgPz8gJydcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImljb24tYnV0dG9uLWZpbHRlclwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLWJ1dHRvbi1maWx0ZXJcIiBbY2xhc3NdPVwiW29yZGVyUHJvcGVydHlJY29uW29yZGVyLnByb3BlcnR5XV1cIj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImZpbHRlci1pdGVtIHNlbGVjdGVkLWl0ZW1cIiAqbmdJZj1cInNlbGVjdGVkSXRlbSAmJiBzaG93U2VsZWN0ZWRBdFRvcFwiPlxyXG5cdDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZW50aXR5VWlDb21wb25lbnQ7IGlucHV0czpnZXRVaUNvbXBvbmVudElucHV0cyhzZWxlY3RlZEl0ZW0pXCI+XHJcblxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cclxuPC9kaXY+IC0tPlxyXG5cclxuXHJcbjxsaWItaW5wdXQgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoXCIgbmFtZT1cInNlYXJjaFwiIFtsYWJlbF09XCInU2VhcmNoLi4uJyB8IHRyYW5zbGF0ZVwiIFtjbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuXHRpY29uPVwibWVudS1zZWFyY2hcIiBbdGhlbWVdPVwidGhlbWVcIiAqbmdJZj1cInNob3dTZWFyY2hcIj48L2xpYi1pbnB1dD5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwibGlzdC1pdGVtLWNvbnRhaW5lclwiPlxyXG5cdDxsaWItbG9hZGVyIFt0aGVtZV09XCJ0aGVtZVwiIFt0eXBlXT1cIidiYXInXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiPjwvbGliLWxvYWRlcj5cclxuXHQ8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyXCIgKm5nSWY9XCIhbG9hZGluZyAmJiBpc0VtcHR5XCI+e3tlbXB0eUxhYmVsIHwgdHJhbnNsYXRlXHJcblx0XHR9fTwvc3Bhbj5cclxuXHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RJdGVtc1wiPlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlckl0ZW1zLmhhcyhpdGVtLmlkKVwiPlxyXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiZHJhZ2dhYmxlSXRlbXNcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJpdGVtXCI+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiAqbmdJZj1cIiFkcmFnZ2FibGVJdGVtc1wiPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlPlxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdDxkaXYgW2F0dHIuZGF0YS10aGVtZV09XCJ0aGVtZVwiXHJcblx0XHRcdFx0XHRbY2xhc3NdPVwiZ2V0SXRlbUNsYXNzKGl0ZW0pXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJzZWxlY3RJdGVtLmVtaXQoaXRlbSlcIj5cclxuXHRcdFx0XHRcdDxsaWItY2hlY2tib3ggKm5nSWY9XCJtdWx0aXBsZVNlbGVjdGlvblwiIFtjaGVja2VkXT1cInNlbGVjdGlvbklkcy5oYXMoaXRlbS5pZClcIlxyXG5cdFx0XHRcdFx0XHQoaW5wdXRDaGFuZ2UpPVwiY2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBpdGVtLmlkKVwiIC8+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZW50aXR5VWlDb21wb25lbnRcIj5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJlbnRpdHlVaUNvbXBvbmVudDsgaW5wdXRzOmdldFVpQ29tcG9uZW50SW5wdXRzKGl0ZW0pXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzaW1wbGUtaXRlbVwiICpuZ0lmPVwiIWVudGl0eVVpQ29tcG9uZW50XCI+XHJcblx0XHRcdFx0XHRcdHt7aXRlbUxhYmVsTWFwKGl0ZW0pID8/IGl0ZW0ubmFtZX19XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PCEtLSA8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIlxyXG4gICAgICAgIFtjbGFzc109XCJbJ2ZpbHRlci1pdGVtJywgc2VsZWN0aW9uSWRzLmhhcyhpdGVtLmlkKSA/ICdzZWxlY3RlZC1pdGVtJzogJycsIG11bHRpcGxlU2VsZWN0aW9uID8gJ2NoZWNrYm94LW1hcmdpbicgOiAnJ11cIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtLmVtaXQoaXRlbSlcIj5cclxuICAgICAgICA8bGliLWNoZWNrYm94ICpuZ0lmPVwibXVsdGlwbGVTZWxlY3Rpb25cIiBbY2hlY2tlZF09XCJzZWxlY3Rpb25JZHMuaGFzKGl0ZW0uaWQpXCJcclxuICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJjaGVja2JveENoYW5nZSgkZXZlbnQsIGl0ZW0uaWQpXCIgLz5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImVudGl0eVVpQ29tcG9uZW50OyBpbnB1dHM6Z2V0VWlDb21wb25lbnRJbnB1dHMoaXRlbSlcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgXHQ8L2Rpdj4gLS0+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxtYXQtcGFnaW5hdG9yICpuZ0lmPVwic2hvd1BhZ2luYXRvciAmJiBpc0R5bmFtaWNcIiAjcGFnaW5hdG9yIGhpZGVQYWdlU2l6ZSBzaG93Rmlyc3RMYXN0QnV0dG9ucyBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG5cdFtwYWdlSW5kZXhdPVwiY3VycmVudFBhZ2UgLSAxXCIgW2xlbmd0aF09XCJsZW5ndGhVc2Vyc1wiIChwYWdlKT1cInBhZ2VFdmVudCA9IGdldFNlcnZlckRhdGFVc2VycygkZXZlbnQpXCJcclxuXHRjbGFzcz1cIm1zZi1wYWdpbmF0b3ItbWFwcGluZyBtc2YtcGFnaW5hdG9yLVN0eWxlXCI+XHJcblxyXG48L21hdC1wYWdpbmF0b3I+XHJcbjwhLS0gXHJcbjxtYXQtcGFnaW5hdG9yXHJcbiAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nVHlwZUZpbHRlcnNcIlxyXG4gICAgICAgICNwYWdpbmF0b3JcclxuICAgICAgICBoaWRlUGFnZVNpemVcclxuICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9uc1xyXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVVzZXJzXCJcclxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFVzZXJzXCJcclxuICAgICAgICBbbGVuZ3RoXT1cImxlbmd0aFVzZXJzXCJcclxuICAgICAgICAocGFnZSk9XCJwYWdlRXZlbnQgPSBnZXRTZXJ2ZXJEYXRhVXNlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgY2xhc3M9XCJtc2YtcGFnaW5hdG9yLW1hcHBpbmcgbXNmLXBhZ2luYXRvci1TdHlsZVwiXHJcbiAgICAgID5cclxuPC9tYXQtcGFnaW5hdG9yPiAtLT4iXX0=
|