@valtimo/zgw 12.11.0 → 12.14.0
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/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +6 -8
- package/esm2022/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.mjs +2 -2
- package/fesm2022/valtimo-zgw.mjs +6 -8
- package/fesm2022/valtimo-zgw.mjs.map +1 -1
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +1 -1
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -38,9 +38,6 @@ import * as i9 from "@valtimo/access-control";
|
|
|
38
38
|
import * as i10 from "@angular/common";
|
|
39
39
|
import * as i11 from "@valtimo/components";
|
|
40
40
|
export class DossierDetailTabDocumentenApiDocumentsComponent {
|
|
41
|
-
get sortState$() {
|
|
42
|
-
return this._sort$.pipe(map(sortValue => this.getSortStateFromSortString(sortValue?.sort)));
|
|
43
|
-
}
|
|
44
41
|
constructor(route, router, uploadProviderService, downloadService, translateService, configService, userProviderService, iconService, documentenApiDocumentService, documentenApiColumnService, documentenApiVersionService, permissionService) {
|
|
45
42
|
this.route = route;
|
|
46
43
|
this.router = router;
|
|
@@ -63,7 +60,9 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
|
|
|
63
60
|
this._sort$,
|
|
64
61
|
])), map(([columns, supportedDocumentenApiFeatures, sort]) => {
|
|
65
62
|
const defaultSortColumn = columns.find((column) => !!column.defaultSort);
|
|
66
|
-
if (!!defaultSortColumn &&
|
|
63
|
+
if (!!defaultSortColumn &&
|
|
64
|
+
!sort?.sort &&
|
|
65
|
+
supportedDocumentenApiFeatures.supportsSortableColumns) {
|
|
67
66
|
this._sort$.next({ sort: `${defaultSortColumn.key},${defaultSortColumn.defaultSort}` });
|
|
68
67
|
}
|
|
69
68
|
return columns.map((column) => ({
|
|
@@ -77,9 +76,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
|
|
|
77
76
|
...(column.key === DOCUMENTEN_COLUMN_KEYS.CREATIEDATUM && { format: 'DD-MM-YYYY' }),
|
|
78
77
|
sortable: column.sortable && supportedDocumentenApiFeatures.supportsSortableColumns,
|
|
79
78
|
}));
|
|
80
|
-
}), tap(() =>
|
|
81
|
-
this.fieldsLoading$.next(false);
|
|
82
|
-
}));
|
|
79
|
+
}), tap(() => this.fieldsLoading$.next(false)));
|
|
83
80
|
this.actionItems = [
|
|
84
81
|
{
|
|
85
82
|
label: 'document.download',
|
|
@@ -123,6 +120,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
|
|
|
123
120
|
...DEFAULT_PAGINATOR_CONFIG,
|
|
124
121
|
itemsPerPageOptions: [5, 10, 20, 50, 100],
|
|
125
122
|
};
|
|
123
|
+
this.sortState$ = this._sort$.pipe(filter(sortValue => !!sortValue?.sort), map(sortValue => this.getSortStateFromSortString(sortValue?.sort)));
|
|
126
124
|
this.uploadFields$ = this.documentId$.pipe(switchMap(documentId => this.documentenApiDocumentService.getPrefilledUploadFields(documentId)), map(uploadFields => uploadFields.reduce((acc, curr) => ({
|
|
127
125
|
...acc,
|
|
128
126
|
[curr.key]: {
|
|
@@ -442,4 +440,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
442
440
|
type: ViewChild,
|
|
443
441
|
args: ['translationTemplate']
|
|
444
442
|
}] } });
|
|
445
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBRTVCLDRCQUE0QixHQUU3QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYyxNQUFNLDJCQUEyQixDQUFD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QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1ksbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0ZpbHRlcjE2LCBUYWdHcm91cDE2LCBVcGxvYWQxNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDYXJib25MaXN0TW9kdWxlLFxuICBDb2x1bW5Db25maWcsXG4gIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBERUZBVUxUX1BBR0lOQVRJT04sXG4gIERFRkFVTFRfUEFHSU5BVE9SX0NPTkZJRyxcbiAgRG9jdW1lbnRlbkFwaU1ldGFkYXRhLFxuICBQYWdpbmF0aW9uLFxuICBTb3J0U3RhdGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgRGlyZWN0aW9ufSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtcbiAgQ0FOX0NSRUFURV9SRVNPVVJDRV9QRVJNSVNTSU9OLFxuICBDQU5fREVMRVRFX1JFU09VUkNFX1BFUk1JU1NJT04sXG4gIENBTl9NT0RJRllfUkVTT1VSQ0VfUEVSTUlTU0lPTixcbiAgQ0FOX1ZJRVdfUkVTT1VSQ0VfUEVSTUlTU0lPTixcbiAgRG93bmxvYWRTZXJ2aWNlLFxuICBSRVNPVVJDRV9QRVJNSVNTSU9OX1JFU09VUkNFLFxuICBVcGxvYWRQcm92aWRlclNlcnZpY2UsXG59IGZyb20gJ0B2YWx0aW1vL3Jlc291cmNlJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgSWNvbk1vZHVsZSwgSWNvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDT0xVTU5fVklFV19UWVBFUyxcbiAgQ29uZmlndXJlZENvbHVtbixcbiAgRE9DVU1FTlRFTl9DT0xVTU5fS0VZUyxcbiAgRG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsLFxuICBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUsXG4gIFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UsIERvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi4vZG9jdW1lbnRlbi1hcGktZmlsdGVyL2RvY3VtZW50ZW4tYXBpLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpTWV0YWRhdGFNb2RhbENvbXBvbmVudH0gZnJvbSAnLi4vZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwvZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERvY3VtZW50ZW5BcGlVcGxvYWRGaWVsZERlZmF1bHRWYWx1ZXMsXG4gIERvY3VtZW50ZW5BcGlVcGxvYWRGaWVsZHMsXG59IGZyb20gJy4uLy4uL21vZGVscy9kb2N1bWVudGVuLWFwaS11cGxvYWQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHtQZXJtaXNzaW9uUmVxdWVzdCwgUGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiRG9jdW1lbnRlbkFwaURvY3VtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0cmFuc2xhdGlvblRlbXBsYXRlJykgdHJhbnNsYXRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudERlZmluaXRpb25OYW1lJCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgIGZpbHRlcihjYXNlRGVmaW5pdGlvbk5hbWUgPT4gISFjYXNlRGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJDogT2JzZXJ2YWJsZTxTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM+ID1cbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNhc2VEZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZS5nZXRTdXBwb3J0ZWRBcGlGZWF0dXJlcyhjYXNlRGVmaW5pdGlvbk5hbWUpXG4gICAgICApLFxuICAgICAgdGFwKHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyA9PlxuICAgICAgICB0aGlzLnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQubmV4dChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMpXG4gICAgICApXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzJDogT2JzZXJ2YWJsZTxDb2x1bW5Db25maWdbXT4gPSB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgIHRhcCgoKSA9PiB0aGlzLmZpZWxkc0xvYWRpbmckLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZS5nZXRDb25maWd1cmVkQ29sdW1ucyhkb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICAgICAgdGhpcy5fc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCxcbiAgICAgICAgdGhpcy5fc29ydCQsXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbY29sdW1ucywgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLCBzb3J0XSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNvcnRDb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4gfCB1bmRlZmluZWQgPSBjb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4pID0+ICEhY29sdW1uLmRlZmF1bHRTb3J0XG4gICAgICApO1xuICAgICAgaWYgKCEhZGVmYXVsdFNvcnRDb2x1bW4gJiYgIXNvcnQgJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zKSB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnQ6IGAke2RlZmF1bHRTb3J0Q29sdW1uLmtleX0sJHtkZWZhdWx0U29ydENvbHVtbi5kZWZhdWx0U29ydH1gfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5rZXkgPT09IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQkVTVEFORFNPTVZBTkcgPyAnc2l6ZScgOiBjb2x1bW4ua2V5LFxuICAgICAgICBsYWJlbDogYHpndy5kb2N1bWVudENvbHVtbnMuJHtjb2x1bW4ua2V5fWAsXG4gICAgICAgIHZpZXdUeXBlOiAhQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPyBWaWV3VHlwZS5URVhUIDogQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0sXG4gICAgICAgIC4uLihDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSA9PT0gVmlld1R5cGUuVEVNUExBVEUgJiYge1xuICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRyYW5zbGF0aW9uVGVtcGxhdGUsXG4gICAgICAgICAgdGVtcGxhdGVEYXRhOiB7a2V5OiBjb2x1bW4ua2V5fSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkNSRUFUSUVEQVRVTSAmJiB7Zm9ybWF0OiAnREQtTU0tWVlZWSd9KSxcbiAgICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSAmJiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMuc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMsXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuZmllbGRzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfSlcbiAgKTtcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGU7XG4gIHB1YmxpYyBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZG93bmxvYWQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25Eb3dubG9hZEFjdGlvbkNsaWNrLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmRvd25sb2FkRGlzYWJsZWQuYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdub3JtYWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdkb2N1bWVudC5lZGl0JyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRWRpdE1ldGFkYXRhLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmVkaXREaXNhYmxlZC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRlbGV0ZScsXG4gICAgICBjYWxsYmFjazogdGhpcy5vbkRlbGV0ZUFjdGlvbkNsaWNrLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmRlbGV0ZURpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gISFkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKVxuICApO1xuXG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1phYWtMaW5rV2FybmluZzogYm9vbGVhbjtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgPSBmYWxzZTtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWQhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc0VkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY2NlcHRlZEZpbGVzOiBzdHJpbmcgfCBudWxsID1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVVcGxvYWRBY2NlcHRlZEZpbGVzIHx8IG51bGw7XG4gIHB1YmxpYyByZWFkb25seSBtYXhGaWxlU2l6ZTogbnVtYmVyID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VGaWxlU2l6ZVVwbG9hZExpbWl0TUIgfHwgNTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVRvQmVVcGxvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IG1vZGFsRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93TW9kYWwkID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dVcGxvYWRNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5faXRlbXNMb2FkaW5nJCwgdGhpcy5maWVsZHNMb2FkaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbaXRlbXNMb2FkaW5nLCBmaWVsZHNMb2FkaW5nXSkgPT4gaXRlbXNMb2FkaW5nIHx8IGZpZWxkc0xvYWRpbmcpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwgfCBudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb24+KERFRkFVTFRfUEFHSU5BVElPTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZmV0Y2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCQgPSBuZXcgUmVwbGF5U3ViamVjdDx7c29ydDogc3RyaW5nfSB8IG51bGw+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdGltb0VuZHBvaW50VXJpITogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0b3JDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IFs1LCAxMCwgMjAsIDUwLCAxMDBdLFxuICB9O1xuXG4gIHB1YmxpYyBnZXQgc29ydFN0YXRlJCgpOiBPYnNlcnZhYmxlPFNvcnRTdGF0ZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fc29ydCQucGlwZShtYXAoc29ydFZhbHVlID0+IHRoaXMuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoc29ydFZhbHVlPy5zb3J0KSkpO1xuICB9XG5cbiAgcHVibGljIHVwbG9hZEZpZWxkcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkcz4gPSB0aGlzLmRvY3VtZW50SWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50SWQgPT4gdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmdldFByZWZpbGxlZFVwbG9hZEZpZWxkcyhkb2N1bWVudElkKSksXG4gICAgbWFwKHVwbG9hZEZpZWxkcyA9PlxuICAgICAgdXBsb2FkRmllbGRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2N1cnIua2V5XToge1xuICAgICAgICAgICAga2V5OiBjdXJyLmtleSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogY3Vyci5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICB2aXNpYmxlOiBjdXJyLnZpc2libGUsXG4gICAgICAgICAgICByZWFkb25seTogY3Vyci5yZWFkb25seSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHVibGljIGRlZmF1bHRWYWx1ZXMkOiBPYnNlcnZhYmxlPERvY3VtZW50ZW5BcGlVcGxvYWRGaWVsZERlZmF1bHRWYWx1ZXM+ID1cbiAgICB0aGlzLnVwbG9hZEZpZWxkcyQucGlwZShcbiAgICAgIG1hcChmb3JtRmllbGRzID0+ICh7XG4gICAgICAgIGF1dGV1cjogZm9ybUZpZWxkcz8uYXV0ZXVyPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIHZlcnRyb3V3ZWxpamtoZWlkYWFuZHVpZGluZzogZm9ybUZpZWxkcz8udmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGJlc2NocmlqdmluZzogZm9ybUZpZWxkcz8uYmVzY2hyaWp2aW5nPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIHRpdGVsOiBmb3JtRmllbGRzPy50aXRlbD8uZGVmYXVsdFZhbHVlLFxuICAgICAgICBpbmZvcm1hdGllb2JqZWN0dHlwZTogZm9ybUZpZWxkcz8uaW5mb3JtYXRpZW9iamVjdHR5cGU/LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgYmVzdGFuZHNuYWFtOiBmb3JtRmllbGRzPy5iZXN0YW5kc25hYW0/LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdGFhbDogZm9ybUZpZWxkcz8udGFhbD8uZGVmYXVsdFZhbHVlLFxuICAgICAgICBzdGF0dXM6IGZvcm1GaWVsZHM/LnN0YXR1cz8uZGVmYXVsdFZhbHVlLFxuICAgICAgICB0cmVmd29vcmRlbjogZm9ybUZpZWxkcz8udHJlZndvb3JkZW4/LmRlZmF1bHRWYWx1ZVxuICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgID8ubWFwKHRhZyA9PiB0YWcudHJpbSgpKVxuICAgICAgICAgID8uZmlsdGVyKHRhZyA9PiAhIXRhZyksXG4gICAgICB9KSlcbiAgICApO1xuXG4gIHB1YmxpYyBoaWRlRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PiA9IHRoaXMudXBsb2FkRmllbGRzJC5waXBlKFxuICAgIG1hcChmb3JtRmllbGRzID0+IHtcbiAgICAgIGlmIChmb3JtRmllbGRzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtRmllbGRzKS5maWx0ZXIoZmllbGQgPT4gIWZvcm1GaWVsZHNbZmllbGRdPy52aXNpYmxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWxhdGVkRmlsZXMkOiBPYnNlcnZhYmxlPEFycmF5PERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudElkJCxcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAsXG4gICAgdGhpcy5fcmVmZXRjaCQsXG4gIF0pLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKChbZG9jdW1lbnRJZCwgcXVlcnlQYXJhbXNdKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS5nZXRGaWx0ZXJlZFpha2VuQXBpRG9jdW1lbnRzKFxuICAgICAgICAgIGRvY3VtZW50SWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXNbJ3BhcmFtcyddXG4gICAgICAgICksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3JlbGF0ZWRGaWxlc10pID0+IHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgY29sbGVjdGlvblNpemU6IHJlbGF0ZWRGaWxlcy50b3RhbEVsZW1lbnRzLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkRmlsZXMgPSByZWxhdGVkRmlsZXM/LmNvbnRlbnQ/Lm1hcChmaWxlID0+ICh7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGNyZWF0ZWRCeTogZmlsZS5jcmVhdGVkQnkgfHwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpc3QuYXV0b21hdGljYWxseUdlbmVyYXRlZCcpLFxuICAgICAgICBzaXplOiB0aGlzLmJ5dGVzVG9NZWdhYnl0ZXMoZmlsZS5iZXN0YW5kc29tdmFuZyksXG4gICAgICAgIHRhZ3M6IGZpbGUudHJlZndvb3JkZW4/Lm1hcCgodHJlZndvb3JkOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgY29udGVudDogdHJlZndvb3JkLFxuICAgICAgICB9KSksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZEZpbGVzIHx8IFtdO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93WmFha0xpbmtXYXJuaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuYWJsZVBiYWNEb2N1bWVudGVuQXBpRG9jdW1lbnRzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldEZlYXR1cmVUb2dnbGVPYnNlcnZhYmxlKCdlbmFibGVQYmFjRG9jdW1lbnRlbkFwaURvY3VtZW50cycpO1xuXG4gIHB1YmxpYyBmaWxlUGVybWlzc2lvbnM6IHtcbiAgICBbZmlsZUlkOiBzdHJpbmddOiB7Y2FuVmlldzogYm9vbGVhbjsgY2FuTW9kaWZ5OiBib29sZWFuOyBjYW5EZWxldGU6IGJvb2xlYW59O1xuICB9ID0ge307XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkNyZWF0ZVJlc291cmNlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnRJZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnRJZCA9PlxuICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKENBTl9DUkVBVEVfUkVTT1VSQ0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogUkVTT1VSQ0VfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IGRvY3VtZW50SWQsXG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cGxvYWRQcm92aWRlclNlcnZpY2U6IFVwbG9hZFByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvd25sb2FkU2VydmljZTogRG93bmxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZTogRG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlOiBEb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZTogRG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXIoRmlsdGVyMTYpO1xuICAgIHRoaXMudmFsdGltb0VuZHBvaW50VXJpID0gY29uZmlnU2VydmljZS5jb25maWcudmFsdGltb0FwaS5lbmRwb2ludFVyaTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxQYXJhbXMoKTtcbiAgICB0aGlzLnNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTtcbiAgICB0aGlzLmlzVXNlckFkbWluKCk7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbRmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2XSk7XG4gICAgdGhpcy5yZWdpc3RlclBlcm1pc3Npb25TdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJQZXJtaXNzaW9uU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucmVsYXRlZEZpbGVzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoZmlsZXMgPT5cbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICAgICAgICBmaWxlczogb2YoZmlsZXMpLFxuICAgICAgICAgICAgICBjYW5WaWV3OiB0aGlzLmdldFBlcm1pc3Npb25zKGZpbGVzLCBDQU5fVklFV19SRVNPVVJDRV9QRVJNSVNTSU9OKSxcbiAgICAgICAgICAgICAgY2FuTW9kaWZ5OiB0aGlzLmdldFBlcm1pc3Npb25zKGZpbGVzLCBDQU5fTU9ESUZZX1JFU09VUkNFX1BFUk1JU1NJT04pLFxuICAgICAgICAgICAgICBjYW5EZWxldGU6IHRoaXMuZ2V0UGVybWlzc2lvbnMoZmlsZXMsIENBTl9ERUxFVEVfUkVTT1VSQ0VfUEVSTUlTU0lPTiksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHBlcm1pc3Npb25zID0+XG4gICAgICAgICAgcGVybWlzc2lvbnMuZmlsZXMubWFwKFxuICAgICAgICAgICAgZmlsZSA9PlxuICAgICAgICAgICAgICAodGhpcy5maWxlUGVybWlzc2lvbnNbZmlsZS5maWxlSWRdID0ge1xuICAgICAgICAgICAgICAgIGNhblZpZXc6IHBlcm1pc3Npb25zLmNhblZpZXdbZmlsZS5maWxlSWRdLFxuICAgICAgICAgICAgICAgIGNhbk1vZGlmeTogcGVybWlzc2lvbnMuY2FuTW9kaWZ5W2ZpbGUuZmlsZUlkXSxcbiAgICAgICAgICAgICAgICBjYW5EZWxldGU6IHBlcm1pc3Npb25zLmNhbkRlbGV0ZVtmaWxlLmZpbGVJZF0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVBY3Rpb25DbGljayhpdGVtOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gaXRlbTtcbiAgICB0aGlzLnNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVEb2N1bWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KHRoaXMuZG9jdW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBieXRlc1RvTWVnYWJ5dGVzKGJ5dGVzOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghYnl0ZXMpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1lZ2FieXRlcyA9IGJ5dGVzIC8gKDEwMjQgKiAxMDI0KTtcbiAgICBpZiAobWVnYWJ5dGVzIDwgMSkge1xuICAgICAgcmV0dXJuIGAke01hdGguY2VpbChtZWdhYnl0ZXMgKiAxMDAwKX0gS0JgO1xuICAgIH0gZWxzZSBpZiAobWVnYWJ5dGVzIDwgMTAwMCkge1xuICAgICAgcmV0dXJuIG1lZ2FieXRlcy50b0ZpeGVkKDIpICsgJyBNQic7XG4gICAgfVxuXG4gICAgcmV0dXJuIChtZWdhYnl0ZXMgLyAxMDAwKS50b0ZpeGVkKDIpICsgJyBHQic7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkKSB7XG4gICAgICByZXR1cm4gJ1VwbG9hZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQWRtaW4pIHtcbiAgICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5hZG1pblJvbGUnO1xuICAgIH1cblxuICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5yZWd1bGFyVXNlcic7XG4gIH1cblxuICBwdWJsaWMgaXNVc2VyQWRtaW4oKSB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgICAuZ2V0VXNlclN1YmplY3QoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHVzZXJJZGVudGl0eSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0FkbWluID0gdXNlcklkZW50aXR5LnJvbGVzLmluY2x1ZGVzKCdST0xFX0FETUlOJyk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRhZGF0YVNldChtZXRhZGF0YTogRG9jdW1lbnRlbkFwaU1ldGFkYXRhKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLCB0aGlzLmRvY3VtZW50SWQkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbZmlsZSwgZG9jdW1lbnRJZF0pID0+IHtcbiAgICAgICAgICBpZiAoIWZpbGUpIHJldHVybjtcbiAgICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlJC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UudXBkYXRlRG9jdW1lbnQoZmlsZSwgbWV0YWRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZVxuICAgICAgICAgICAgICAudXBsb2FkRmlsZVdpdGhNZXRhZGF0YShmaWxlLCBkb2N1bWVudElkLCBtZXRhZGF0YSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KERFRkFVTFRfUEFHSU5BVElPTik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRG93bmxvYWRBY3Rpb25DbGljayhmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkRG9jdW1lbnQoZmlsZSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0TWV0YWRhdGEoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZmlsZSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VNZXRhZGF0YU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXRNb2RlJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlc2V0RmlsZUlucHV0KCk7XG4gIH1cblxuICBwdWJsaWMgb25OYXZpZ2F0ZVRvQ2FzZUFkbWluQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZVBlcm1pc3Npb25zW2V2ZW50LmZpbGVJZF0/LmNhblZpZXcpIHtcbiAgICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChldmVudCwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25DbGlja2VkKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCBwYWdlfSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmF0aW9uU2V0KHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHtjb2xsZWN0aW9uU2l6ZSwgcGFnZX0gPSB0aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCk7XG4gICAgY29uc3QgcmVzZXRQYWdlOiBib29sZWFuID0gTWF0aC5jZWlsKCtjb2xsZWN0aW9uU2l6ZSAvIHNpemUpIDw9ICtwYWdlICYmICtjb2xsZWN0aW9uU2l6ZSA+IDA7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHNpemUsIC4uLihyZXNldFBhZ2UgJiYge3BhZ2U6IDF9KX0pO1xuICB9XG5cbiAgcHVibGljIG9uVXBsb2FkQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyRXZlbnQoZmlsdGVyOiBEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXIkLm5leHQoZmlsdGVyKTtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgLi4uREVGQVVMVF9QQUdJTkFUSU9OfSk7XG4gIH1cblxuICBwdWJsaWMgb25Tb3J0Q2hhbmdlZChzb3J0U3RhdGU6IFNvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3NvcnQkLm5leHQoXG4gICAgICBzb3J0U3RhdGUuaXNTb3J0aW5nXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc29ydDogYCR7c29ydFN0YXRlLnN0YXRlLm5hbWUgPT09ICdzaXplJyA/IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQkVTVEFORFNPTVZBTkcgOiBzb3J0U3RhdGUuc3RhdGUubmFtZX0sJHtzb3J0U3RhdGUuc3RhdGUuZGlyZWN0aW9ufWAsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlZmV0Y2hEb2N1bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmZXRjaCQubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWREaXNhYmxlZChmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZmlsZVBlcm1pc3Npb25zW2ZpbGUuZmlsZUlkXT8uY2FuVmlldztcbiAgfVxuXG4gIHByaXZhdGUgZWRpdERpc2FibGVkKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAoIXRoaXMuc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJC52YWx1ZS5zdXBwb3J0c1VwZGF0aW5nRGVmaW5pdGl2ZURvY3VtZW50ICYmXG4gICAgICAgIGZpbGUuc3RhdHVzID09PSAnZGVmaW5pdGllZicpIHx8XG4gICAgICAhdGhpcy5maWxlUGVybWlzc2lvbnNbZmlsZS5maWxlSWRdPy5jYW5Nb2RpZnlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVEaXNhYmxlZChmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZmlsZVBlcm1pc3Npb25zW2ZpbGUuZmlsZUlkXT8uY2FuRGVsZXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZERvY3VtZW50KHJlbGF0ZWRGaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUsIGZvcmNlRG93bmxvYWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEZpbGUoXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9kb2N1bWVudGVuLWFwaS8ke3JlbGF0ZWRGaWxlLnBsdWdpbkNvbmZpZ3VyYXRpb25JZH0vZmlsZXMvJHtyZWxhdGVkRmlsZS5maWxlSWR9L2Rvd25sb2FkYCxcbiAgICAgIHJlbGF0ZWRGaWxlLmJlc3RhbmRzbmFhbSA/PyAnJyxcbiAgICAgIGZvcmNlRG93bmxvYWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICAgICAgdGhpcy5kb2N1bWVudElkJCxcbiAgICAgICAgdGhpcy5maWx0ZXIkLFxuICAgICAgICB0aGlzLl9zb3J0JCxcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW2RlZmluaXRpb25OYW1lLCBkb2N1bWVudElkLCBmaWx0ZXIsIHNvcnQsIHBhZ2luYXRpb25dKSA9PiB7XG4gICAgICAgIGNvbnN0IHtzaXplLCBwYWdlfSA9IHBhZ2luYXRpb247XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXJzLyR7ZGVmaW5pdGlvbk5hbWV9L2RvY3VtZW50LyR7ZG9jdW1lbnRJZH0vZG9jdW1lbnRzYF0sIHtcbiAgICAgICAgICBxdWVyeVBhcmFtczogey4uLmZpbHRlciwgLi4uc29ydCwgc2l6ZSwgcGFnZTogcGFnZSAtIDF9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcGxvYWRQcm9jZXNzTGlua2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgIHRoaXMudXBsb2FkUHJvdmlkZXJTZXJ2aWNlLmNoZWNrVXBsb2FkUHJvY2Vzc0xpbmsoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgPSB0cnVlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobGlua2VkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZCA9IGxpbmtlZDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsUGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3Qge3NvcnQsIHNpemUsIHBhZ2UsIC4uLmZpbHRlcn0gPSBxdWVyeVBhcmFtc1sncGFyYW1zJ107XG4gICAgICAgICAgcmV0dXJuIHtzb3J0LCBmaWx0ZXIsIHNpemUsIHBhZ2V9O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoe2ZpbHRlciwgc29ydCwgc2l6ZSwgcGFnZX0pID0+IHtcbiAgICAgICAgdGhpcy5fc29ydCQubmV4dCh7c29ydH0pO1xuICAgICAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgICBzaXplOiArc2l6ZSxcbiAgICAgICAgICBwYWdlOiArKHBhZ2UgPz8gMCkgKyAxLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTb3J0U3RhdGVGcm9tU29ydFN0cmluZyhzb3J0U3RyaW5nPzogc3RyaW5nKTogU29ydFN0YXRlIHwgbnVsbCB7XG4gICAgY29uc3Qgc3BsaXRTdHJpbmcgPSBzb3J0U3RyaW5nICYmIHNvcnRTdHJpbmcuc3BsaXQoJywnKTtcbiAgICBpZiAoc3BsaXRTdHJpbmcgJiYgc3BsaXRTdHJpbmc/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzU29ydGluZzogdHJ1ZSxcbiAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICBuYW1lOiBzcGxpdFN0cmluZ1swXSxcbiAgICAgICAgICBkaXJlY3Rpb246IHNwbGl0U3RyaW5nWzFdIGFzIERpcmVjdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFBlcm1pc3Npb25zKFxuICAgIGZpbGVzOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGVbXSxcbiAgICBwZXJtaXNzaW9uUmVxdWVzdDogUGVybWlzc2lvblJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTx7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgfT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgZmlsZXMubWFwKGZpbGUgPT5cbiAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKHBlcm1pc3Npb25SZXF1ZXN0LCB7XG4gICAgICAgICAgcmVzb3VyY2U6IFJFU09VUkNFX1BFUk1JU1NJT05fUkVTT1VSQ0UucmVzb3VyY2VQZXJtaXNzaW9uLFxuICAgICAgICAgIGlkZW50aWZpZXI6IGZpbGUuZmlsZUlkLFxuICAgICAgICB9KS5waXBlKG1hcChhdmFpbGFibGUgPT4gKHtbZmlsZS5maWxlSWRdOiBhdmFpbGFibGV9KSkpXG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgbWFwKHBlcm1pc3Npb25zID0+IHBlcm1pc3Npb25zLnJlZHVjZSgoYWNjLCBwZXJtaXNzaW9uKSA9PiAoey4uLmFjYywgLi4ucGVybWlzc2lvbn0pLCB7fSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVybWlzc2lvbihwZXJtaXNzaW9uUmVxdWVzdDogUGVybWlzc2lvblJlcXVlc3QsIGNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVQYmFjRG9jdW1lbnRlbkFwaURvY3VtZW50cyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChlbmFibGVkID0+IHtcbiAgICAgICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKHBlcm1pc3Npb25SZXF1ZXN0LCBjb250ZXh0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdlxuICBjbGFzcz1cImNhcmJvbi1kb2N1bWVudC10YWJsZS13cmFwcGVyXCJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICBmaWVsZHNMb2FkaW5nOiBmaWVsZHNMb2FkaW5nJCB8IGFzeW5jLFxuICAgIHVwbG9hZGluZzogdXBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIHJlbGF0ZWRGaWxlczogcmVsYXRlZEZpbGVzJCB8IGFzeW5jLFxuICAgIGZpZWxkczogZmllbGRzJCB8IGFzeW5jLFxuICAgIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlczogc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24kIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGUkIHwgYXN5bmMsXG4gICAgdXBsb2FkRmllbGRzOiB1cGxvYWRGaWVsZHMkIHwgYXN5bmMsXG4gICAgZGVmYXVsdFZhbHVlczogZGVmYXVsdFZhbHVlcyQgfCBhc3luYyxcbiAgICBoaWRlRmllbGRzOiBoaWRlRmllbGRzJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIEBpZiAoKCFvYnMuZmllbGRzTG9hZGluZyAmJiBvYnMuZmllbGRzLmxlbmd0aCkgfHwgb2JzLmZpZWxkc0xvYWRpbmcpIHtcbiAgICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgICAgW2FjdGlvbkl0ZW1zXT1cImFjdGlvbkl0ZW1zXCJcbiAgICAgIFtpdGVtc109XCJvYnMucmVsYXRlZEZpbGVzXCJcbiAgICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgICBbaW5pdGlhbFNvcnRTdGF0ZV09XCJvYnMuc29ydFN0YXRlXCJcbiAgICAgIFtsb2FkaW5nXT1cIm9icy5sb2FkaW5nXCJcbiAgICAgIFtwYWdpbmF0aW9uXT1cIm9icy5wYWdpbmF0aW9uXCJcbiAgICAgIFtwYWdpbmF0b3JDb25maWddPVwicGFnaW5hdG9yQ29uZmlnXCJcbiAgICAgIHBhZ2luYXRpb25JZGVudGlmaWVyPVwiZG9jdW1lbnRlbkFwaVwiXG4gICAgICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIlxuICAgICAgICBvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMgJiYgb25Tb3J0Q2hhbmdlZCgkZXZlbnQpXG4gICAgICBcIlxuICAgICAgKHBhZ2luYXRpb25DbGlja2VkKT1cIm9uUGFnaW5hdGlvbkNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAocGFnaW5hdGlvblNldCk9XCJvblBhZ2luYXRpb25TZXQoJGV2ZW50KVwiXG4gICAgICBoaWRlQ29sdW1uSGVhZGVyXG4gICAgPlxuICAgICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIGhpZGRlblxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwib2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzRmlsdGVyYWJsZUNvbHVtbnNcIlxuICAgICAgICAgIFtjZHNPdmVyZmxvd01lbnVdPVwib3ZlcmZsb3dGaWx0ZXJcIlxuICAgICAgICAgIFtjdXN0b21QYW5lXT1cInRydWVcIlxuICAgICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgICBbZmxpcF09XCJ0cnVlXCJcbiAgICAgICAgICBbb2Zmc2V0XT1cInt4OiAwLCB5OiA0N31cIlxuICAgICAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImZpbHRlclwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUmVzdWx0c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvdmFsdGltby1jYXJib24tbGlzdD5cbiAgfSBAZWxzZSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInemd3LmRvY3VtZW50cy5ub0NvbHVtbnMuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInemd3LmRvY3VtZW50cy5ub0NvbHVtbnMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH1cblxuICA8dmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbFxuICAgIFtkZWZhdWx0VmFsdWVzXT1cIm9icy5kZWZhdWx0VmFsdWVzXCJcbiAgICBbZGlzYWJsZUF1dGhvcl09XCJvYnMudXBsb2FkRmllbGRzPy5hdXRldXI/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZUNvbmZpZGVudGlhbGl0eUxldmVsXT1cIm9icy51cGxvYWRGaWVsZHM/LnZlcnRyb3V3ZWxpamtoZWlkYWFuZHVpZGluZz8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlQ3JlYXRpb25EYXRlXT1cIm9icy51cGxvYWRGaWVsZHM/LmNyZWF0aWVkYXR1bT8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlRGVzY3JpcHRpb25dPVwib2JzLnVwbG9hZEZpZWxkcz8uYmVzY2hyaWp2aW5nPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVEb2N1bWVudFRpdGxlXT1cIm9icy51cGxvYWRGaWVsZHM/LnRpdGVsPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVEb2N1bWVudFR5cGVdPVwib2JzLnVwbG9hZEZpZWxkcz8uaW5mb3JtYXRpZW9iamVjdHR5cGU/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZUZpbGVuYW1lXT1cIm9icy51cGxvYWRGaWVsZHM/LmJlc3RhbmRzbmFhbT8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlTGFuZ3VhZ2VdPVwib2JzLnVwbG9hZEZpZWxkcz8udGFhbD8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlU3RhdHVzXT1cIm9icy51cGxvYWRGaWVsZHM/LnN0YXR1cz8ucmVhZG9ubHlcIlxuICAgIFtoaWRlRmllbGRzXT1cIm9icy5oaWRlRmllbGRzXCJcbiAgICBbb3Blbl09XCJzaG93VXBsb2FkTW9kYWwkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZCRdPVwibW9kYWxEaXNhYmxlZCRcIlxuICAgIFtmaWxlJF09XCJmaWxlVG9CZVVwbG9hZGVkJFwiXG4gICAgW2lzRWRpdE1vZGVdPVwiaXNFZGl0TW9kZSQgfCBhc3luY1wiXG4gICAgW3N1cHBvcnRzVHJlZndvb3JkZW5dPVwib2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzVHJlZndvb3JkZW5cIlxuICAgIChtb2RhbENsb3NlKT1cImNsb3NlTWV0YWRhdGFNb2RhbCgpXCJcbiAgICAobWV0YWRhdGEpPVwibWV0YWRhdGFTZXQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWw+XG48L2Rpdj5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkYXNoYm9hcmRNYW5hZ2VtZW50LmRlbGV0ZU1vZGFsLmNvbmZpcm1cIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRvY3VtZW50ZW4uZGVsZXRlQ29uZmlybWF0aW9uTW9kYWwuY29udGVudFwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC50aXRsZVwiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlQ29uZmlybWF0aW9uTW9kYWwkXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJkZWxldGVEb2N1bWVudCgpXCJcbj5cbjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjbm9SZXN1bHRzPlxuICBAaWYgKChmaWx0ZXIkIHwgYXN5bmMgfCBrZXl2YWx1ZSk/Lmxlbmd0aCkge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwicmVzZXRGaWx0ZXJCdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfSBAZWxzZSBpZiAoc2hvd1phYWtMaW5rV2FybmluZyAmJiBpc0FkbWluKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1phYWtGb3VuZFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cInVwbG9hZEJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmZsb3dGaWx0ZXI+XG4gIDx2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXJcbiAgICBbcHJlZmlsbEZpbHRlcl09XCJmaWx0ZXIkIHwgYXN5bmNcIlxuICAgIChmaWx0ZXJFdmVudCk9XCJvbkZpbHRlckV2ZW50KCRldmVudClcIlxuICA+PC92YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0RmlsdGVyQnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib25GaWx0ZXJFdmVudChudWxsKVwiPlxuICAgIHt7ICdSZXNldCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRCdXR0b24gbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICh1cGxvYWRQcm9jZXNzTGlua2VkU2V0ICYmICF1cGxvYWRQcm9jZXNzTGlua2VkKSB8fFxuICAgICAgc2hvd1phYWtMaW5rV2FybmluZyB8fFxuICAgICAgZGlzYWJsZWQgfHxcbiAgICAgIChjYW5DcmVhdGVSZXNvdXJjZSQgfCBhc3luYykgPT09IGZhbHNlXG4gICAgXCJcbiAgICBbdlRvb2x0aXBdPVwiZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcbiAgICAoY2xpY2spPVwib25VcGxvYWRCdXR0b25DbGljaygpXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgPlxuICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInVwbG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJhbnNsYXRpb25UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgQGlmIChkYXRhLml0ZW1bZGF0YS5rZXldKSB7XG4gICAge3sgJ2RvY3VtZW50LicgKyBkYXRhLml0ZW1bZGF0YS5rZXldIHwgdHJhbnNsYXRlIH19XG4gIH0gQGVsc2Uge1xuICAgIC1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpXCIgY2RzQnV0dG9uPVwicHJpbWFyeVwiPlxuICAgIHt7ICdkb3NzaWVyLmRvY3VtZW50ZW4ubmF2aWdhdGVUb0Nhc2VBZG1pbicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzZXR0aW5nc1wiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBRTVCLDRCQUE0QixHQUU3QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYyxNQUFNLDJCQUEyQixDQUFD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NEJBQTRCO3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K2JBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICBEb2N1bWVudGVuQXBpTWV0YWRhdGEsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnRTdGF0ZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBEaXJlY3Rpb259IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDQU5fQ1JFQVRFX1JFU09VUkNFX1BFUk1JU1NJT04sXG4gIENBTl9ERUxFVEVfUkVTT1VSQ0VfUEVSTUlTU0lPTixcbiAgQ0FOX01PRElGWV9SRVNPVVJDRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19SRVNPVVJDRV9QRVJNSVNTSU9OLFxuICBEb3dubG9hZFNlcnZpY2UsXG4gIFJFU09VUkNFX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG4gIFVwbG9hZFByb3ZpZGVyU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vcmVzb3VyY2UnO1xuaW1wb3J0IHtVc2VyUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZSwgRGlhbG9nTW9kdWxlLCBJY29uTW9kdWxlLCBJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENPTFVNTl9WSUVXX1RZUEVTLFxuICBDb25maWd1cmVkQ29sdW1uLFxuICBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLFxuICBEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwsXG4gIERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSxcbiAgU3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZSwgRG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi9kb2N1bWVudGVuLWFwaS1maWx0ZXIvZG9jdW1lbnRlbi1hcGktZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkRGVmYXVsdFZhbHVlcyxcbiAgRG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkcyxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2RvY3VtZW50ZW4tYXBpLXVwbG9hZC1maWVsZC5tb2RlbCc7XG5pbXBvcnQge1Blcm1pc3Npb25SZXF1ZXN0LCBQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpTWV0YWRhdGFNb2RhbENvbXBvbmVudCxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudCxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxUYWJEb2N1bWVudGVuQXBpRG9jdW1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RyYW5zbGF0aW9uVGVtcGxhdGUnKSB0cmFuc2xhdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGNhc2VEZWZpbml0aW9uTmFtZSA9PiAhIWNhc2VEZWZpbml0aW9uTmFtZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkOiBPYnNlcnZhYmxlPFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz4gPVxuICAgIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLmdldFN1cHBvcnRlZEFwaUZlYXR1cmVzKGNhc2VEZWZpbml0aW9uTmFtZSlcbiAgICAgICksXG4gICAgICB0YXAoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzID0+XG4gICAgICAgIHRoaXMuc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJC5uZXh0KHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcylcbiAgICAgIClcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWVsZHMkOiBPYnNlcnZhYmxlPENvbHVtbkNvbmZpZ1tdPiA9IHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMuZmllbGRzTG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLmdldENvbmZpZ3VyZWRDb2x1bW5zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgICAgICB0aGlzLl9zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLFxuICAgICAgICB0aGlzLl9zb3J0JCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtjb2x1bW5zLCBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsIHNvcnRdKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0U29ydENvbHVtbjogQ29uZmlndXJlZENvbHVtbiB8IHVuZGVmaW5lZCA9IGNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbHVtbjogQ29uZmlndXJlZENvbHVtbikgPT4gISFjb2x1bW4uZGVmYXVsdFNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgICEhZGVmYXVsdFNvcnRDb2x1bW4gJiZcbiAgICAgICAgIXNvcnQ/LnNvcnQgJiZcbiAgICAgICAgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5fc29ydCQubmV4dCh7c29ydDogYCR7ZGVmYXVsdFNvcnRDb2x1bW4ua2V5fSwke2RlZmF1bHRTb3J0Q29sdW1uLmRlZmF1bHRTb3J0fWB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4pID0+ICh7XG4gICAgICAgIGtleTogY29sdW1uLmtleSA9PT0gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA/ICdzaXplJyA6IGNvbHVtbi5rZXksXG4gICAgICAgIGxhYmVsOiBgemd3LmRvY3VtZW50Q29sdW1ucy4ke2NvbHVtbi5rZXl9YCxcbiAgICAgICAgdmlld1R5cGU6ICFDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSA/IFZpZXdUeXBlLlRFWFQgOiBDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSxcbiAgICAgICAgLi4uKENPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldID09PSBWaWV3VHlwZS5URU1QTEFURSAmJiB7XG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMudHJhbnNsYXRpb25UZW1wbGF0ZSxcbiAgICAgICAgICB0ZW1wbGF0ZURhdGE6IHtrZXk6IGNvbHVtbi5rZXl9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKGNvbHVtbi5rZXkgPT09IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQ1JFQVRJRURBVFVNICYmIHtmb3JtYXQ6ICdERC1NTS1ZWVlZJ30pLFxuICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlICYmIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyxcbiAgICAgIH0pKTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KGZhbHNlKSlcbiAgKTtcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGU7XG4gIHB1YmxpYyBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZG93bmxvYWQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25Eb3dubG9hZEFjdGlvbkNsaWNrLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmRvd25sb2FkRGlzYWJsZWQuYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdub3JtYWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdkb2N1bWVudC5lZGl0JyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRWRpdE1ldGFkYXRhLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmVkaXREaXNhYmxlZC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRlbGV0ZScsXG4gICAgICBjYWxsYmFjazogdGhpcy5vbkRlbGV0ZUFjdGlvbkNsaWNrLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmRlbGV0ZURpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gISFkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKVxuICApO1xuXG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1phYWtMaW5rV2FybmluZzogYm9vbGVhbjtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgPSBmYWxzZTtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWQhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc0VkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY2NlcHRlZEZpbGVzOiBzdHJpbmcgfCBudWxsID1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVVcGxvYWRBY2NlcHRlZEZpbGVzIHx8IG51bGw7XG4gIHB1YmxpYyByZWFkb25seSBtYXhGaWxlU2l6ZTogbnVtYmVyID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VGaWxlU2l6ZVVwbG9hZExpbWl0TUIgfHwgNTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVRvQmVVcGxvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IG1vZGFsRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93TW9kYWwkID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dVcGxvYWRNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5faXRlbXNMb2FkaW5nJCwgdGhpcy5maWVsZHNMb2FkaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbaXRlbXNMb2FkaW5nLCBmaWVsZHNMb2FkaW5nXSkgPT4gaXRlbXNMb2FkaW5nIHx8IGZpZWxkc0xvYWRpbmcpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwgfCBudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb24+KERFRkFVTFRfUEFHSU5BVElPTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZmV0Y2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCQgPSBuZXcgUmVwbGF5U3ViamVjdDx7c29ydDogc3RyaW5nfSB8IG51bGw+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdGltb0VuZHBvaW50VXJpITogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0b3JDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IFs1LCAxMCwgMjAsIDUwLCAxMDBdLFxuICB9O1xuXG4gIHB1YmxpYyBzb3J0U3RhdGUkOiBPYnNlcnZhYmxlPFNvcnRTdGF0ZSB8IG51bGw+ID0gdGhpcy5fc29ydCQucGlwZShcbiAgICBmaWx0ZXIoc29ydFZhbHVlID0+ICEhc29ydFZhbHVlPy5zb3J0KSxcbiAgICBtYXAoc29ydFZhbHVlID0+IHRoaXMuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoc29ydFZhbHVlPy5zb3J0KSlcbiAgKTtcblxuICBwdWJsaWMgdXBsb2FkRmllbGRzJDogT2JzZXJ2YWJsZTxEb2N1bWVudGVuQXBpVXBsb2FkRmllbGRzPiA9IHRoaXMuZG9jdW1lbnRJZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnRJZCA9PiB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZ2V0UHJlZmlsbGVkVXBsb2FkRmllbGRzKGRvY3VtZW50SWQpKSxcbiAgICBtYXAodXBsb2FkRmllbGRzID0+XG4gICAgICB1cGxvYWRGaWVsZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBjdXJyKSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbY3Vyci5rZXldOiB7XG4gICAgICAgICAgICBrZXk6IGN1cnIua2V5LFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBjdXJyLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgIHZpc2libGU6IGN1cnIudmlzaWJsZSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiBjdXJyLnJlYWRvbmx5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgZGVmYXVsdFZhbHVlcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkRGVmYXVsdFZhbHVlcz4gPVxuICAgIHRoaXMudXBsb2FkRmllbGRzJC5waXBlKFxuICAgICAgbWFwKGZvcm1GaWVsZHMgPT4gKHtcbiAgICAgICAgYXV0ZXVyOiBmb3JtRmllbGRzPy5hdXRldXI/LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nOiBmb3JtRmllbGRzPy52ZXJ0cm91d2VsaWpraGVpZGFhbmR1aWRpbmc/LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgYmVzY2hyaWp2aW5nOiBmb3JtRmllbGRzPy5iZXNjaHJpanZpbmc/LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdGl0ZWw6IGZvcm1GaWVsZHM/LnRpdGVsPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGluZm9ybWF0aWVvYmplY3R0eXBlOiBmb3JtRmllbGRzPy5pbmZvcm1hdGllb2JqZWN0dHlwZT8uZGVmYXVsdFZhbHVlLFxuICAgICAgICBiZXN0YW5kc25hYW06IGZvcm1GaWVsZHM/LmJlc3RhbmRzbmFhbT8uZGVmYXVsdFZhbHVlLFxuICAgICAgICB0YWFsOiBmb3JtRmllbGRzPy50YWFsPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIHN0YXR1czogZm9ybUZpZWxkcz8uc3RhdHVzPy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIHRyZWZ3b29yZGVuOiBmb3JtRmllbGRzPy50cmVmd29vcmRlbj8uZGVmYXVsdFZhbHVlXG4gICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgPy5tYXAodGFnID0+IHRhZy50cmltKCkpXG4gICAgICAgICAgPy5maWx0ZXIodGFnID0+ICEhdGFnKSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgcHVibGljIGhpZGVGaWVsZHMkOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+ID0gdGhpcy51cGxvYWRGaWVsZHMkLnBpcGUoXG4gICAgbWFwKGZvcm1GaWVsZHMgPT4ge1xuICAgICAgaWYgKGZvcm1GaWVsZHMpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcm1GaWVsZHMpLmZpbHRlcihmaWVsZCA9PiAhZm9ybUZpZWxkc1tmaWVsZF0/LnZpc2libGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlbGF0ZWRGaWxlcyQ6IE9ic2VydmFibGU8QXJyYXk8RG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcCxcbiAgICB0aGlzLl9yZWZldGNoJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudElkLCBxdWVyeVBhcmFtc10pID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmdldEZpbHRlcmVkWmFrZW5BcGlEb2N1bWVudHMoXG4gICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICBxdWVyeVBhcmFtc1sncGFyYW1zJ11cbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbcmVsYXRlZEZpbGVzXSkgPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICBjb2xsZWN0aW9uU2l6ZTogcmVsYXRlZEZpbGVzLnRvdGFsRWxlbWVudHMsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRGaWxlcyA9IHJlbGF0ZWRGaWxlcz8uY29udGVudD8ubWFwKGZpbGUgPT4gKHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgY3JlYXRlZEJ5OiBmaWxlLmNyZWF0ZWRCeSB8fCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbGlzdC5hdXRvbWF0aWNhbGx5R2VuZXJhdGVkJyksXG4gICAgICAgIHNpemU6IHRoaXMuYnl0ZXNUb01lZ2FieXRlcyhmaWxlLmJlc3RhbmRzb212YW5nKSxcbiAgICAgICAgdGFnczogZmlsZS50cmVmd29vcmRlbj8ubWFwKCh0cmVmd29vcmQ6IHN0cmluZykgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiB0cmVmd29vcmQsXG4gICAgICAgIH0pKSxcbiAgICAgIH0pKTtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVkRmlsZXMgfHwgW107XG4gICAgfSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfSksXG4gICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICB0aGlzLnNob3daYWFrTGlua1dhcm5pbmcgPSB0cnVlO1xuICAgICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlUGJhY0RvY3VtZW50ZW5BcGlEb2N1bWVudHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0RmVhdHVyZVRvZ2dsZU9ic2VydmFibGUoJ2VuYWJsZVBiYWNEb2N1bWVudGVuQXBpRG9jdW1lbnRzJyk7XG5cbiAgcHVibGljIGZpbGVQZXJtaXNzaW9uczoge1xuICAgIFtmaWxlSWQ6IHN0cmluZ106IHtjYW5WaWV3OiBib29sZWFuOyBjYW5Nb2RpZnk6IGJvb2xlYW47IGNhbkRlbGV0ZTogYm9vbGVhbn07XG4gIH0gPSB7fTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuQ3JlYXRlUmVzb3VyY2UkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5kb2N1bWVudElkJC5waXBlKFxuICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+XG4gICAgICB0aGlzLmdldFBlcm1pc3Npb24oQ0FOX0NSRUFURV9SRVNPVVJDRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBSRVNPVVJDRV9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogZG9jdW1lbnRJZCxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZFByb3ZpZGVyU2VydmljZTogVXBsb2FkUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2U6IERvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlOiBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlcihGaWx0ZXIxNik7XG4gICAgdGhpcy52YWx0aW1vRW5kcG9pbnRVcmkgPSBjb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbFBhcmFtcygpO1xuICAgIHRoaXMuc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpO1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtGaWx0ZXIxNiwgVGFnR3JvdXAxNiwgVXBsb2FkMTZdKTtcbiAgICB0aGlzLnJlZ2lzdGVyUGVybWlzc2lvblN1YnNjcmlwdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclBlcm1pc3Npb25TdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5yZWxhdGVkRmlsZXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChmaWxlcyA9PlxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICAgIGZpbGVzOiBvZihmaWxlcyksXG4gICAgICAgICAgICAgIGNhblZpZXc6IHRoaXMuZ2V0UGVybWlzc2lvbnMoZmlsZXMsIENBTl9WSUVXX1JFU09VUkNFX1BFUk1JU1NJT04pLFxuICAgICAgICAgICAgICBjYW5Nb2RpZnk6IHRoaXMuZ2V0UGVybWlzc2lvbnMoZmlsZXMsIENBTl9NT0RJRllfUkVTT1VSQ0VfUEVSTUlTU0lPTiksXG4gICAgICAgICAgICAgIGNhbkRlbGV0ZTogdGhpcy5nZXRQZXJtaXNzaW9ucyhmaWxlcywgQ0FOX0RFTEVURV9SRVNPVVJDRV9QRVJNSVNTSU9OKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocGVybWlzc2lvbnMgPT5cbiAgICAgICAgICBwZXJtaXNzaW9ucy5maWxlcy5tYXAoXG4gICAgICAgICAgICBmaWxlID0+XG4gICAgICAgICAgICAgICh0aGlzLmZpbGVQZXJtaXNzaW9uc1tmaWxlLmZpbGVJZF0gPSB7XG4gICAgICAgICAgICAgICAgY2FuVmlldzogcGVybWlzc2lvbnMuY2FuVmlld1tmaWxlLmZpbGVJZF0sXG4gICAgICAgICAgICAgICAgY2FuTW9kaWZ5OiBwZXJtaXNzaW9ucy5jYW5Nb2RpZnlbZmlsZS5maWxlSWRdLFxuICAgICAgICAgICAgICAgIGNhbkRlbGV0ZTogcGVybWlzc2lvbnMuY2FuRGVsZXRlW2ZpbGUuZmlsZUlkXSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUFjdGlvbkNsaWNrKGl0ZW06IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBpdGVtO1xuICAgIHRoaXMuc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZURvY3VtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZGVsZXRlRG9jdW1lbnQodGhpcy5kb2N1bWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGJ5dGVzVG9NZWdhYnl0ZXMoYnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFieXRlcykgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgbWVnYWJ5dGVzID0gYnl0ZXMgLyAoMTAyNCAqIDEwMjQpO1xuICAgIGlmIChtZWdhYnl0ZXMgPCAxKSB7XG4gICAgICByZXR1cm4gYCR7TWF0aC5jZWlsKG1lZ2FieXRlcyAqIDEwMDApfSBLQmA7XG4gICAgfSBlbHNlIGlmIChtZWdhYnl0ZXMgPCAxMDAwKSB7XG4gICAgICByZXR1cm4gbWVnYWJ5dGVzLnRvRml4ZWQoMikgKyAnIE1CJztcbiAgICB9XG5cbiAgICByZXR1cm4gKG1lZ2FieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEdCJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGxvYWRCdXR0b25Ub29sdGlwKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCAmJiB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQpIHtcbiAgICAgIHJldHVybiAnVXBsb2FkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNBZG1pbikge1xuICAgICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLmFkbWluUm9sZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLnJlZ3VsYXJVc2VyJztcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2VcbiAgICAgIC5nZXRVc2VyU3ViamVjdCgpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgdXNlcklkZW50aXR5ID0+IHtcbiAgICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG1ldGFkYXRhU2V0KG1ldGFkYXRhOiBEb2N1bWVudGVuQXBpTWV0YWRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZmlsZVRvQmVVcGxvYWRlZCQsIHRoaXMuZG9jdW1lbnRJZCRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtmaWxlLCBkb2N1bWVudElkXSkgPT4ge1xuICAgICAgICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS51cGRhdGVEb2N1bWVudChmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvdmlkZXJTZXJ2aWNlXG4gICAgICAgICAgICAgIC51cGxvYWRGaWxlV2l0aE1ldGFkYXRhKGZpbGUsIGRvY3VtZW50SWQsIG1ldGFkYXRhKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlciQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoREVGQVVMVF9QQUdJTkFUSU9OKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25Eb3dubG9hZEFjdGlvbkNsaWNrKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChmaWxlLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRNZXRhZGF0YShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXRNb2RlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChmaWxlKTtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1ldGFkYXRhTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdE1vZGUkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChldmVudC50YXJnZXQuZmlsZXNbMF0pO1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KHRydWUpO1xuICAgIHRoaXMucmVzZXRGaWxlSW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llci1tYW5hZ2VtZW50L2Rvc3NpZXIvJHtkb2N1bWVudERlZmluaXRpb25OYW1lfWBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlUGVybWlzc2lvbnNbZXZlbnQuZmlsZUlkXT8uY2FuVmlldykge1xuICAgICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGV2ZW50LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHBhZ2V9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25TZXQoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qge2NvbGxlY3Rpb25TaXplLCBwYWdlfSA9IHRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCByZXNldFBhZ2U6IGJvb2xlYW4gPSBNYXRoLmNlaWwoK2NvbGxlY3Rpb25TaXplIC8gc2l6ZSkgPD0gK3BhZ2UgJiYgK2NvbGxlY3Rpb25TaXplID4gMDtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgc2l6ZSwgLi4uKHJlc2V0UGFnZSAmJiB7cGFnZTogMX0pfSk7XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25GaWx0ZXJFdmVudChmaWx0ZXI6IERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCAuLi5ERUZBVUxUX1BBR0lOQVRJT059KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvcnRDaGFuZ2VkKHNvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc29ydCQubmV4dChcbiAgICAgIHNvcnRTdGF0ZS5pc1NvcnRpbmdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzb3J0OiBgJHtzb3J0U3RhdGUuc3RhdGUubmFtZSA9PT0gJ3NpemUnID8gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA6IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lfSwke3NvcnRTdGF0ZS5zdGF0ZS5kaXJlY3Rpb259YCxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVmZXRjaERvY3VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZERpc2FibGVkKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5maWxlUGVybWlzc2lvbnNbZmlsZS5maWxlSWRdPy5jYW5WaWV3O1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0RGlzYWJsZWQoZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICghdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLnZhbHVlLnN1cHBvcnRzVXBkYXRpbmdEZWZpbml0aXZlRG9jdW1lbnQgJiZcbiAgICAgICAgZmlsZS5zdGF0dXMgPT09ICdkZWZpbml0aWVmJykgfHxcbiAgICAgICF0aGlzLmZpbGVQZXJtaXNzaW9uc1tmaWxlLmZpbGVJZF0/LmNhbk1vZGlmeVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZURpc2FibGVkKGZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5maWxlUGVybWlzc2lvbnNbZmlsZS5maWxlSWRdPy5jYW5EZWxldGU7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRG9jdW1lbnQocmVsYXRlZEZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSwgZm9yY2VEb3dubG9hZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkRmlsZShcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL2RvY3VtZW50ZW4tYXBpLyR7cmVsYXRlZEZpbGUucGx1Z2luQ29uZmlndXJhdGlvbklkfS9maWxlcy8ke3JlbGF0ZWRGaWxlLmZpbGVJZH0vZG93bmxvYWRgLFxuICAgICAgcmVsYXRlZEZpbGUuYmVzdGFuZHNuYWFtID8/ICcnLFxuICAgICAgZm9yY2VEb3dubG9hZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLFxuICAgICAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgICAgICB0aGlzLmZpbHRlciQsXG4gICAgICAgIHRoaXMuX3NvcnQkLFxuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLFxuICAgICAgXSkuc3Vic2NyaWJlKChbZGVmaW5pdGlvbk5hbWUsIGRvY3VtZW50SWQsIGZpbHRlciwgc29ydCwgcGFnaW5hdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3Qge3NpemUsIHBhZ2V9ID0gcGFnaW5hdGlvbjtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llcnMvJHtkZWZpbml0aW9uTmFtZX0vZG9jdW1lbnQvJHtkb2N1bWVudElkfS9kb2N1bWVudHNgXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4uZmlsdGVyLCAuLi5zb3J0LCBzaXplLCBwYWdlOiBwYWdlIC0gMX0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIHNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2UuY2hlY2tVcGxvYWRQcm9jZXNzTGluayhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICApLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChsaW5rZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkID0gbGlua2VkO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKHF1ZXJ5UGFyYW1zID0+IHtcbiAgICAgICAgICBjb25zdCB7c29ydCwgc2l6ZSwgcGFnZSwgLi4uZmlsdGVyfSA9IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICByZXR1cm4ge3NvcnQsIGZpbHRlciwgc2l6ZSwgcGFnZX07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7ZmlsdGVyLCBzb3J0LCBzaXplLCBwYWdlfSkgPT4ge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0fSk7XG4gICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHNpemU6ICtzaXplLFxuICAgICAgICAgIHBhZ2U6ICsocGFnZSA/PyAwKSArIDEsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNvcnRTdGF0ZUZyb21Tb3J0U3RyaW5nKHNvcnRTdHJpbmc/OiBzdHJpbmcpOiBTb3J0U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBzcGxpdFN0cmluZyA9IHNvcnRTdHJpbmcgJiYgc29ydFN0cmluZy5zcGxpdCgnLCcpO1xuICAgIGlmIChzcGxpdFN0cmluZyAmJiBzcGxpdFN0cmluZz8ubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNTb3J0aW5nOiB0cnVlLFxuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIG5hbWU6IHNwbGl0U3RyaW5nWzBdLFxuICAgICAgICAgIGRpcmVjdGlvbjogc3BsaXRTdHJpbmdbMV0gYXMgRGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVybWlzc2lvbnMoXG4gICAgZmlsZXM6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZVtdLFxuICAgIHBlcm1pc3Npb25SZXF1ZXN0OiBQZXJtaXNzaW9uUmVxdWVzdFxuICApOiBPYnNlcnZhYmxlPHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9PiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICBmaWxlcy5tYXAoZmlsZSA9PlxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QsIHtcbiAgICAgICAgICByZXNvdXJjZTogUkVTT1VSQ0VfUEVSTUlTU0lPTl9SRVNPVVJDRS5yZXNvdXJjZVBlcm1pc3Npb24sXG4gICAgICAgICAgaWRlbnRpZmllcjogZmlsZS5maWxlSWQsXG4gICAgICAgIH0pLnBpcGUobWFwKGF2YWlsYWJsZSA9PiAoe1tmaWxlLmZpbGVJZF06IGF2YWlsYWJsZX0pKSlcbiAgICAgIClcbiAgICApLnBpcGUoXG4gICAgICBtYXAocGVybWlzc2lvbnMgPT4gcGVybWlzc2lvbnMucmVkdWNlKChhY2MsIHBlcm1pc3Npb24pID0+ICh7Li4uYWNjLCAuLi5wZXJtaXNzaW9ufSksIHt9KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQZXJtaXNzaW9uKHBlcm1pc3Npb25SZXF1ZXN0OiBQZXJtaXNzaW9uUmVxdWVzdCwgY29udGV4dD86IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZVBiYWNEb2N1bWVudGVuQXBpRG9jdW1lbnRzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGVuYWJsZWQgPT4ge1xuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24ocGVybWlzc2lvblJlcXVlc3QsIGNvbnRleHQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2XG4gIGNsYXNzPVwiY2FyYm9uLWRvY3VtZW50LXRhYmxlLXdyYXBwZXJcIlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIGZpZWxkc0xvYWRpbmc6IGZpZWxkc0xvYWRpbmckIHwgYXN5bmMsXG4gICAgdXBsb2FkaW5nOiB1cGxvYWRpbmckIHwgYXN5bmMsXG4gICAgcmVsYXRlZEZpbGVzOiByZWxhdGVkRmlsZXMkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzOiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkIHwgYXN5bmMsXG4gICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiQgfCBhc3luYyxcbiAgICBzb3J0U3RhdGU6IHNvcnRTdGF0ZSQgfCBhc3luYyxcbiAgICB1cGxvYWRGaWVsZHM6IHVwbG9hZEZpZWxkcyQgfCBhc3luYyxcbiAgICBkZWZhdWx0VmFsdWVzOiBkZWZhdWx0VmFsdWVzJCB8IGFzeW5jLFxuICAgIGhpZGVGaWVsZHM6IGhpZGVGaWVsZHMkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgQGlmICgoIW9icy5maWVsZHNMb2FkaW5nICYmIG9icy5maWVsZHMubGVuZ3RoKSB8fCBvYnMuZmllbGRzTG9hZGluZykge1xuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cIm9icy5yZWxhdGVkRmlsZXNcIlxuICAgICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICAgIFtpbml0aWFsU29ydFN0YXRlXT1cIm9icy5zb3J0U3RhdGVcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxuICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb2N1bWVudGVuQXBpXCJcbiAgICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAoc29ydENoYW5nZWQpPVwiXG4gICAgICAgIG9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyAmJiBvblNvcnRDaGFuZ2VkKCRldmVudClcbiAgICAgIFwiXG4gICAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwib25QYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgIChwYWdpbmF0aW9uU2V0KT1cIm9uUGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAgIGhpZGVDb2x1bW5IZWFkZXJcbiAgICA+XG4gICAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNGaWx0ZXJhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJvdmVyZmxvd0ZpbHRlclwiXG4gICAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgIFtmbGlwXT1cInRydWVcIlxuICAgICAgICAgIFtvZmZzZXRdPVwie3g6IDAsIHk6IDQ3fVwiXG4gICAgICAgICAgY2RzQnV0dG9uPVwiZ2hvc3RcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZmlsdGVyXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuXG4gIDx2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsXG4gICAgW2RlZmF1bHRWYWx1ZXNdPVwib2JzLmRlZmF1bHRWYWx1ZXNcIlxuICAgIFtkaXNhYmxlQXV0aG9yXT1cIm9icy51cGxvYWRGaWVsZHM/LmF1dGV1cj8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlQ29uZmlkZW50aWFsaXR5TGV2ZWxdPVwib2JzLnVwbG9hZEZpZWxkcz8udmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVDcmVhdGlvbkRhdGVdPVwib2JzLnVwbG9hZEZpZWxkcz8uY3JlYXRpZWRhdHVtPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVEZXNjcmlwdGlvbl09XCJvYnMudXBsb2FkRmllbGRzPy5iZXNjaHJpanZpbmc/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZURvY3VtZW50VGl0bGVdPVwib2JzLnVwbG9hZEZpZWxkcz8udGl0ZWw/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZURvY3VtZW50VHlwZV09XCJvYnMudXBsb2FkRmllbGRzPy5pbmZvcm1hdGllb2JqZWN0dHlwZT8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlRmlsZW5hbWVdPVwib2JzLnVwbG9hZEZpZWxkcz8uYmVzdGFuZHNuYWFtPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVMYW5ndWFnZV09XCJvYnMudXBsb2FkRmllbGRzPy50YWFsPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVTdGF0dXNdPVwib2JzLnVwbG9hZEZpZWxkcz8uc3RhdHVzPy5yZWFkb25seVwiXG4gICAgW2hpZGVGaWVsZHNdPVwib2JzLmhpZGVGaWVsZHNcIlxuICAgIFtvcGVuXT1cInNob3dVcGxvYWRNb2RhbCQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkJF09XCJtb2RhbERpc2FibGVkJFwiXG4gICAgW2ZpbGUkXT1cImZpbGVUb0JlVXBsb2FkZWQkXCJcbiAgICBbaXNFZGl0TW9kZV09XCJpc0VkaXRNb2RlJCB8IGFzeW5jXCJcbiAgICBbc3VwcG9ydHNUcmVmd29vcmRlbl09XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNUcmVmd29vcmRlblwiXG4gICAgKG1vZGFsQ2xvc2UpPVwiY2xvc2VNZXRhZGF0YU1vZGFsKClcIlxuICAgIChtZXRhZGF0YSk9XCJtZXRhZGF0YVNldCgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbD5cbjwvZGl2PlxuXG48dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlTW9kYWwuY29uZmlybVwiXG4gIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC5jb250ZW50XCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kb2N1bWVudGVuLmRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsLnRpdGxlXCJcbiAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCRcIlxuICAoY29uZmlybUV2ZW50KT1cImRlbGV0ZURvY3VtZW50KClcIlxuPlxuPC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XG4gIEBpZiAoKGZpbHRlciQgfCBhc3luYyB8IGtleXZhbHVlKT8ubGVuZ3RoKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJyZXNldEZpbHRlckJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlckRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlclRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIGlmIChzaG93WmFha0xpbmtXYXJuaW5nICYmIGlzQWRtaW4pIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9aYWFrRm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwidXBsb2FkQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXNUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNvdmVyZmxvd0ZpbHRlcj5cbiAgPHZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlclxuICAgIFtwcmVmaWxsRmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgKGZpbHRlckV2ZW50KT1cIm9uRmlsdGVyRXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRGaWx0ZXJCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkZpbHRlckV2ZW50KG51bGwpXCI+XG4gICAge3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZEJ1dHRvbiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxuICA8YnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cIlxuICAgICAgKHVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgIXVwbG9hZFByb2Nlc3NMaW5rZWQpIHx8XG4gICAgICBzaG93WmFha0xpbmtXYXJuaW5nIHx8XG4gICAgICBkaXNhYmxlZCB8fFxuICAgICAgKGNhbkNyZWF0ZVJlc291cmNlJCB8IGFzeW5jKSA9PT0gZmFsc2VcbiAgICBcIlxuICAgIFt2VG9vbHRpcF09XCJnZXRVcGxvYWRCdXR0b25Ub29sdGlwKCkgfCB0cmFuc2xhdGVcIlxuICAgIChjbGljayk9XCJvblVwbG9hZEJ1dHRvbkNsaWNrKClcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICA+XG4gICAge3sgJ1VwbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidXBsb2FkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvblRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICBAaWYgKGRhdGEuaXRlbVtkYXRhLmtleV0pIHtcbiAgICB7eyAnZG9jdW1lbnQuJyArIGRhdGEuaXRlbVtkYXRhLmtleV0gfCB0cmFuc2xhdGUgfX1cbiAgfSBAZWxzZSB7XG4gICAgLVxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cIm9uTmF2aWdhdGVUb0Nhc2VBZG1pbkNsaWNrKClcIiBjZHNCdXR0b249XCJwcmltYXJ5XCI+XG4gICAge3sgJ2Rvc3NpZXIuZG9jdW1lbnRlbi5uYXZpZ2F0ZVRvQ2FzZUFkbWluJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInNldHRpbmdzXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -105,7 +105,7 @@ export class DocumentObjectenApiSyncComponent {
|
|
|
105
105
|
this.modalShowing$.next(false);
|
|
106
106
|
}
|
|
107
107
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentObjectenApiSyncComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DocumentObjectenApiSyncService }, { token: i3.CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DocumentObjectenApiSyncComponent, isStandalone: true, selector: "valtimo-document-objecten-api-sync", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'zaakdetails.title' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n documentObjectenApiSync: documentObjectenApiSync$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngIf=\"obs.documentObjectenApiSync; else addSync\">\n <div class=\"card card-border card-contrast\">\n <div class=\"card-header card-header-contrast card-header-featured\">\n <div>\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n <div class=\"controls\">\n <button class=\"btn btn-danger ml-3\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-pencil\"></i>\n </button>\n <button class=\"btn btn-danger ml-3\" (click)=\"remove()\">\n <i class=\"icon mdi mdi-delete\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.enabled' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{\n obs.documentObjectenApiSync?.enabled\n ? ('zaakdetails.yes' | translate)\n : ('zaakdetails.no' | translate)\n }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.objectManagementConfigurationTitle' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #addSync>\n <div class=\"text-right mt-5\">\n <button class=\"btn btn-primary\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>{{ 'zaakdetails.submitButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"'zaakdetails.editModal.title' | translate\"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'zaakdetails.editModal.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"formGroup\">\n <v-select\n *ngIf=\"objectManagementConfigurationItems$ | async as objectManagementConfigurations\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [items]=\"objectManagementConfigurations\"\n [defaultSelectionId]=\"objectManagementConfigurationId.getRawValue()\"\n [placeholder]=\"\n 'zaakdetails.editModal.objectManagementConfigurationPlaceholder' | translate\n \"\n [title]=\"'zaakdetails.editModal.objectManagementConfiguration' | translate\"\n [disabled]=\"false\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"objectManagementConfigurationId\"\n [carbonTheme]=\"currentTheme$ | async\"\n (selectedChange)=\"configSelected($event)\"\n ></v-select>\n\n <cds-checkbox formControlName=\"enabled\"\n >{{ 'zaakdetails.editModal.enabled' | translate }}\n </cds-checkbox>\n </form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onModalClose()\" [disabled]=\"false\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"!formGroup.valid\" (click)=\"submit()\">\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-8\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #noConfigAvailable>\n <div class=\"mb-8\">\n <h4>{{ 'zaakdetails.error.configNotFound' | translate }}</h4>\n </div>\n</ng-template>\n", styles: [".card-header,.setting-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.controls{display:flex;align-items:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SpinnerModule }, { kind: "component", type: i3.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "ngmodule", type: FormModule }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: ValtimoCdsModalDirectiveModule }, { kind: "directive", type: i3.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i7.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i7.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i7.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i7.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i7.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i7.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }] }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DocumentObjectenApiSyncComponent, isStandalone: true, selector: "valtimo-document-objecten-api-sync", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'zaakdetails.title' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n documentObjectenApiSync: documentObjectenApiSync$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngIf=\"obs.documentObjectenApiSync; else addSync\">\n <div class=\"card card-border card-contrast\">\n <div class=\"card-header card-header-contrast card-header-featured\">\n <div>\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n <div class=\"controls\">\n <button class=\"btn btn-danger ml-3\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-pencil\"></i>\n </button>\n <button class=\"btn btn-danger ml-3\" (click)=\"remove()\">\n <i class=\"icon mdi mdi-delete\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.enabled' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{\n obs.documentObjectenApiSync?.enabled\n ? ('zaakdetails.yes' | translate)\n : ('zaakdetails.no' | translate)\n }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.objectManagementConfigurationTitle' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #addSync>\n <div class=\"text-right mt-5\">\n <button class=\"btn btn-primary\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>{{ 'zaakdetails.submitButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"'zaakdetails.editModal.title' | translate\"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'zaakdetails.editModal.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"formGroup\">\n <v-select\n *ngIf=\"objectManagementConfigurationItems$ | async as objectManagementConfigurations\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [items]=\"objectManagementConfigurations\"\n [defaultSelectionId]=\"objectManagementConfigurationId.getRawValue()\"\n [placeholder]=\"\n 'zaakdetails.editModal.objectManagementConfigurationPlaceholder' | translate\n \"\n [title]=\"'zaakdetails.editModal.objectManagementConfiguration' | translate\"\n [disabled]=\"false\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"objectManagementConfigurationId\"\n [carbonTheme]=\"currentTheme$ | async\"\n (selectedChange)=\"configSelected($event)\"\n ></v-select>\n\n <cds-checkbox formControlName=\"enabled\"\n >{{ 'zaakdetails.editModal.enabled' | translate }}\n </cds-checkbox>\n </form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onModalClose()\" [disabled]=\"false\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"!formGroup.valid\" (click)=\"submit()\">\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-8\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #noConfigAvailable>\n <div class=\"mb-8\">\n <h4>{{ 'zaakdetails.error.configNotFound' | translate }}</h4>\n </div>\n</ng-template>\n", styles: [".card-header,.setting-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.controls{display:flex;align-items:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SpinnerModule }, { kind: "component", type: i3.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "ngmodule", type: FormModule }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: ValtimoCdsModalDirectiveModule }, { kind: "directive", type: i3.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i7.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i7.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i7.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i7.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i7.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i7.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i7.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }] }); }
|
|
109
109
|
}
|
|
110
110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentObjectenApiSyncComponent, decorators: [{
|
|
111
111
|
type: Component,
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
124
124
|
ModalModule,
|
|
125
125
|
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'zaakdetails.title' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n documentObjectenApiSync: documentObjectenApiSync$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngIf=\"obs.documentObjectenApiSync; else addSync\">\n <div class=\"card card-border card-contrast\">\n <div class=\"card-header card-header-contrast card-header-featured\">\n <div>\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n <div class=\"controls\">\n <button class=\"btn btn-danger ml-3\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-pencil\"></i>\n </button>\n <button class=\"btn btn-danger ml-3\" (click)=\"remove()\">\n <i class=\"icon mdi mdi-delete\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.enabled' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{\n obs.documentObjectenApiSync?.enabled\n ? ('zaakdetails.yes' | translate)\n : ('zaakdetails.no' | translate)\n }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'zaakdetails.objectManagementConfigurationTitle' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ obs.documentObjectenApiSync.objectManagementConfigurationTitle || '-' }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #addSync>\n <div class=\"text-right mt-5\">\n <button class=\"btn btn-primary\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>{{ 'zaakdetails.submitButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <cds-modal\n valtimoCdsModal\n [title]=\"'zaakdetails.editModal.title' | translate\"\n [open]=\"modalShowing$ | async\"\n [showFooter]=\"true\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onModalClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'zaakdetails.editModal.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"formGroup\">\n <v-select\n *ngIf=\"objectManagementConfigurationItems$ | async as objectManagementConfigurations\"\n [appendInline]=\"false\"\n [dropUp]=\"false\"\n [items]=\"objectManagementConfigurations\"\n [defaultSelectionId]=\"objectManagementConfigurationId.getRawValue()\"\n [placeholder]=\"\n 'zaakdetails.editModal.objectManagementConfigurationPlaceholder' | translate\n \"\n [title]=\"'zaakdetails.editModal.objectManagementConfiguration' | translate\"\n [disabled]=\"false\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"objectManagementConfigurationId\"\n [carbonTheme]=\"currentTheme$ | async\"\n (selectedChange)=\"configSelected($event)\"\n ></v-select>\n\n <cds-checkbox formControlName=\"enabled\"\n >{{ 'zaakdetails.editModal.enabled' | translate }}\n </cds-checkbox>\n </form>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n </cds-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onModalClose()\" [disabled]=\"false\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"!formGroup.valid\" (click)=\"submit()\">\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-8\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #noConfigAvailable>\n <div class=\"mb-8\">\n <h4>{{ 'zaakdetails.error.configNotFound' | translate }}</h4>\n </div>\n</ng-template>\n", styles: [".card-header,.setting-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.controls{display:flex;align-items:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
126
126
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.DocumentObjectenApiSyncService }, { type: i3.CdsThemeService }] });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3phYWtkZXRhaWxzL2NvbXBvbmVudHMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3phYWtkZXRhaWxzL2NvbXBvbmVudHMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUVMLFVBQVUsRUFDVixXQUFXLEVBRVgsWUFBWSxFQUNaLGFBQWEsRUFDYiw4QkFBOEIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7OztBQXlCcEYsTUFB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SSxDQUFDLCtCQUErQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0F6SFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsOEZDL0Q3Qyxnb0tBa0pBLDgwQkRqR0ksWUFBWSw4VkFDWixXQUFXLDJZQUNYLGVBQWUsMkZBQ2YsYUFBYSx1TkFDYixVQUFVLDhCQUNWLFdBQVcsOEJBQ1gsWUFBWSwwZkFDWiw4QkFBOEIsdUhBQzlCLGNBQWMseVRBQ2QsbUJBQW1CLCtVQUNuQixZQUFZLGdNQUNaLFdBQVc7OzRGQUdGLGdDQUFnQztrQkFwQjVDLFNBQVM7K0JBQ0Usb0NBQW9DLGNBR2xDLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLDhCQUE4Qjt3QkFDOUIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osV0FBVztxQkFDWiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIENkc1RoZW1lU2VydmljZSxcbiAgRm9ybU1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdE1vZHVsZSxcbiAgU3Bpbm5lck1vZHVsZSxcbiAgVmFsdGltb0Nkc01vZGFsRGlyZWN0aXZlTW9kdWxlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIENoZWNrYm94TW9kdWxlLCBNb2RhbE1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0RvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb2N1bWVudE9iamVjdGVuQXBpU3luY30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC1vYmplY3Rlbi1hcGktc3luYy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBTcGlubmVyTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFZhbHRpbW9DZHNNb2RhbERpcmVjdGl2ZU1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRPYmplY3RlbkFwaVN5bmNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uJDogT2JzZXJ2YWJsZTxEb2N1bWVudERlZmluaXRpb24+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS5nZXREb2N1bWVudERlZmluaXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEb2N1bWVudE9iamVjdGVuQXBpU3luYz4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbkl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxTZWxlY3RJdGVtPj4gPVxuICAgIHRoaXMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmNTZXJ2aWNlLmdldE9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0cyA9PlxuICAgICAgICByZXN1bHRzPy5tYXAoY29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgICAgIGlkOiBjb25maWd1cmF0aW9uLmlkLFxuICAgICAgICAgIHRleHQ6IGNvbmZpZ3VyYXRpb24udGl0bGUsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTaG93aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFRoZW1lJCA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQ7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGVuYWJsZWQ6IG5ldyBGb3JtQ29udHJvbCh0cnVlKSxcbiAgfSk7XG5cbiAgcHVibGljIGdldCBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogQWJzdHJhY3RDb250cm9sPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbmFibGVkJyk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudE9iamVjdGVuQXBpU3luY1NlcnZpY2U6IERvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnRlbk9iamVjdGVuQXBpU3luYygpO1xuICB9XG5cbiAgcHVibGljIGxvYWREb2N1bWVudGVuT2JqZWN0ZW5BcGlTeW5jKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS5nZXREb2N1bWVudE9iamVjdGVuQXBpU3luYyhcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lLFxuICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uLmlkLnZlcnNpb25cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNvbmZpZ1NlbGVjdGVkKGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jPy5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkKTtcbiAgICAgICAgdGhpcy5lbmFibGVkLnBhdGNoVmFsdWUoZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM/LmVuYWJsZWQpO1xuICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jJC5uZXh0KGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uID0+XG4gICAgICAgICAgdGhpcy5kb2N1bWVudE9iamVjdGVuQXBpU3luY1NlcnZpY2UuZGVsZXRlRG9jdW1lbnRPYmplY3RlbkFwaVN5bmMoXG4gICAgICAgICAgICBkb2N1bWVudERlZmluaXRpb24uaWQubmFtZSxcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC52ZXJzaW9uXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMkLm5leHQobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS51cGRhdGVEb2N1bWVudE9iamVjdGVuQXBpU3luYyhcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lLFxuICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uLmlkLnZlcnNpb24sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uSWQ6IGZvcm1WYWx1ZXMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZCxcbiAgICAgICAgICAgICAgZW5hYmxlZDogZm9ybVZhbHVlcy5lbmFibGVkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZERvY3VtZW50ZW5PYmplY3RlbkFwaVN5bmMoKTtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uTW9kYWxDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2hvd2luZyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWdTZWxlY3RlZChzZWxlY3RlZElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXNlbGVjdGVkSWQpIHtcbiAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZC5wYXRjaFZhbHVlKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkLnBhdGNoVmFsdWUoc2VsZWN0ZWRJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNob3dpbmckLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtdC00IG1iLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gIDxkaXY+XG4gICAgPGgyPnt7ICd6YWFrZGV0YWlscy50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM6IGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMubG9hZGluZyA9PT0gZmFsc2U7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM7IGVsc2UgYWRkU3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgY2FyZC1jb250cmFzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgY2FyZC1oZWFkZXItY29udHJhc3QgY2FyZC1oZWFkZXItZmVhdHVyZWRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3sgb2JzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uVGl0bGUgfHwgJy0nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbWwtM1wiIChjbGljayk9XCJzaG93TW9kYWwoKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1wZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBtbC0zXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMyBtdC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyAnemFha2RldGFpbHMuZW5hYmxlZCcgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgb2JzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jPy5lbmFibGVkXG4gICAgICAgICAgICAgICAgICA/ICgnemFha2RldGFpbHMueWVzJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgIDogKCd6YWFrZGV0YWlscy5ubycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ3phYWtkZXRhaWxzLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uVGl0bGUnIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICB7eyBvYnMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25UaXRsZSB8fCAnLScgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGFsOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNhZGRTeW5jPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtdC01XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93TW9kYWwoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPnt7ICd6YWFrZGV0YWlscy5zdWJtaXRCdXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RhbCBsZXQtb2JzPVwib2JzXCI+XG4gIDxjZHMtbW9kYWxcbiAgICB2YWx0aW1vQ2RzTW9kYWxcbiAgICBbdGl0bGVdPVwiJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgIFtvcGVuXT1cIm1vZGFsU2hvd2luZyQgfCBhc3luY1wiXG4gICAgW3Nob3dGb290ZXJdPVwidHJ1ZVwiXG4gID5cbiAgICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25Nb2RhbENsb3NlKClcIj5cbiAgICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICAgIHt7ICd6YWFrZGV0YWlscy5lZGl0TW9kYWwudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2gzPlxuICAgIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICAgIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgICpuZ0lmPVwib2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JdGVtcyQgfCBhc3luYyBhcyBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpdGVtc109XCJvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwib2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZC5nZXRSYXdWYWx1ZSgpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAnemFha2RldGFpbHMuZWRpdE1vZGFsLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uSWRcIlxuICAgICAgICAgIFtjYXJib25UaGVtZV09XCJjdXJyZW50VGhlbWUkIHwgYXN5bmNcIlxuICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJjb25maWdTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG5cbiAgICAgICAgPGNkcy1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkXCJcbiAgICAgICAgICA+e3sgJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC5lbmFibGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Nkcy1jaGVja2JveD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zRm9vdGVyTW9kYWw7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Nkcy1tb2RhbC1mb290ZXI+XG4gIDwvY2RzLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zRm9vdGVyTW9kYWwgbGV0LW9icz1cIm9ic1wiPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiIChjbGljayk9XCJvbk1vZGFsQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJmYWxzZVwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5zdWJtaXQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibWItOFwiPlxuICAgIDx2YWx0aW1vLXNwaW5uZXI+PC92YWx0aW1vLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbmZpZ0F2YWlsYWJsZT5cbiAgPGRpdiBjbGFzcz1cIm1iLThcIj5cbiAgICA8aDQ+e3sgJ3phYWtkZXRhaWxzLmVycm9yLmNvbmZpZ05vdEZvdW5kJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3phYWtkZXRhaWxzL2NvbXBvbmVudHMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3phYWtkZXRhaWxzL2NvbXBvbmVudHMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMvZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUVMLFVBQVUsRUFDVixXQUFXLEVBRVgsWUFBWSxFQUNaLGFBQWEsRUFDYiw4QkFBOEIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7OztBQXlCcEYsTUFB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SSxDQUFDLCtCQUErQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzsrR0F6SFUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsOEZDL0Q3Qyxnb0tBa0pBLDgwQkRqR0ksWUFBWSw4VkFDWixXQUFXLDJZQUNYLGVBQWUsMkZBQ2YsYUFBYSx1TkFDYixVQUFVLDhCQUNWLFdBQVcsOEJBQ1gsWUFBWSwwZkFDWiw4QkFBOEIsbUpBQzlCLGNBQWMseVRBQ2QsbUJBQW1CLCtVQUNuQixZQUFZLGdNQUNaLFdBQVc7OzRGQUdGLGdDQUFnQztrQkFwQjVDLFNBQVM7K0JBQ0Usb0NBQW9DLGNBR2xDLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLDhCQUE4Qjt3QkFDOUIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osV0FBVztxQkFDWiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIENkc1RoZW1lU2VydmljZSxcbiAgRm9ybU1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdE1vZHVsZSxcbiAgU3Bpbm5lck1vZHVsZSxcbiAgVmFsdGltb0Nkc01vZGFsRGlyZWN0aXZlTW9kdWxlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIENoZWNrYm94TW9kdWxlLCBNb2RhbE1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0RvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb2N1bWVudE9iamVjdGVuQXBpU3luY30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtb2JqZWN0ZW4tYXBpLXN5bmMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudC1vYmplY3Rlbi1hcGktc3luYy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBTcGlubmVyTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICAgIFZhbHRpbW9DZHNNb2RhbERpcmVjdGl2ZU1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRPYmplY3RlbkFwaVN5bmNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uJDogT2JzZXJ2YWJsZTxEb2N1bWVudERlZmluaXRpb24+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS5nZXREb2N1bWVudERlZmluaXRpb24oZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEb2N1bWVudE9iamVjdGVuQXBpU3luYz4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbkl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxTZWxlY3RJdGVtPj4gPVxuICAgIHRoaXMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmNTZXJ2aWNlLmdldE9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0cyA9PlxuICAgICAgICByZXN1bHRzPy5tYXAoY29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgICAgIGlkOiBjb25maWd1cmF0aW9uLmlkLFxuICAgICAgICAgIHRleHQ6IGNvbmZpZ3VyYXRpb24udGl0bGUsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTaG93aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFRoZW1lJCA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQ7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGVuYWJsZWQ6IG5ldyBGb3JtQ29udHJvbCh0cnVlKSxcbiAgfSk7XG5cbiAgcHVibGljIGdldCBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogQWJzdHJhY3RDb250cm9sPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbmFibGVkJyk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudE9iamVjdGVuQXBpU3luY1NlcnZpY2U6IERvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRG9jdW1lbnRlbk9iamVjdGVuQXBpU3luYygpO1xuICB9XG5cbiAgcHVibGljIGxvYWREb2N1bWVudGVuT2JqZWN0ZW5BcGlTeW5jKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS5nZXREb2N1bWVudE9iamVjdGVuQXBpU3luYyhcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lLFxuICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uLmlkLnZlcnNpb25cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNvbmZpZ1NlbGVjdGVkKGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jPy5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkKTtcbiAgICAgICAgdGhpcy5lbmFibGVkLnBhdGNoVmFsdWUoZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM/LmVuYWJsZWQpO1xuICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jJC5uZXh0KGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uID0+XG4gICAgICAgICAgdGhpcy5kb2N1bWVudE9iamVjdGVuQXBpU3luY1NlcnZpY2UuZGVsZXRlRG9jdW1lbnRPYmplY3RlbkFwaVN5bmMoXG4gICAgICAgICAgICBkb2N1bWVudERlZmluaXRpb24uaWQubmFtZSxcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC52ZXJzaW9uXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMkLm5leHQobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jU2VydmljZS51cGRhdGVEb2N1bWVudE9iamVjdGVuQXBpU3luYyhcbiAgICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lLFxuICAgICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uLmlkLnZlcnNpb24sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uSWQ6IGZvcm1WYWx1ZXMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZCxcbiAgICAgICAgICAgICAgZW5hYmxlZDogZm9ybVZhbHVlcy5lbmFibGVkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZERvY3VtZW50ZW5PYmplY3RlbkFwaVN5bmMoKTtcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uTW9kYWxDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2hvd2luZyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWdTZWxlY3RlZChzZWxlY3RlZElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXNlbGVjdGVkSWQpIHtcbiAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZC5wYXRjaFZhbHVlKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbklkLnBhdGNoVmFsdWUoc2VsZWN0ZWRJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNob3dpbmckLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtdC00IG1iLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gIDxkaXY+XG4gICAgPGgyPnt7ICd6YWFrZGV0YWlscy50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM6IGRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMubG9hZGluZyA9PT0gZmFsc2U7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmM7IGVsc2UgYWRkU3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib3JkZXIgY2FyZC1jb250cmFzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgY2FyZC1oZWFkZXItY29udHJhc3QgY2FyZC1oZWFkZXItZmVhdHVyZWRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3sgb2JzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uVGl0bGUgfHwgJy0nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbWwtM1wiIChjbGljayk9XCJzaG93TW9kYWwoKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1wZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBtbC0zXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMyBtdC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyAnemFha2RldGFpbHMuZW5hYmxlZCcgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgb2JzLmRvY3VtZW50T2JqZWN0ZW5BcGlTeW5jPy5lbmFibGVkXG4gICAgICAgICAgICAgICAgICA/ICgnemFha2RldGFpbHMueWVzJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgIDogKCd6YWFrZGV0YWlscy5ubycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ3phYWtkZXRhaWxzLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uVGl0bGUnIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICB7eyBvYnMuZG9jdW1lbnRPYmplY3RlbkFwaVN5bmMub2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25UaXRsZSB8fCAnLScgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGFsOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNhZGRTeW5jPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtdC01XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93TW9kYWwoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPnt7ICd6YWFrZGV0YWlscy5zdWJtaXRCdXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RhbCBsZXQtb2JzPVwib2JzXCI+XG4gIDxjZHMtbW9kYWxcbiAgICB2YWx0aW1vQ2RzTW9kYWxcbiAgICBbdGl0bGVdPVwiJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgIFtvcGVuXT1cIm1vZGFsU2hvd2luZyQgfCBhc3luY1wiXG4gICAgW3Nob3dGb290ZXJdPVwidHJ1ZVwiXG4gID5cbiAgICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25Nb2RhbENsb3NlKClcIj5cbiAgICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICAgIHt7ICd6YWFrZGV0YWlscy5lZGl0TW9kYWwudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2gzPlxuICAgIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICAgIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgICpuZ0lmPVwib2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JdGVtcyQgfCBhc3luYyBhcyBvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpdGVtc109XCJvYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwib2JqZWN0TWFuYWdlbWVudENvbmZpZ3VyYXRpb25JZC5nZXRSYXdWYWx1ZSgpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAnemFha2RldGFpbHMuZWRpdE1vZGFsLm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC5vYmplY3RNYW5hZ2VtZW50Q29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdE1hbmFnZW1lbnRDb25maWd1cmF0aW9uSWRcIlxuICAgICAgICAgIFtjYXJib25UaGVtZV09XCJjdXJyZW50VGhlbWUkIHwgYXN5bmNcIlxuICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJjb25maWdTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG5cbiAgICAgICAgPGNkcy1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkXCJcbiAgICAgICAgICA+e3sgJ3phYWtkZXRhaWxzLmVkaXRNb2RhbC5lbmFibGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Nkcy1jaGVja2JveD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zRm9vdGVyTW9kYWw7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Nkcy1tb2RhbC1mb290ZXI+XG4gIDwvY2RzLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zRm9vdGVyTW9kYWwgbGV0LW9icz1cIm9ic1wiPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiIChjbGljayk9XCJvbk1vZGFsQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJmYWxzZVwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5zdWJtaXQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibWItOFwiPlxuICAgIDx2YWx0aW1vLXNwaW5uZXI+PC92YWx0aW1vLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbmZpZ0F2YWlsYWJsZT5cbiAgPGRpdiBjbGFzcz1cIm1iLThcIj5cbiAgICA8aDQ+e3sgJ3phYWtkZXRhaWxzLmVycm9yLmNvbmZpZ05vdEZvdW5kJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|