@netgrif/components-core 7.0.0-beta.1 → 7.0.0-beta.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/assets/i18n/de.json +1 -0
- package/esm2022/assets/i18n/en.json +1 -0
- package/esm2022/assets/i18n/sk.json +1 -0
- package/esm2022/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.mjs +3 -3
- package/esm2022/lib/data-fields/file-field/file-default-field/abstract-file-default-field.component.mjs +2 -2
- package/esm2022/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.mjs +2 -2
- package/esm2022/lib/data-fields/models/abstract-file-field-default-component.mjs +9 -1
- package/esm2022/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +4 -4
- package/esm2022/lib/navigation/model/uri-resource.mjs +1 -1
- package/esm2022/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +11 -11
- package/esm2022/lib/navigation/service/uri.service.mjs +10 -10
- package/esm2022/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +2 -2
- package/esm2022/lib/side-menu/content-components/import-net/abstract-import-net.component.mjs +2 -2
- package/esm2022/lib/task-content/services/task-content.service.mjs +14 -48
- package/esm2022/lib/user/services/user.service.mjs +11 -4
- package/esm2022/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +3 -1
- package/esm2022/lib/view/case-view/service/case-view-service.mjs +23 -2
- package/fesm2022/netgrif-components-core.mjs +86 -79
- package/fesm2022/netgrif-components-core.mjs.map +1 -1
- package/lib/data-fields/enumeration-field/enumeration-caseref-field/abstract-enumeration-caseref-field.component.d.ts +1 -1
- package/lib/data-fields/models/abstract-file-field-default-component.d.ts +1 -0
- package/lib/navigation/model/uri-resource.d.ts +1 -2
- package/lib/task-content/services/task-content.service.d.ts +2 -4
- package/lib/user/services/user.service.d.ts +3 -1
- package/lib/view/case-view/service/case-view-service.d.ts +2 -0
- package/package.json +1 -1
- package/src/assets/i18n/de.json +1 -0
- package/src/assets/i18n/en.json +1 -0
- package/src/assets/i18n/sk.json +1 -0
|
@@ -45,6 +45,7 @@ export class CaseViewService extends AbstractSortableViewComponent {
|
|
|
45
45
|
_endOfData;
|
|
46
46
|
_pagination;
|
|
47
47
|
_newCaseConfiguration;
|
|
48
|
+
_paginationView = false;
|
|
48
49
|
constructor(_allowedNetsService, _dialog, _caseResourceService, _log, _snackBarService, _searchService, _translate, _user, _processService, resolver, _newCaseComponent, newCaseConfig, _permissionService) {
|
|
49
50
|
super(resolver);
|
|
50
51
|
this._allowedNetsService = _allowedNetsService;
|
|
@@ -91,6 +92,9 @@ export class CaseViewService extends AbstractSortableViewComponent {
|
|
|
91
92
|
this._loading$.off(pageLoadResult.requestContext.filter);
|
|
92
93
|
}
|
|
93
94
|
Object.assign(this._pagination, pageLoadResult.requestContext.pagination);
|
|
95
|
+
if (this._paginationView) {
|
|
96
|
+
return pageLoadResult.cases;
|
|
97
|
+
}
|
|
94
98
|
return { ...acc, ...pageLoadResult.cases };
|
|
95
99
|
}, {}));
|
|
96
100
|
this._cases$ = casesMap.pipe(map(v => Object.values(v)));
|
|
@@ -115,6 +119,9 @@ export class CaseViewService extends AbstractSortableViewComponent {
|
|
|
115
119
|
get activeFilter() {
|
|
116
120
|
return this._searchService.activeFilter;
|
|
117
121
|
}
|
|
122
|
+
set paginationView(value) {
|
|
123
|
+
this._paginationView = value;
|
|
124
|
+
}
|
|
118
125
|
loadPage(requestContext) {
|
|
119
126
|
if (requestContext === null || requestContext.pageNumber < 0) {
|
|
120
127
|
return of({ cases: {}, requestContext });
|
|
@@ -203,6 +210,12 @@ export class CaseViewService extends AbstractSortableViewComponent {
|
|
|
203
210
|
}) {
|
|
204
211
|
const myCase = new Subject();
|
|
205
212
|
this.getNewCaseAllowedNets(newCaseCreationConfiguration.blockNets).subscribe((nets) => {
|
|
213
|
+
if (!nets || nets.length === 0) {
|
|
214
|
+
const errorMessage = this._translate.instant('side-menu.new-case.noNets');
|
|
215
|
+
this._snackBarService.openErrorSnackBar(errorMessage);
|
|
216
|
+
this._log.error('No nets available for case creation. Ensure the allowed nets configuration is correct.');
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
206
219
|
this._caseResourceService.createCase({
|
|
207
220
|
title: null,
|
|
208
221
|
color: 'panel-primary-icon',
|
|
@@ -213,7 +226,15 @@ export class CaseViewService extends AbstractSortableViewComponent {
|
|
|
213
226
|
this.reload();
|
|
214
227
|
myCase.next(response.outcome.aCase);
|
|
215
228
|
myCase.complete();
|
|
216
|
-
}, error =>
|
|
229
|
+
}, error => {
|
|
230
|
+
const errorMessage = error.message ? error.message : this._translate.instant('side-menu.new-case.createCaseError');
|
|
231
|
+
this._snackBarService.openErrorSnackBar(errorMessage);
|
|
232
|
+
this._log.error('Error occurred during case creation: ' + errorMessage);
|
|
233
|
+
});
|
|
234
|
+
}, error => {
|
|
235
|
+
const errorMessage = error.message || this._translate.instant('side-menu.new-case.errorCreate');
|
|
236
|
+
this._log.error('Failed to fetch allowed nets. Error: ' + errorMessage);
|
|
237
|
+
this._snackBarService.openErrorSnackBar(errorMessage);
|
|
217
238
|
});
|
|
218
239
|
return myCase;
|
|
219
240
|
}
|
|
@@ -294,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
294
315
|
type: Inject,
|
|
295
316
|
args: [NAE_NEW_CASE_CONFIGURATION]
|
|
296
317
|
}] }, { type: i11.PermissionService }] });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aWV3LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3ZpZXcvY2FzZS12aWV3L3NlcnZpY2UvY2FzZS12aWV3LXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFNaEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDMUUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHaEYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFHdEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBTTVGLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSzNFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxlQUFlLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFFNUYsT0FBTyxF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LFdBQVcsRUFBRTtZQUNwQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLGNBQWMsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RixjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUc7WUFDVixLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsR0FBRyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxZQUFZLENBQUMsU0FBaUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakYsQ0FBQzt3R0F2U1EsZUFBZSw2VUF1QlEsNkJBQTZCLDZCQUM3QiwwQkFBMEI7NEdBeEJqRCxlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkF3Qk0sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FzZVJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC9jYXNlLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtDYXNlfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2Nhc2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge1NlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlYXJjaC9zZWFyY2gtc2VydmljZS9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBjb25jYXRNYXAsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc2Nhbiwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGFnaW5hdGlvbn0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wYWdpbmF0aW9uJztcbmltcG9ydCB7Q2FzZU1ldGFGaWVsZH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL2Nhc2UtaGVhZGVyL2Nhc2UtbWVudGEtZW51bSc7XG5pbXBvcnQge1BhZ2VMb2FkUmVxdWVzdENvbnRleHR9IGZyb20gJy4uLy4uL2Fic3RyYWN0L3BhZ2UtbG9hZC1yZXF1ZXN0LWNvbnRleHQnO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TGlzdFJhbmdlfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtMb2FkaW5nV2l0aEZpbHRlckVtaXR0ZXJ9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvbG9hZGluZy13aXRoLWZpbHRlci1lbWl0dGVyJztcbmltcG9ydCB7Q2FzZVBhZ2VMb2FkUmVxdWVzdFJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2Nhc2UtcGFnZS1sb2FkLXJlcXVlc3QtcmVzdWx0JztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3VzZXIvc2VydmljZXMvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7YXJyYXlUb09ic2VydmFibGV9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvYXJyYXktdG8tb2JzZXJ2YWJsZSc7XG5pbXBvcnQge1Blcm1pc3Npb25UeXBlfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzL3Blcm1pc3Npb25zJztcbmltcG9ydCB7TkFFX05FV19DQVNFX0NPTkZJR1VSQVRJT059IGZyb20gJy4uL21vZGVscy9uZXctY2FzZS1jb25maWd1cmF0aW9uLWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQge05ld0Nhc2VDb25maWd1cmF0aW9ufSBmcm9tICcuLi9tb2RlbHMvbmV3LWNhc2UtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzL3Byb2Nlc3Muc2VydmljZSc7XG5pbXBvcnQge1BldHJpTmV0UmVmZXJlbmNlV2l0aFBlcm1pc3Npb25zfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzL3BldHJpLW5ldC1yZWZlcmVuY2Utd2l0aC1wZXJtaXNzaW9ucyc7XG5pbXBvcnQge1NlYXJjaEluZGV4UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZWFyY2gvc2VhcmNoLWtleXdvcmQtcmVzb2x2ZXItc2VydmljZS9zZWFyY2gtaW5kZXgtcmVzb2x2ZXIuc2VydmljZSc7XG5pbXBvcnQge0FsbG93ZWROZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYWxsb3dlZC1uZXRzL3NlcnZpY2VzL2FsbG93ZWQtbmV0cy5zZXJ2aWNlJztcbmltcG9ydCB7QWJzdHJhY3RTb3J0YWJsZVZpZXdDb21wb25lbnR9IGZyb20gJy4uLy4uL2Fic3RyYWN0L3NvcnRhYmxlLXZpZXcnO1xuaW1wb3J0IHtOZXdDYXNlQ3JlYXRpb25Db25maWd1cmF0aW9uRGF0YX0gZnJvbSAnLi4vLi4vLi4vc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy9uZXctY2FzZS9tb2RlbC9uZXctY2FzZS1pbmplY3Rpb24tZGF0YSc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hdXRob3JpemF0aW9uL3Blcm1pc3Npb24vcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL21lc3NhZ2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtDcmVhdGVDYXNlRXZlbnRPdXRjb21lfSBmcm9tICcuLi8uLi8uLi9ldmVudC9tb2RlbC9ldmVudC1vdXRjb21lcy9jYXNlLW91dGNvbWVzL2NyZWF0ZS1jYXNlLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtQYWdpbmF0aW9uUGFyYW1zfSBmcm9tICcuLi8uLi8uLi91dGlsaXR5L3BhZ2luYXRpb24vcGFnaW5hdGlvbi1wYXJhbXMnO1xuaW1wb3J0IHtjcmVhdGVTb3J0UGFyYW0sIFBhZ2luYXRpb25Tb3J0fSBmcm9tICcuLi8uLi8uLi91dGlsaXR5L3BhZ2luYXRpb24vcGFnaW5hdGlvbi1zb3J0JztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtOQUVfTkVXX0NBU0VfRElBTE9HX0NPTVBPTkVOVH0gZnJvbSAnLi4vLi4vLi4vZGlhbG9nL2luamVjdGlvbi10b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FzZVZpZXdTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RTb3J0YWJsZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcmVhZG9ubHkgREVGQVVMVF9ORVdfQ0FTRV9DT05GSUdVUkFUSU9OOiBOZXdDYXNlQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgdXNlQ2FjaGVkUHJvY2Vzc2VzOiB0cnVlXG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBfbG9hZGluZyQ6IExvYWRpbmdXaXRoRmlsdGVyRW1pdHRlcjtcbiAgICBwcm90ZWN0ZWQgX2Nhc2VzJDogT2JzZXJ2YWJsZTxBcnJheTxDYXNlPj47XG4gICAgcHJvdGVjdGVkIF9uZXh0UGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxQYWdlTG9hZFJlcXVlc3RDb250ZXh0PjtcbiAgICBwcm90ZWN0ZWQgX2VuZE9mRGF0YTogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3BhZ2luYXRpb246IFBhZ2luYXRpb247XG4gICAgcHJvdGVjdGVkIF9uZXdDYXNlQ29uZmlndXJhdGlvbjogTmV3Q2FzZUNvbmZpZ3VyYXRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2FsbG93ZWROZXRzU2VydmljZTogQWxsb3dlZE5ldHNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jYXNlUmVzb3VyY2VTZXJ2aWNlOiBDYXNlUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlcjogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9wcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXI6IFNlYXJjaEluZGV4UmVzb2x2ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX05FV19DQVNFX0RJQUxPR19DT01QT05FTlQpIHByb3RlY3RlZCBfbmV3Q2FzZUNvbXBvbmVudDogYW55LFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX05FV19DQVNFX0NPTkZJR1VSQVRJT04pIG5ld0Nhc2VDb25maWc6IE5ld0Nhc2VDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKHJlc29sdmVyKTtcbiAgICAgICAgdGhpcy5fbmV3Q2FzZUNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5ERUZBVUxUX05FV19DQVNFX0NPTkZJR1VSQVRJT059O1xuICAgICAgICBpZiAobmV3Q2FzZUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9uZXdDYXNlQ29uZmlndXJhdGlvbiwgbmV3Q2FzZUNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9hZGluZyQgPSBuZXcgTG9hZGluZ1dpdGhGaWx0ZXJFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3NlYXJjaFNlcnZpY2UuYWN0aXZlRmlsdGVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2VuZE9mRGF0YSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgc2l6ZTogMjUsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3RhbFBhZ2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBudW1iZXI6IC0xXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX25leHRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnZUxvYWRSZXF1ZXN0Q29udGV4dD4oXG4gICAgICAgICAgICBuZXcgUGFnZUxvYWRSZXF1ZXN0Q29udGV4dCh0aGlzLmFjdGl2ZUZpbHRlciwgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFnaW5hdGlvbiwge251bWJlcjogMH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNhc2VzTWFwID0gdGhpcy5fbmV4dFBhZ2UkLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChwID0+IHRoaXMubG9hZFBhZ2UocCkpLFxuICAgICAgICAgICAgbWFwKHBhZ2VMb2FkUmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQgJiYgcGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQuY2xlYXJMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2V0IGFuIGVtcHR5IHZhbHVlIHRvIHRoZSB2aXJ0dWFsIHNjcm9sbCBhbmQgdGhlbiByZXBsYWNlIGl0IGJ5IHRoZSByZWFsIHZhbHVlIGZvcmNpbmcgaXQgdG8gcmVkcmF3IGl0cyBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbe2Nhc2VzOiB7fSwgcmVxdWVzdENvbnRleHQ6IG51bGx9LCBwYWdlTG9hZFJlc3VsdF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheVRvT2JzZXJ2YWJsZShyZXN1bHRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocGFnZUxvYWRSZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY29uY2F0TWFwKG8gPT4gbyksXG4gICAgICAgICAgICBzY2FuKChhY2MsIHBhZ2VMb2FkUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VMb2FkUmVzdWx0LnJlcXVlc3RDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlTG9hZFJlc3VsdC5jYXNlcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5vZmYocGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQuZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9wYWdpbmF0aW9uLCBwYWdlTG9hZFJlc3VsdC5yZXF1ZXN0Q29udGV4dC5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLmFjYywgLi4ucGFnZUxvYWRSZXN1bHQuY2FzZXN9O1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2Nhc2VzJCA9IGNhc2VzTWFwLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiBPYmplY3QudmFsdWVzKHYpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9uZXh0UGFnZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5pc0FjdGl2ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYXNlcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDYXNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FzZXMkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVGaWx0ZXIoKTogRmlsdGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFNlcnZpY2UuYWN0aXZlRmlsdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkUGFnZShyZXF1ZXN0Q29udGV4dDogUGFnZUxvYWRSZXF1ZXN0Q29udGV4dCk6IE9ic2VydmFibGU8Q2FzZVBhZ2VMb2FkUmVxdWVzdFJlc3VsdD4ge1xuICAgICAgICBpZiAocmVxdWVzdENvbnRleHQgPT09IG51bGwgfHwgcmVxdWVzdENvbnRleHQucGFnZU51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7Y2FzZXM6IHt9LCByZXF1ZXN0Q29udGV4dH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBwYXJhbXMgPSB0aGlzLmFkZFNvcnRQYXJhbXMocGFyYW1zKTtcbiAgICAgICAgcGFyYW1zID0gdGhpcy5hZGRQYWdlUGFyYW1zKHBhcmFtcywgcmVxdWVzdENvbnRleHQucGFnaW5hdGlvbik7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckLm9uKHJlcXVlc3RDb250ZXh0LmZpbHRlcik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nhc2VSZXNvdXJjZVNlcnZpY2Uuc2VhcmNoQ2FzZXMocmVxdWVzdENvbnRleHQuZmlsdGVyLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGNhc2VzIGhhcyBmYWlsZWQhJywgZXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5vZmYocmVxdWVzdENvbnRleHQuZmlsdGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe2NvbnRlbnQ6IFtdLCBwYWdpbmF0aW9uOiB7Li4udGhpcy5fcGFnaW5hdGlvbn19KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gcmVxdWVzdENvbnRleHQuZmlsdGVyID09PSB0aGlzLl9zZWFyY2hTZXJ2aWNlLmFjdGl2ZUZpbHRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQub2ZmKHJlcXVlc3RDb250ZXh0LmZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnUmVjZWl2ZWQgY2FzZXMgcGFnZSBpcyBubyBsb25nZXIgcmVsZXZhbnQgc2luY2UgdGhlIGFjdGl2ZSBmaWx0ZXIgaGFzIGNoYW5nZWQgYmVmb3JlIGl0IGNvdWxkIGFycml2ZS4nXG4gICAgICAgICAgICAgICAgICAgICAgICArICcgRGlzY2FyZGluZy4uLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKGMgPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVxdWVzdENvbnRleHQucGFnaW5hdGlvbiwgYy5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKGMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VuZE9mRGF0YSA9ICFBcnJheS5pc0FycmF5KGMuY29udGVudClcbiAgICAgICAgICAgICAgICAgICAgfHwgYy5jb250ZW50Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICB8fCBjLnBhZ2luYXRpb24ubnVtYmVyID09PSBjLnBhZ2luYXRpb24udG90YWxQYWdlcztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKGNhc2VzID0+IEFycmF5LmlzQXJyYXkoY2FzZXMuY29udGVudCkgPyBjYXNlcyA6IHsuLi5jYXNlcywgY29udGVudDogW119KSxcbiAgICAgICAgICAgIG1hcChjYXNlcyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhc2VzLmNvbnRlbnQucmVkdWNlKChhY2MsIGN1cikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLmFjYywgW2N1ci5zdHJpbmdJZF06IGN1cn07XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoY2FzZXMgPT4gKHtjYXNlcywgcmVxdWVzdENvbnRleHR9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dFBhZ2UocmVuZGVyZWRSYW5nZTogTGlzdFJhbmdlLCB0b3RhbExvYWRlZDogbnVtYmVyLCByZXF1ZXN0Q29udGV4dD86IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQpIHtcbiAgICAgICAgaWYgKHJlcXVlc3RDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0ID0gbmV3IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQodGhpcy5hY3RpdmVGaWx0ZXIsIHRoaXMuX3BhZ2luYXRpb24pO1xuICAgICAgICAgICAgcmVxdWVzdENvbnRleHQucGFnaW5hdGlvbi5udW1iZXIgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZ1JlbGV2YW50RmlsdGVyKHJlcXVlc3RDb250ZXh0KSB8fCB0aGlzLl9lbmRPZkRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW5kZXJlZFJhbmdlLmVuZCA9PT0gdG90YWxMb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX25leHRQYWdlJC5uZXh0KHJlcXVlc3RDb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0UGFnZVBhZ2luYXRpb24obGVuZ3RoOiBudW1iZXIsIHBhZ2VJbmRleDogbnVtYmVyLCByZXF1ZXN0Q29udGV4dD86IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQpIHtcbiAgICAgICAgaWYgKHJlcXVlc3RDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0ID0gbmV3IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQodGhpcy5hY3RpdmVGaWx0ZXIsIHRoaXMuX3BhZ2luYXRpb24pO1xuICAgICAgICAgICAgcmVxdWVzdENvbnRleHQucGFnaW5hdGlvbi5zaXplID0gbGVuZ3RoO1xuICAgICAgICAgICAgcmVxdWVzdENvbnRleHQucGFnaW5hdGlvbi5udW1iZXIgPSBwYWdlSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0xvYWRpbmdSZWxldmFudEZpbHRlcihyZXF1ZXN0Q29udGV4dCkgfHwgdGhpcy5fZW5kT2ZEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbmV4dFBhZ2UkLm5leHQocmVxdWVzdENvbnRleHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMb2FkaW5nUmVsZXZhbnRGaWx0ZXIocmVxdWVzdENvbnRleHQ/OiBQYWdlTG9hZFJlcXVlc3RDb250ZXh0KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0Q29udGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX2xvYWRpbmckLmlzQWN0aXZlV2l0aEZpbHRlcihyZXF1ZXN0Q29udGV4dC5maWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVOZXdDYXNlKG5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb246IE5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb25EYXRhID0ge1xuICAgICAgICBlbmFibGVDYXNlVGl0bGU6IHRydWUsXG4gICAgICAgIGlzQ2FzZVRpdGxlUmVxdWlyZWQ6IHRydWVcbiAgICB9KTogT2JzZXJ2YWJsZTxDYXNlPiB7XG4gICAgICAgIGNvbnN0IG15Q2FzZSA9IG5ldyBTdWJqZWN0PENhc2U+KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuX25ld0Nhc2VDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNDAlJyxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMzAwcHgnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzJDogdGhpcy5nZXROZXdDYXNlQWxsb3dlZE5ldHMobmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbi5ibG9ja05ldHMpLFxuICAgICAgICAgICAgICAgIG5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoJGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmICgkZXZlbnQ/LmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJGV2ZW50Lm1lc3NhZ2UsICRldmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIG15Q2FzZS5uZXh0KCRldmVudC5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG15Q2FzZS5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG15Q2FzZS5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRGVmYXVsdE5ld0Nhc2UobmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbjogTmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbkRhdGEgPSB7XG4gICAgICAgIGVuYWJsZUNhc2VUaXRsZTogdHJ1ZSxcbiAgICAgICAgaXNDYXNlVGl0bGVSZXF1aXJlZDogdHJ1ZVxuICAgIH0pOiBPYnNlcnZhYmxlPENhc2U+IHtcbiAgICAgICAgY29uc3QgbXlDYXNlID0gbmV3IFN1YmplY3Q8Q2FzZT4oKTtcbiAgICAgICAgdGhpcy5nZXROZXdDYXNlQWxsb3dlZE5ldHMobmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbi5ibG9ja05ldHMpLnN1YnNjcmliZSgobmV0czogQXJyYXk8UGV0cmlOZXRSZWZlcmVuY2VXaXRoUGVybWlzc2lvbnM+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLmNyZWF0ZUNhc2Uoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncGFuZWwtcHJpbWFyeS1pY29uJyxcbiAgICAgICAgICAgICAgICBuZXRJZDogbmV0c1swXS5zdHJpbmdJZFxuICAgICAgICAgICAgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5TdWNjZXNzU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5jcmVhdGVDYXNlJylcbiAgICAgICAgICAgICAgICAgICAgKyAnICcgKyB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnc2lkZS1tZW51Lm5ldy1jYXNlLmRlZmF1bHRDYXNlTmFtZScpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIG15Q2FzZS5uZXh0KChyZXNwb25zZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlKTtcbiAgICAgICAgICAgICAgICBteUNhc2UuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0JhcihlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbXlDYXNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROZXdDYXNlQWxsb3dlZE5ldHMoYmxvY2tOZXRzOiBzdHJpbmdbXSA9IFtdKTogT2JzZXJ2YWJsZTxBcnJheTxQZXRyaU5ldFJlZmVyZW5jZVdpdGhQZXJtaXNzaW9ucz4+IHtcbiAgICAgICAgaWYgKHRoaXMuX25ld0Nhc2VDb25maWd1cmF0aW9uLnVzZUNhY2hlZFByb2Nlc3Nlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWROZXRzU2VydmljZS5hbGxvd2VkTmV0cyQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAobmV0ID0+IG5ldC5maWx0ZXIobiA9PiBibG9ja05ldHMuaW5kZXhPZihuLmlkZW50aWZpZXIpID09PSAtMSkpLFxuICAgICAgICAgICAgICAgIG1hcChuZXQgPT4gbmV0LmZpbHRlcihuID0+IHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmhhc05ldFBlcm1pc3Npb24oUGVybWlzc2lvblR5cGUuQ1JFQVRFLCBuKSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWROZXRzU2VydmljZS5hbGxvd2VkTmV0cyQucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYWxsb3dlZE5ldHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc1NlcnZpY2UuZ2V0TmV0UmVmZXJlbmNlcyhhbGxvd2VkTmV0cy5tYXAobmV0ID0+IG5ldC5pZGVudGlmaWVyKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcChuZXQgPT4gbmV0LmZpbHRlcihuID0+IGJsb2NrTmV0cy5pbmRleE9mKG4uaWRlbnRpZmllcikgPT09IC0xKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAobmV0ID0+IG5ldC5maWx0ZXIobiA9PiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5oYXNOZXRQZXJtaXNzaW9uKFBlcm1pc3Npb25UeXBlLkNSRUFURSwgbikpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBudW1iZXIgb2YgYWxsb3dlZCBuZXRzIG9mIGNhc2Ugdmlld1xuICAgICAqIEByZXR1cm5zIGxlbmd0aCBvZiBhbGxvd2VkTmV0cyBhcnJheSBpZiBpdCBpcyBkZWZpbmVkLCAwIGlmIGl0IGlzIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBbGxvd2VkTmV0c0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkTmV0c1NlcnZpY2UuYWxsb3dlZE5ldHMgPT09IHVuZGVmaW5lZCA/IDAgOiB0aGlzLl9hbGxvd2VkTmV0c1NlcnZpY2UuYWxsb3dlZE5ldHMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRQYWdlUGFyYW1zKHBhcmFtczogSHR0cFBhcmFtcywgcGFnaW5hdGlvbjogUGFnaW5hdGlvbik6IEh0dHBQYXJhbXMge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFBhZ2luYXRpb25QYXJhbXMuUEFHRV9TSVpFLCBgJHtwYWdpbmF0aW9uLnNpemV9YCk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX05VTUJFUiwgYCR7cGFnaW5hdGlvbi5udW1iZXJ9YCk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlZmF1bHRTb3J0UGFyYW0oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNvcnRQYXJhbSgnc3RyaW5nSWQnLCBQYWdpbmF0aW9uU29ydC5ERVNDRU5ESU5HKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0TWV0YUZpZWxkU29ydElkKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLmZpZWxkSWRlbnRpZmllcikge1xuICAgICAgICAgICAgY2FzZSBDYXNlTWV0YUZpZWxkLlRJVExFOlxuICAgICAgICAgICAgICAgIHJldHVybiAndGl0bGUua2V5d29yZCc7XG4gICAgICAgICAgICBjYXNlIENhc2VNZXRhRmllbGQuVklTVUFMX0lEOlxuICAgICAgICAgICAgICAgIHJldHVybiAndmlzdWFsSWQua2V5d29yZCc7XG4gICAgICAgICAgICBjYXNlIENhc2VNZXRhRmllbGQuQ1JFQVRJT05fREFURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NyZWF0aW9uRGF0ZVNvcnRhYmxlJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RIZWFkZXJTZWFyY2hTdGF0ZS5maWVsZElkZW50aWZpZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2Nhc2VzJCB8fCAhdGhpcy5fcGFnaW5hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW5kT2ZEYXRhID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RDb250ZXh0ID0gbmV3IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQodGhpcy5hY3RpdmVGaWx0ZXIsIHRoaXMuX3BhZ2luYXRpb24sIHRydWUpO1xuICAgICAgICByZXF1ZXN0Q29udGV4dC5wYWdpbmF0aW9uLm51bWJlciA9IDA7XG4gICAgICAgIGNvbnN0IHJhbmdlID0ge1xuICAgICAgICAgICAgc3RhcnQ6IC0xLFxuICAgICAgICAgICAgZW5kOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5uZXh0UGFnZShyYW5nZSwgMCwgcmVxdWVzdENvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNBdXRob3JpdHkoYXV0aG9yaXR5OiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyLmhhc0F1dGhvcml0eShhdXRob3JpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgW1ZJRVdde0BsaW5rIFBlcm1pc3Npb25UeXBlI1ZJRVd9IHBlcm1pc3Npb24gb24gdGhlIGN1cnJlbnQgY2FzZVxuICAgICAqIEBwYXJhbSBhQ2FzZSB0aGUgdGVzdGVkIGNhc2VcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdGhlIGBWSUVXYCBwZXJtaXNzaW9uIG9uIHRoZSB0ZXN0ZWQgY2FzZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIHZpZXdFbmFibGVkKGFDYXNlOiBDYXNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5oYXNDYXNlUGVybWlzc2lvbihhQ2FzZSwgUGVybWlzc2lvblR5cGUuVklFVyk7XG4gICAgfVxufVxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aWV3LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3ZpZXcvY2FzZS12aWV3L3NlcnZpY2UvY2FzZS12aWV3LXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFNaEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDMUUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHaEYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFHdEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBUTVGLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBTzNFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxlQUFlLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFFNUYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHL0UsTUFBTSxPQUFPLGVBQWdCLFNBQVEsNkJBQTZCO0lBY3hDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUVtRDtJQUVuRDtJQXhCYiw4QkFBOEIsR0FBeUI7UUFDNUQsa0JBQWtCLEVBQUUsSUFBSTtLQUMzQixDQUFDO0lBRVEsU0FBUyxDQUEyQjtJQUNwQyxPQUFPLENBQTBCO0lBQ2pDLFVBQVUsQ0FBMEM7SUFDcEQsVUFBVSxDQUFVO0lBQ3BCLFdBQVcsQ0FBYTtJQUN4QixxQkFBcUIsQ0FBdUI7SUFDNUMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUUzQyxZQUFzQixtQkFBdUMsRUFDdkMsT0FBa0IsRUFDbEIsb0JBQXlDLEVBQ3pDLElBQW1CLEVBQ25CLGdCQUFpQyxFQUNqQyxjQUE2QixFQUM3QixVQUE0QixFQUM1QixLQUFrQixFQUNsQixlQUErQixFQUN6QyxRQUFvQyxFQUN5QixpQkFBc0IsRUFDbkMsYUFBbUMsRUFDekUsa0JBQXFDO1FBQ3ZELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWJFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUVvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQUs7UUFFekUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUV2RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsRUFBQyxDQUFDO1FBQ3RFLElBQUksYUFBYSxLQUFLLElBQUksRUFBRTtZQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUM1RDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLElBQUksRUFBRSxFQUFFO1lBQ1IsYUFBYSxFQUFFLFNBQVM7WUFDeEIsVUFBVSxFQUFFLFNBQVM7WUFDckIsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNiLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUNqQyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQ2xHLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDakMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMvQixHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDakIsSUFBSSxjQUFjLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO2dCQUM1RSxxSEFBcUg7Z0JBQ3JILE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDcEUsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDSCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3QjtRQUNMLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNqQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEVBQUU7WUFDekIsSUFBSSxjQUFjLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtnQkFDeEMsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO2FBQy9CO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3RCLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQzthQUMvQjtZQUNELE9BQU8sRUFBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUMsQ0FBQztRQUM3QyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ1QsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsY0FBYyxDQUFDLEtBQWM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxjQUFzQztRQUNsRCxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksY0FBYyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLE1BQU0sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDNUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDckUsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHVHQUF1RztzQkFDakgsZ0JBQWdCLENBQUMsQ0FBQzthQUMzQjtZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ0osTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO21CQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO21CQUN0QixDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMzRCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQyxFQUM1RSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNyQyxPQUFPLEVBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFDLENBQUM7WUFDekMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU0sUUFBUSxDQUFDLGFBQXdCLEVBQUUsV0FBbUIsRUFBRSxjQUF1QztRQUNsRyxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDOUIsY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakYsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqRSxPQUFPO1NBQ1Y7UUFFRCxJQUFJLGFBQWEsQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxTQUFpQixFQUFFLGNBQXVDO1FBQ2hHLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUM5QixjQUFjLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqRixjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFDeEMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqRSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsY0FBdUM7UUFDbkUsT0FBTyxjQUFjLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxhQUFhLENBQUMsK0JBQWlFO1FBQ2xGLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLG1CQUFtQixFQUFFLElBQUk7S0FDNUI7UUFDRyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsSUFBSSxFQUFFO2dCQUNGLFlBQVksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDO2dCQUNoRiw0QkFBNEI7YUFDL0I7U0FDSixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZDLElBQUksTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLG9CQUFvQixDQUFDLCtCQUFpRTtRQUN6RixlQUFlLEVBQUUsSUFBSTtRQUNyQixtQkFBbUIsRUFBRSxJQUFJO0tBQzVCO1FBQ0csTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBNkMsRUFBRSxFQUFFO1lBQzNILElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztnQkFDMUcsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztnQkFDakMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2FBQzFCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFxQyxFQUFFLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztzQkFDNUYsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUUsUUFBUSxDQUFDLE9BQWtDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1AsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDbkgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUM1RSxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNQLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0scUJBQXFCLENBQUMsWUFBc0IsRUFBRTtRQUNqRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNsRyxDQUFDO1NBQ0w7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzdDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JGLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xHLENBQUM7WUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksbUJBQW1CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDaEgsQ0FBQztJQUVTLGFBQWEsQ0FBQyxNQUFrQixFQUFFLFVBQXNCO1FBQzlELE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxtQkFBbUI7UUFDekIsT0FBTyxlQUFlLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRVMsa0JBQWtCO1FBQ3hCLFFBQVEsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRTtZQUNqRCxLQUFLLGFBQWEsQ0FBQyxLQUFLO2dCQUNwQixPQUFPLGVBQWUsQ0FBQztZQUMzQixLQUFLLGFBQWEsQ0FBQyxTQUFTO2dCQUN4QixPQUFPLGtCQUFrQixDQUFDO1lBQzlCLEtBQUssYUFBYSxDQUFDLGFBQWE7Z0JBQzVCLE9BQU8sc0JBQXNCLENBQUM7WUFDbEM7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHO1lBQ1YsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNULEdBQUcsRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWlDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsS0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7d0dBN1RRLGVBQWUsNlVBd0JRLDZCQUE2Qiw2QkFDN0IsMEJBQTBCOzRHQXpCakQsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBeUJNLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCOzswQkFDaEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7Q2FzZX0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZWFyY2gvc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgY29uY2F0TWFwLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHNjYW4sIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnaW5hdGlvbic7XG5pbXBvcnQge0Nhc2VNZXRhRmllbGR9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9jYXNlLWhlYWRlci9jYXNlLW1lbnRhLWVudW0nO1xuaW1wb3J0IHtQYWdlTG9hZFJlcXVlc3RDb250ZXh0fSBmcm9tICcuLi8uLi9hYnN0cmFjdC9wYWdlLWxvYWQtcmVxdWVzdC1jb250ZXh0JztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7TG9hZGluZ1dpdGhGaWx0ZXJFbWl0dGVyfSBmcm9tICcuLi8uLi8uLi91dGlsaXR5L2xvYWRpbmctd2l0aC1maWx0ZXItZW1pdHRlcic7XG5pbXBvcnQge0Nhc2VQYWdlTG9hZFJlcXVlc3RSZXN1bHR9IGZyb20gJy4uL21vZGVscy9jYXNlLXBhZ2UtbG9hZC1yZXF1ZXN0LXJlc3VsdCc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge2FycmF5VG9PYnNlcnZhYmxlfSBmcm9tICcuLi8uLi8uLi91dGlsaXR5L2FycmF5LXRvLW9ic2VydmFibGUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uVHlwZX0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQge05BRV9ORVdfQ0FTRV9DT05GSUdVUkFUSU9OfSBmcm9tICcuLi9tb2RlbHMvbmV3LWNhc2UtY29uZmlndXJhdGlvbi1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtOZXdDYXNlQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vbW9kZWxzL25ldy1jYXNlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtQZXRyaU5ldFJlZmVyZW5jZVdpdGhQZXJtaXNzaW9uc30gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy9wZXRyaS1uZXQtcmVmZXJlbmNlLXdpdGgtcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtcbiAgICBTZWFyY2hJbmRleFJlc29sdmVyU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZWFyY2gvc2VhcmNoLWtleXdvcmQtcmVzb2x2ZXItc2VydmljZS9zZWFyY2gtaW5kZXgtcmVzb2x2ZXIuc2VydmljZSc7XG5pbXBvcnQge0FsbG93ZWROZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYWxsb3dlZC1uZXRzL3NlcnZpY2VzL2FsbG93ZWQtbmV0cy5zZXJ2aWNlJztcbmltcG9ydCB7QWJzdHJhY3RTb3J0YWJsZVZpZXdDb21wb25lbnR9IGZyb20gJy4uLy4uL2Fic3RyYWN0L3NvcnRhYmxlLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBOZXdDYXNlQ3JlYXRpb25Db25maWd1cmF0aW9uRGF0YVxufSBmcm9tICcuLi8uLi8uLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL25ldy1jYXNlL21vZGVsL25ldy1jYXNlLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uLy4uLy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge1BhZ2luYXRpb25QYXJhbXN9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtcyc7XG5pbXBvcnQge2NyZWF0ZVNvcnRQYXJhbSwgUGFnaW5hdGlvblNvcnR9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXNvcnQnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge05BRV9ORVdfQ0FTRV9ESUFMT0dfQ09NUE9ORU5UfSBmcm9tICcuLi8uLi8uLi9kaWFsb2cvaW5qZWN0aW9uLXRva2Vucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXNlVmlld1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFNvcnRhYmxlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICByZWFkb25seSBERUZBVUxUX05FV19DQVNFX0NPTkZJR1VSQVRJT046IE5ld0Nhc2VDb25maWd1cmF0aW9uID0ge1xuICAgICAgICB1c2VDYWNoZWRQcm9jZXNzZXM6IHRydWVcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIF9sb2FkaW5nJDogTG9hZGluZ1dpdGhGaWx0ZXJFbWl0dGVyO1xuICAgIHByb3RlY3RlZCBfY2FzZXMkOiBPYnNlcnZhYmxlPEFycmF5PENhc2U+PjtcbiAgICBwcm90ZWN0ZWQgX25leHRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PFBhZ2VMb2FkUmVxdWVzdENvbnRleHQ+O1xuICAgIHByb3RlY3RlZCBfZW5kT2ZEYXRhOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcbiAgICBwcm90ZWN0ZWQgX25ld0Nhc2VDb25maWd1cmF0aW9uOiBOZXdDYXNlQ29uZmlndXJhdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3BhZ2luYXRpb25WaWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2FsbG93ZWROZXRzU2VydmljZTogQWxsb3dlZE5ldHNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jYXNlUmVzb3VyY2VTZXJ2aWNlOiBDYXNlUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlcjogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9wcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXI6IFNlYXJjaEluZGV4UmVzb2x2ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX05FV19DQVNFX0RJQUxPR19DT01QT05FTlQpIHByb3RlY3RlZCBfbmV3Q2FzZUNvbXBvbmVudDogYW55LFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX05FV19DQVNFX0NPTkZJR1VSQVRJT04pIG5ld0Nhc2VDb25maWc6IE5ld0Nhc2VDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKHJlc29sdmVyKTtcbiAgICAgICAgdGhpcy5fbmV3Q2FzZUNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5ERUZBVUxUX05FV19DQVNFX0NPTkZJR1VSQVRJT059O1xuICAgICAgICBpZiAobmV3Q2FzZUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9uZXdDYXNlQ29uZmlndXJhdGlvbiwgbmV3Q2FzZUNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9hZGluZyQgPSBuZXcgTG9hZGluZ1dpdGhGaWx0ZXJFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3NlYXJjaFNlcnZpY2UuYWN0aXZlRmlsdGVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2VuZE9mRGF0YSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgc2l6ZTogMjUsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3RhbFBhZ2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBudW1iZXI6IC0xXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX25leHRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnZUxvYWRSZXF1ZXN0Q29udGV4dD4oXG4gICAgICAgICAgICBuZXcgUGFnZUxvYWRSZXF1ZXN0Q29udGV4dCh0aGlzLmFjdGl2ZUZpbHRlciwgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFnaW5hdGlvbiwge251bWJlcjogMH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNhc2VzTWFwID0gdGhpcy5fbmV4dFBhZ2UkLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChwID0+IHRoaXMubG9hZFBhZ2UocCkpLFxuICAgICAgICAgICAgbWFwKHBhZ2VMb2FkUmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQgJiYgcGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQuY2xlYXJMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2V0IGFuIGVtcHR5IHZhbHVlIHRvIHRoZSB2aXJ0dWFsIHNjcm9sbCBhbmQgdGhlbiByZXBsYWNlIGl0IGJ5IHRoZSByZWFsIHZhbHVlIGZvcmNpbmcgaXQgdG8gcmVkcmF3IGl0cyBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbe2Nhc2VzOiB7fSwgcmVxdWVzdENvbnRleHQ6IG51bGx9LCBwYWdlTG9hZFJlc3VsdF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheVRvT2JzZXJ2YWJsZShyZXN1bHRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocGFnZUxvYWRSZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY29uY2F0TWFwKG8gPT4gbyksXG4gICAgICAgICAgICBzY2FuKChhY2MsIHBhZ2VMb2FkUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VMb2FkUmVzdWx0LnJlcXVlc3RDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlTG9hZFJlc3VsdC5jYXNlcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5vZmYocGFnZUxvYWRSZXN1bHQucmVxdWVzdENvbnRleHQuZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9wYWdpbmF0aW9uLCBwYWdlTG9hZFJlc3VsdC5yZXF1ZXN0Q29udGV4dC5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGlvblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhZ2VMb2FkUmVzdWx0LmNhc2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLmFjYywgLi4ucGFnZUxvYWRSZXN1bHQuY2FzZXN9O1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2Nhc2VzJCA9IGNhc2VzTWFwLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiBPYmplY3QudmFsdWVzKHYpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9uZXh0UGFnZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5pc0FjdGl2ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYXNlcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDYXNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FzZXMkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVGaWx0ZXIoKTogRmlsdGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFNlcnZpY2UuYWN0aXZlRmlsdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcGFnaW5hdGlvblZpZXcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvblZpZXcgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFBhZ2UocmVxdWVzdENvbnRleHQ6IFBhZ2VMb2FkUmVxdWVzdENvbnRleHQpOiBPYnNlcnZhYmxlPENhc2VQYWdlTG9hZFJlcXVlc3RSZXN1bHQ+IHtcbiAgICAgICAgaWYgKHJlcXVlc3RDb250ZXh0ID09PSBudWxsIHx8IHJlcXVlc3RDb250ZXh0LnBhZ2VOdW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoe2Nhc2VzOiB7fSwgcmVxdWVzdENvbnRleHR9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyYW1zOiBIdHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgcGFyYW1zID0gdGhpcy5hZGRTb3J0UGFyYW1zKHBhcmFtcyk7XG4gICAgICAgIHBhcmFtcyA9IHRoaXMuYWRkUGFnZVBhcmFtcyhwYXJhbXMsIHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24pO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5vbihyZXF1ZXN0Q29udGV4dC5maWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLnNlYXJjaENhc2VzKHJlcXVlc3RDb250ZXh0LmZpbHRlciwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignTG9hZGluZyBjYXNlcyBoYXMgZmFpbGVkIScsIGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQub2ZmKHJlcXVlc3RDb250ZXh0LmZpbHRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHtjb250ZW50OiBbXSwgcGFnaW5hdGlvbjogey4uLnRoaXMuX3BhZ2luYXRpb259fSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RDb250ZXh0LmZpbHRlciA9PT0gdGhpcy5fc2VhcmNoU2VydmljZS5hY3RpdmVGaWx0ZXI7XG4gICAgICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm9mZihyZXF1ZXN0Q29udGV4dC5maWx0ZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ1JlY2VpdmVkIGNhc2VzIHBhZ2UgaXMgbm8gbG9uZ2VyIHJlbGV2YW50IHNpbmNlIHRoZSBhY3RpdmUgZmlsdGVyIGhhcyBjaGFuZ2VkIGJlZm9yZSBpdCBjb3VsZCBhcnJpdmUuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKyAnIERpc2NhcmRpbmcuLi4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcChjID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24sIGMucGFnaW5hdGlvbik7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcChjID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSAhQXJyYXkuaXNBcnJheShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgICAgIHx8IGMuY29udGVudC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgYy5wYWdpbmF0aW9uLm51bWJlciA9PT0gYy5wYWdpbmF0aW9uLnRvdGFsUGFnZXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcChjYXNlcyA9PiBBcnJheS5pc0FycmF5KGNhc2VzLmNvbnRlbnQpID8gY2FzZXMgOiB7Li4uY2FzZXMsIGNvbnRlbnQ6IFtdfSksXG4gICAgICAgICAgICBtYXAoY2FzZXMgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXNlcy5jb250ZW50LnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5hY2MsIFtjdXIuc3RyaW5nSWRdOiBjdXJ9O1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKGNhc2VzID0+ICh7Y2FzZXMsIHJlcXVlc3RDb250ZXh0fSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG5leHRQYWdlKHJlbmRlcmVkUmFuZ2U6IExpc3RSYW5nZSwgdG90YWxMb2FkZWQ6IG51bWJlciwgcmVxdWVzdENvbnRleHQ/OiBQYWdlTG9hZFJlcXVlc3RDb250ZXh0KSB7XG4gICAgICAgIGlmIChyZXF1ZXN0Q29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXF1ZXN0Q29udGV4dCA9IG5ldyBQYWdlTG9hZFJlcXVlc3RDb250ZXh0KHRoaXMuYWN0aXZlRmlsdGVyLCB0aGlzLl9wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24ubnVtYmVyICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0xvYWRpbmdSZWxldmFudEZpbHRlcihyZXF1ZXN0Q29udGV4dCkgfHwgdGhpcy5fZW5kT2ZEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVuZGVyZWRSYW5nZS5lbmQgPT09IHRvdGFsTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0UGFnZSQubmV4dChyZXF1ZXN0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dFBhZ2VQYWdpbmF0aW9uKGxlbmd0aDogbnVtYmVyLCBwYWdlSW5kZXg6IG51bWJlciwgcmVxdWVzdENvbnRleHQ/OiBQYWdlTG9hZFJlcXVlc3RDb250ZXh0KSB7XG4gICAgICAgIGlmIChyZXF1ZXN0Q29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXF1ZXN0Q29udGV4dCA9IG5ldyBQYWdlTG9hZFJlcXVlc3RDb250ZXh0KHRoaXMuYWN0aXZlRmlsdGVyLCB0aGlzLl9wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24uc2l6ZSA9IGxlbmd0aDtcbiAgICAgICAgICAgIHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24ubnVtYmVyID0gcGFnZUluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nUmVsZXZhbnRGaWx0ZXIocmVxdWVzdENvbnRleHQpIHx8IHRoaXMuX2VuZE9mRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25leHRQYWdlJC5uZXh0KHJlcXVlc3RDb250ZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTG9hZGluZ1JlbGV2YW50RmlsdGVyKHJlcXVlc3RDb250ZXh0PzogUGFnZUxvYWRSZXF1ZXN0Q29udGV4dCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9sb2FkaW5nJC5pc0FjdGl2ZVdpdGhGaWx0ZXIocmVxdWVzdENvbnRleHQuZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlTmV3Q2FzZShuZXdDYXNlQ3JlYXRpb25Db25maWd1cmF0aW9uOiBOZXdDYXNlQ3JlYXRpb25Db25maWd1cmF0aW9uRGF0YSA9IHtcbiAgICAgICAgZW5hYmxlQ2FzZVRpdGxlOiB0cnVlLFxuICAgICAgICBpc0Nhc2VUaXRsZVJlcXVpcmVkOiB0cnVlXG4gICAgfSk6IE9ic2VydmFibGU8Q2FzZT4ge1xuICAgICAgICBjb25zdCBteUNhc2UgPSBuZXcgU3ViamVjdDxDYXNlPigpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2cub3Blbih0aGlzLl9uZXdDYXNlQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzQwJScsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzMwMHB4JyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFwiZGlhbG9nLXJlc3BvbnNpdmVcIixcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyQ6IHRoaXMuZ2V0TmV3Q2FzZUFsbG93ZWROZXRzKG5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24uYmxvY2tOZXRzKSxcbiAgICAgICAgICAgICAgICBuZXdDYXNlQ3JlYXRpb25Db25maWd1cmF0aW9uXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoJGV2ZW50Py5kYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCRldmVudC5tZXNzYWdlLCAkZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICBteUNhc2UubmV4dCgkZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBteUNhc2UuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBteUNhc2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURlZmF1bHROZXdDYXNlKG5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb246IE5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb25EYXRhID0ge1xuICAgICAgICBlbmFibGVDYXNlVGl0bGU6IHRydWUsXG4gICAgICAgIGlzQ2FzZVRpdGxlUmVxdWlyZWQ6IHRydWVcbiAgICB9KTogT2JzZXJ2YWJsZTxDYXNlPiB7XG4gICAgICAgIGNvbnN0IG15Q2FzZSA9IG5ldyBTdWJqZWN0PENhc2U+KCk7XG4gICAgICAgIHRoaXMuZ2V0TmV3Q2FzZUFsbG93ZWROZXRzKG5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24uYmxvY2tOZXRzKS5zdWJzY3JpYmUoKG5ldHM6IEFycmF5PFBldHJpTmV0UmVmZXJlbmNlV2l0aFBlcm1pc3Npb25zPikgPT4ge1xuICAgICAgICAgICAgaWYgKCFuZXRzIHx8IG5ldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5ub05ldHMnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ05vIG5ldHMgYXZhaWxhYmxlIGZvciBjYXNlIGNyZWF0aW9uLiBFbnN1cmUgdGhlIGFsbG93ZWQgbmV0cyBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3QuJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2FzZVJlc291cmNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbnVsbCxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3BhbmVsLXByaW1hcnktaWNvbicsXG4gICAgICAgICAgICAgICAgbmV0SWQ6IG5ldHNbMF0uc3RyaW5nSWRcbiAgICAgICAgICAgIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuU3VjY2Vzc1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlQ2FzZScpXG4gICAgICAgICAgICAgICAgICAgICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5kZWZhdWx0Q2FzZU5hbWUnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICBteUNhc2UubmV4dCgocmVzcG9uc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZSk7XG4gICAgICAgICAgICAgICAgbXlDYXNlLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZSA/IGVycm9yLm1lc3NhZ2UgOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnc2lkZS1tZW51Lm5ldy1jYXNlLmNyZWF0ZUNhc2VFcnJvcicpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0JhcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNhc2UgY3JlYXRpb246ICcgKyBlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UgfHwgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5lcnJvckNyZWF0ZScpO1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggYWxsb3dlZCBuZXRzLiBFcnJvcjogJyArIGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBteUNhc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5ld0Nhc2VBbGxvd2VkTmV0cyhibG9ja05ldHM6IHN0cmluZ1tdID0gW10pOiBPYnNlcnZhYmxlPEFycmF5PFBldHJpTmV0UmVmZXJlbmNlV2l0aFBlcm1pc3Npb25zPj4ge1xuICAgICAgICBpZiAodGhpcy5fbmV3Q2FzZUNvbmZpZ3VyYXRpb24udXNlQ2FjaGVkUHJvY2Vzc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZE5ldHNTZXJ2aWNlLmFsbG93ZWROZXRzJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChuZXQgPT4gbmV0LmZpbHRlcihuID0+IGJsb2NrTmV0cy5pbmRleE9mKG4uaWRlbnRpZmllcikgPT09IC0xKSksXG4gICAgICAgICAgICAgICAgbWFwKG5ldCA9PiBuZXQuZmlsdGVyKG4gPT4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuaGFzTmV0UGVybWlzc2lvbihQZXJtaXNzaW9uVHlwZS5DUkVBVEUsIG4pKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZE5ldHNTZXJ2aWNlLmFsbG93ZWROZXRzJC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChhbGxvd2VkTmV0cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU2VydmljZS5nZXROZXRSZWZlcmVuY2VzKGFsbG93ZWROZXRzLm1hcChuZXQgPT4gbmV0LmlkZW50aWZpZXIpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKG5ldCA9PiBuZXQuZmlsdGVyKG4gPT4gYmxvY2tOZXRzLmluZGV4T2Yobi5pZGVudGlmaWVyKSA9PT0gLTEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcChuZXQgPT4gbmV0LmZpbHRlcihuID0+IHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmhhc05ldFBlcm1pc3Npb24oUGVybWlzc2lvblR5cGUuQ1JFQVRFLCBuKSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG51bWJlciBvZiBhbGxvd2VkIG5ldHMgb2YgY2FzZSB2aWV3XG4gICAgICogQHJldHVybnMgbGVuZ3RoIG9mIGFsbG93ZWROZXRzIGFycmF5IGlmIGl0IGlzIGRlZmluZWQsIDAgaWYgaXQgaXMgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbG93ZWROZXRzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWROZXRzU2VydmljZS5hbGxvd2VkTmV0cyA9PT0gdW5kZWZpbmVkID8gMCA6IHRoaXMuX2FsbG93ZWROZXRzU2VydmljZS5hbGxvd2VkTmV0cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFkZFBhZ2VQYXJhbXMocGFyYW1zOiBIdHRwUGFyYW1zLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX1NJWkUsIGAke3BhZ2luYXRpb24uc2l6ZX1gKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfTlVNQkVSLCBgJHtwYWdpbmF0aW9uLm51bWJlcn1gKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdFNvcnRQYXJhbSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gY3JlYXRlU29ydFBhcmFtKCdzdHJpbmdJZCcsIFBhZ2luYXRpb25Tb3J0LkRFU0NFTkRJTkcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRNZXRhRmllbGRTb3J0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUuZmllbGRJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBjYXNlIENhc2VNZXRhRmllbGQuVElUTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0aXRsZS5rZXl3b3JkJztcbiAgICAgICAgICAgIGNhc2UgQ2FzZU1ldGFGaWVsZC5WSVNVQUxfSUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd2aXN1YWxJZC5rZXl3b3JkJztcbiAgICAgICAgICAgIGNhc2UgQ2FzZU1ldGFGaWVsZC5DUkVBVElPTl9EQVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY3JlYXRpb25EYXRlU29ydGFibGUnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLmZpZWxkSWRlbnRpZmllcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FzZXMkIHx8ICF0aGlzLl9wYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVxdWVzdENvbnRleHQgPSBuZXcgUGFnZUxvYWRSZXF1ZXN0Q29udGV4dCh0aGlzLmFjdGl2ZUZpbHRlciwgdGhpcy5fcGFnaW5hdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHJlcXVlc3RDb250ZXh0LnBhZ2luYXRpb24ubnVtYmVyID0gMDtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB7XG4gICAgICAgICAgICBzdGFydDogLTEsXG4gICAgICAgICAgICBlbmQ6IDBcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm5leHRQYWdlKHJhbmdlLCAwLCByZXF1ZXN0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0F1dGhvcml0eShhdXRob3JpdHk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXIuaGFzQXV0aG9yaXR5KGF1dGhvcml0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaGFzIHRoZSBbVklFV117QGxpbmsgUGVybWlzc2lvblR5cGUjVklFV30gcGVybWlzc2lvbiBvbiB0aGUgY3VycmVudCBjYXNlXG4gICAgICogQHBhcmFtIGFDYXNlIHRoZSB0ZXN0ZWQgY2FzZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgYFZJRVdgIHBlcm1pc3Npb24gb24gdGhlIHRlc3RlZCBjYXNlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdmlld0VuYWJsZWQoYUNhc2U6IENhc2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmhhc0Nhc2VQZXJtaXNzaW9uKGFDYXNlLCBQZXJtaXNzaW9uVHlwZS5WSUVXKTtcbiAgICB9XG59XG4iXX0=
|