@valtimo/dossier 11.1.5 → 11.2.1
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/components/dossier-detail/dossier-detail.component.mjs +3 -3
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +31 -15
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +5 -9
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +26 -10
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +43 -17
- package/esm2022/lib/dossier.module.mjs +8 -5
- package/esm2022/lib/permissions/dossier-detail.permissions.mjs +7 -2
- package/esm2022/lib/services/dossier-list.service.mjs +2 -2
- package/esm2022/lib/services/start-modal.service.mjs +28 -0
- package/fesm2022/valtimo-dossier.mjs +150 -66
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/progress/progress.component.d.ts +10 -10
- package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts +6 -2
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +11 -3
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +1 -1
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/permissions/dossier-detail.permissions.d.ts +2 -1
- package/lib/permissions/dossier-detail.permissions.d.ts.map +1 -1
- package/lib/services/start-modal.service.d.ts +7 -0
- package/lib/services/start-modal.service.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -85,9 +85,9 @@ export class DossierDetailComponent {
|
|
|
85
85
|
}
|
|
86
86
|
getAllAssociatedProcessDefinitions() {
|
|
87
87
|
this.documentService
|
|
88
|
-
.
|
|
88
|
+
.findProcessDocumentDefinitionsByStartableByUser(this.documentDefinitionName, true)
|
|
89
89
|
.subscribe((processDocumentDefinitions) => {
|
|
90
|
-
this.processDocumentDefinitions = processDocumentDefinitions
|
|
90
|
+
this.processDocumentDefinitions = processDocumentDefinitions;
|
|
91
91
|
this.processDefinitionListFields = [
|
|
92
92
|
{
|
|
93
93
|
key: 'processName',
|
|
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
191
191
|
type: ViewChild,
|
|
192
192
|
args: ['tabContainer', { read: ViewContainerRef }]
|
|
193
193
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxPQUFPLEVBRUwsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLElBQUksRUFDSixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsa0NBQWtDLEdBQ25DLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRSxNQUFNLE9BQU8sc0JBQXNCO0lBbUdqQyxZQUNtQixpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGFBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLGlCQUFvQyxFQUNwQyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsaUJBQW9DLEVBQ3BDLGNBQThCO1FBWDlCLHNCQUFp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RSxnQkFBZ0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtCcmVhZGNydW1iU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0RvY3VtZW50LCBEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7S2V5Y2xvYWtTZXJ2aWNlfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZnJvbSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYkxvYWRlckltcGx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBDQU5fQVNTSUdOX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0NMQUlNX0NBU0VfUEVSTUlTU0lPTixcbiAgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbn0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyU2VydmljZSwgRG9zc2llclRhYlNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbRG9zc2llclRhYlNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsJylcbiAgc3VwcG9ydGluZ1Byb2Nlc3NTdGFydDogRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0YWJDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHVibGljIGN1c3RvbURvc3NpZXJIZWFkZXJJdGVtczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25bXSA9IFtdO1xuICBwdWJsaWMgdGFiTG9hZGVyOiBUYWJMb2FkZXJJbXBsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPERvY3VtZW50IHwgbnVsbD4gPVxuICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaERvY3VtZW50JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucm91dGUucGFyYW1zKSxcbiAgICAgIG1hcCgocGFyYW1zOiBQYXJhbXMpID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgICBzd2l0Y2hNYXAoKGRvY3VtZW50SWQ6IHN0cmluZykgPT5cbiAgICAgICAgZG9jdW1lbnRJZCA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkgOiBvZihudWxsKVxuICAgICAgKSxcbiAgICAgIHRhcCgoZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlSWQkLm5leHQoZG9jdW1lbnQuYXNzaWduZWVJZCk7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyPy5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyW1xuICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgXT8uZm9yRWFjaChpdGVtID0+IHRoaXMuZ2V0Q3VzdG9tRG9zc2llckhlYWRlckl0ZW0oaXRlbSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB1c2VySWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPSBmcm9tKFxuICAgIHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmlzTG9nZ2VkSW4oKVxuICApLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpKSxcbiAgICBtYXAocHJvZmlsZSA9PiBwcm9maWxlPy5pZClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNBc3NpZ25pbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFzc2lnbmVlSWQkLFxuICAgIHRoaXMudXNlcklkJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFthc3NpZ25lZUlkLCB1c2VySWRdKSA9PiAhIWFzc2lnbmVlSWQgJiYgISF1c2VySWQgJiYgYXNzaWduZWVJZCA9PT0gdXNlcklkKSxcbiAgICBzdGFydFdpdGgodHJ1ZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FzZVNldHRpbmdzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoY2FzZVNldHRpbmdzID0+IGNhc2VTZXR0aW5ncz8uY2FuSGF2ZUFzc2lnbmVlKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ25Mb2FkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIHN3aXRjaE1hcCgocGFyYW1zOiBQYXJhbU1hcCkgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0FTU0lHTl9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgICksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuY2FuQXNzaWduTG9hZGVkJC5uZXh0KHRydWUpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkNsYWltJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9DTEFJTV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1RhYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IG5vVGFic0NvbmZpZ3VyZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfc25hcHNob3Q6IFBhcmFtTWFwO1xuICBwcml2YXRlIF9pbml0aWFsVGFiTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlDbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyVGFiU2VydmljZTogRG9zc2llclRhYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyU2VydmljZTogRG9zc2llclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuX3NuYXBzaG90LmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpIHx8ICcnO1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IHRoaXMuX3NuYXBzaG90LmdldCgnZG9jdW1lbnRJZCcpIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRUYWJMb2FkZXIoKTtcbiAgICB0aGlzLmluaXRCcmVhZGNydW1iKCk7XG4gICAgdGhpcy5nZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5jbGVhclNlY29uZEJyZWFkY3J1bWIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0+IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uc3RhcnRhYmxlQnlVc2VyXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbkxpc3RGaWVsZHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncHJvY2Vzc05hbWUnLFxuICAgICAgICAgICAgbGFiZWw6ICdQcm9jZXMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3VwcG9ydGluZ1Byb2Nlc3NTdGFydC5vcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiwgdGhpcy5kb2N1bWVudElkKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGFpbUFzc2lnbmVlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLnVzZXJJZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmFzc2lnbkhhbmRsZXJUb0RvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCwgdXNlcklkID8/ICcnKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBhc3NpZ25pbmcgdXNlciB0byBjYXNlJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgIC5nZXREb2N1bWVudERlZmluaXRpb24odGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgLnN1YnNjcmliZShkZWZpbml0aW9uID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGUgPSBkZWZpbml0aW9uLnNjaGVtYS50aXRsZTtcbiAgICAgICAgdGhpcy5zZXRCcmVhZGNydW1iKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRhYkxvYWRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLnRhYnMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHRhYnMgPT4ge1xuICAgICAgaWYgKHRhYnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYk5hbWUgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ3RhYicpID8/ICcnO1xuICAgICAgICB0aGlzLnRhYkxvYWRlciA9IG5ldyBUYWJMb2FkZXJJbXBsKFxuICAgICAgICAgIHRhYnMsXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgIHRoaXMucm91dGVyLFxuICAgICAgICAgIHRoaXMucm91dGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50YWJMb2FkZXIuaW5pdGlhbCh0aGlzLl9pbml0aWFsVGFiTmFtZSk7XG4gICAgICAgIHRoaXMubG9hZGluZ1RhYnMkLm5leHQoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ub1RhYnNDb25maWd1cmVkJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbURvc3NpZXJIZWFkZXJJdGVtKGl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5wdXNoKHtcbiAgICAgIGxhYmVsOiBpdGVtWydsYWJlbFRyYW5zbGF0aW9uS2V5J10gfHwgJycsXG4gICAgICBjb2x1bW5TaXplOiBpdGVtWydjb2x1bW5TaXplJ10gfHwgMyxcbiAgICAgIHRleHRTaXplOiBpdGVtWyd0ZXh0U2l6ZSddIHx8ICdtZCcsXG4gICAgICBjdXN0b21DbGFzczogaXRlbVsnY3VzdG9tQ2xhc3MnXSB8fCAnJyxcbiAgICAgIG1vZGlmaWVyOiBpdGVtWydtb2RpZmllciddIHx8ICcnLFxuICAgICAgdmFsdWU6IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXT8ucmVkdWNlKFxuICAgICAgICAocHJldiwgY3VycikgPT4gcHJldiArIHRoaXMuZ2V0U3RyaW5nRnJvbURvY3VtZW50UGF0aChpdGVtLCBjdXJyKSxcbiAgICAgICAgJydcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgcGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gaXRlbVsncHJvcGVydHlQYXRocyddLmluZGV4T2YocGF0aCkgPiAwID8gJyAnIDogJyc7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkodGhpcy5kb2N1bWVudC5jb250ZW50LCBwYXRoLCBpdGVtWydub1ZhbHVlVGV4dCddKSB8fCAnJztcbiAgICBjb25zdCBkYXRlRm9ybWF0cyA9IFttb21lbnQuSVNPXzg2MDEsICdNTS1ERC1ZWVlZJywgJ0RELU1NLVlZWVknLCAnWVlZWS1NTS1ERCddO1xuICAgIHN3aXRjaCAoaXRlbVsnbW9kaWZpZXInXSkge1xuICAgICAgY2FzZSAnYWdlJzoge1xuICAgICAgICBpZiAobW9tZW50KHN0cmluZywgZGF0ZUZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHN0cmluZyA9IG1vbWVudCgpLmRpZmYoc3RyaW5nLCAneWVhcnMnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKG1vbWVudChzdHJpbmcsIGRhdGVGb3JtYXRzLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBzdHJpbmcgPSBtb21lbnQoc3RyaW5nKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgc3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnRPYmplY3QsIGtleSkgPT4gY3VycmVudE9iamVjdD8uW2tleV0sIG9iaikgfHwgZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0U2Vjb25kQnJlYWRjcnVtYih7XG4gICAgICByb3V0ZTogW2AvZG9zc2llcnMvJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0sXG4gICAgICBjb250ZW50OiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWVUaXRsZSxcbiAgICAgIGhyZWY6IGAvZG9zc2llcnMvJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBjYW5Bc3NpZ246IGNhbkFzc2lnbiQgfCBhc3luYyxcbiAgICBjYW5DbGFpbTogY2FuQ2xhaW0kIHwgYXN5bmMsXG4gICAgY2FuSGF2ZUFzc2lnbmVlOiBjYW5IYXZlQXNzaWduZWUkIHwgYXN5bmMsXG4gICAgZG9jdW1lbnQ6IGRvY3VtZW50JCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgY2xhc3M9XCJtYWluLWNvbnRlbnRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBweC0wIG1iLTVcIj5cbiAgICAgIDx2YWx0aW1vLXdpZGdldD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJnLWxpZ2h0IGNhcmQtaGVhZGVyLWRpdmlkZXIgcGItMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBjYXNlRGV0YWlsSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjYW5IYXZlQXNzaWduZWU6IG9icy5jYW5IYXZlQXNzaWduZWUsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBvYnMuZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNhbkFzc2lnbjogb2JzLmNhbkFzc2lnblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG10LW0zcHggbWItMyBjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8dmFsdGltby1leHRlbnNpb25cbiAgICAgICAgICAgICAgICBtb2R1bGU9XCJkb3NzaWVyXCJcbiAgICAgICAgICAgICAgICBwYWdlPVwiZG9zc2llci1kZXRhaWxcIlxuICAgICAgICAgICAgICAgIHNlY3Rpb249XCJjYXJkLWhlYWRlclwiXG4gICAgICAgICAgICAgID48L3ZhbHRpbW8tZXh0ZW5zaW9uPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2xhaW1CdXR0b247XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7Y2FuQ2xhaW06IG9icy5jYW5DbGFpbSwgY2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCA/ICdObyBhY3Rpb24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFydFByb2Nlc3NEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2Rvc3NpZXIuc3RhcnRTdWJQcm9jZXNzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtbC0xIG1kaSBtZGktY2hldnJvbi1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic3RhcnRQcm9jZXNzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RhcnRQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleSB8IHRyYW5zbGF0ZSkgIT09XG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbj8uaWQ/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHVsICpuZ0lmPVwidGFiTG9hZGVyXCIgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIj5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiTG9hZGVyLnRhYnNcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRhYi5pc0FjdGl2ZSgpfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0YWJMb2FkZXIubG9hZCh0YWIpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjbGlja2FibGVcIlxuICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInRhYlwiXG4gICAgICAgICAgICAgIGlkPVwie3sgdGFiLm5hbWUgfX0tdGFiXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGFiIHwgdGFiVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgYmctd2hpdGUgcC01IHBvc2l0aW9uLXJlbGF0aXZlIHRhYi1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1RhYnMkIHwgYXN5bmNcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgICAgICAgICpuZ0lmPVwibm9UYWJzQ29uZmlndXJlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIudGFicy5ub1Jlc3VsdHNEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLnRhYnMubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJDb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbFxuICAgICAgKGZvcm1TdWJtaXQpPVwidGFiTG9hZGVyLnJlZnJlc2hWaWV3KClcIlxuICAgICAgI3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbFxuICAgID48L3ZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEhlYWRlclxuICBsZXQtY2FuSGF2ZUFzc2lnbmVlPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgbGV0LWRvY3VtZW50PVwiZG9jdW1lbnRcIlxuICBsZXQtY2FuQXNzaWduPVwiY2FuQXNzaWduXCJcbj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zLmxlbmd0aCA+IDA7IGVsc2UgZGVmYXVsdFRpdGxlXCI+XG4gICAgPHNwYW5cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbURvc3NpZXJIZWFkZXJJdGVtc1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGgxOiBpdGVtLnRleHRTaXplID09PSAneGwnLFxuICAgICAgICBoMjogaXRlbS50ZXh0U2l6ZSA9PT0gJ2xnJyxcbiAgICAgICAgaDM6IGl0ZW0udGV4dFNpemUgPT09ICdtZCcsXG4gICAgICAgIGg0OiBpdGVtLnRleHRTaXplID09PSAnc20nLFxuICAgICAgICBoNTogaXRlbS50ZXh0U2l6ZSA9PT0gJ3hzJ1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cIm1iLTAgbXQtMCBwYi0yIGFsaWduLXNlbGYtZW5kIGNvbC14bC17eyBpdGVtLmNvbHVtblNpemUgfX0gY29sLWxnLXt7XG4gICAgICAgIGl0ZW0uY29sdW1uU2l6ZSAqIDJcbiAgICAgIH19IHt7IGl0ZW0uY3VzdG9tQ2xhc3MgfX1cIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbCAmJiBpdGVtLnZhbHVlXCI+OiA8L3NwYW4+XG5cbiAgICAgIDxzdHJvbmc+e3sgaXRlbS52YWx1ZSB9fTwvc3Ryb25nPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBjYXNlRGV0YWlsQXNzaWduZWU7XG4gICAgICBjb250ZXh0OiB7Y2FuSGF2ZUFzc2lnbmVlOiBjYW5IYXZlQXNzaWduZWUsIGRvY3VtZW50OiBkb2N1bWVudCwgY2FuQXNzaWduOiBjYW5Bc3NpZ259XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGl0bGU+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWwtMCBtci0wXCI+e3sgZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlPy50cmltKCkgfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEFzc2lnbmVlXG4gIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIlxuICBsZXQtZG9jdW1lbnQ9XCJkb2N1bWVudFwiXG4gIGxldC1jYW5Bc3NpZ249XCJjYW5Bc3NpZ25cIlxuPlxuICA8ZGl2IGNsYXNzPVwicm93IG1sLTAgbXItMCBtdC0xIG1iLTFcIiAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZSAmJiBkb2N1bWVudFwiPlxuICAgIDx2YWx0aW1vLWRvc3NpZXItYXNzaWduLXVzZXJcbiAgICAgICpuZ0lmPVwiY2FuQXNzaWduTG9hZGVkJCB8IGFzeW5jXCJcbiAgICAgIFthc3NpZ25lZUZ1bGxOYW1lXT1cImRvY3VtZW50Py5hc3NpZ25lZUZ1bGxOYW1lXCJcbiAgICAgIFthc3NpZ25lZUlkXT1cImRvY3VtZW50LmFzc2lnbmVlSWRcIlxuICAgICAgW2RvY3VtZW50SWRdPVwiZG9jdW1lbnQuaWRcIlxuICAgICAgW2hhc1Blcm1pc3Npb25dPVwiY2FuQXNzaWduXCJcbiAgICAgIChhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQpPVwiYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKClcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1hc3NpZ24tdXNlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NsYWltQnV0dG9uIGxldC1jYW5DbGFpbT1cImNhbkNsYWltXCIgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1mdWxsLW5hbWVcIiAqbmdJZj1cImNhbkNsYWltICYmIGNhbkhhdmVBc3NpZ25lZVwiPlxuICAgIDxidXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCIoaXNBc3NpZ25pbmckIHwgYXN5bmMpIHx8IChpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQgfCBhc3luYylcIlxuICAgICAgKGNsaWNrKT1cImNsYWltQXNzaWduZWUoKVwiXG4gICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGJ0bi1wcmltYXJ5IG1yLTFcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxzcGFuPnt7ICdkb3NzaWVyLmNsYWltQXNzaWduZWVDYXNlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxPQUFPLEVBRUwsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLElBQUksRUFDSixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsa0NBQWtDLEdBQ25DLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRSxNQUFNLE9BQU8sc0JBQXNCO0lBbUdqQyxZQUNtQixpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGFBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLGlCQUFvQyxFQUNwQyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsaUJBQW9DLEVBQ3BDLGNBQThCO1FBWDlCLHNCQUFp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IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwLCBQYXJhbXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7QnJlYWRjcnVtYlNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtEb2N1bWVudCwgRG9jdW1lbnRTZXJ2aWNlLCBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge0tleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEb3NzaWVyU3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC9kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJMb2FkZXJJbXBsfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQ0FOX0FTU0lHTl9DQVNFX1BFUk1JU1NJT04sXG4gIENBTl9DTEFJTV9DQVNFX1BFUk1JU1NJT04sXG4gIERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7RG9zc2llclNlcnZpY2UsIERvc3NpZXJUYWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW0Rvc3NpZXJUYWJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbCcpXG4gIHN1cHBvcnRpbmdQcm9jZXNzU3RhcnQ6IERvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGFpbmVyJywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHB1YmxpYyBjdXN0b21Eb3NzaWVySGVhZGVySXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbkxpc3RGaWVsZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10gPSBbXTtcbiAgcHVibGljIHRhYkxvYWRlcjogVGFiTG9hZGVySW1wbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBhc3NpZ25lZUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEb2N1bWVudCB8IG51bGw+ID1cbiAgICB0aGlzLmRvc3NpZXJTZXJ2aWNlLnJlZnJlc2hEb2N1bWVudCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJvdXRlLnBhcmFtcyksXG4gICAgICBtYXAoKHBhcmFtczogUGFyYW1zKSA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgICAgc3dpdGNoTWFwKChkb2N1bWVudElkOiBzdHJpbmcpID0+XG4gICAgICAgIGRvY3VtZW50SWQgPyB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudCh0aGlzLmRvY3VtZW50SWQpIDogb2YobnVsbClcbiAgICAgICksXG4gICAgICB0YXAoKGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgICAgdGhpcy5hc3NpZ25lZUlkJC5uZXh0KGRvY3VtZW50LmFzc2lnbmVlSWQpO1xuICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuY3VzdG9tRG9zc2llckhlYWRlcj8uaGFzT3duUHJvcGVydHkoXG4gICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICB0aGlzLmN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5sZW5ndGggPT09IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuY3VzdG9tRG9zc2llckhlYWRlcltcbiAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIF0/LmZvckVhY2goaXRlbSA9PiB0aGlzLmdldEN1c3RvbURvc3NpZXJIZWFkZXJJdGVtKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSB8fCAnJylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXNlcklkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gZnJvbShcbiAgICB0aGlzLmtleUNsb2FrU2VydmljZS5pc0xvZ2dlZEluKClcbiAgKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmtleUNsb2FrU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKSksXG4gICAgbWFwKHByb2ZpbGUgPT4gcHJvZmlsZT8uaWQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXNzaWduaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBc3NpZ25lZFRvQ3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hc3NpZ25lZUlkJCxcbiAgICB0aGlzLnVzZXJJZCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbYXNzaWduZWVJZCwgdXNlcklkXSkgPT4gISFhc3NpZ25lZUlkICYmICEhdXNlcklkICYmIGFzc2lnbmVlSWQgPT09IHVzZXJJZCksXG4gICAgc3RhcnRXaXRoKHRydWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkhhdmVBc3NpZ25lZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VTZXR0aW5ncyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGNhc2VTZXR0aW5ncyA9PiBjYXNlU2V0dGluZ3M/LmNhbkhhdmVBc3NpZ25lZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuQXNzaWduTG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuQXNzaWduJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9BU1NJR05fQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogcGFyYW1zLmdldCgnZG9jdW1lbnRJZCcpID8/ICcnLFxuICAgICAgfSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbkFzc2lnbkxvYWRlZCQubmV4dCh0cnVlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5DbGFpbSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgc3dpdGNoTWFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fQ0xBSU1fQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogcGFyYW1zLmdldCgnZG9jdW1lbnRJZCcpID8/ICcnLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdUYWJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBub1RhYnNDb25maWd1cmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX3NuYXBzaG90OiBQYXJhbU1hcDtcbiAgcHJpdmF0ZSBfaW5pdGlhbFRhYk5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Q2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llclRhYlNlcnZpY2U6IERvc3NpZXJUYWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llclNlcnZpY2U6IERvc3NpZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuX3NuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcDtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ2RvY3VtZW50RGVmaW5pdGlvbk5hbWUnKSB8fCAnJztcbiAgICB0aGlzLmRvY3VtZW50SWQgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ2RvY3VtZW50SWQnKSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0VGFiTG9hZGVyKCk7XG4gICAgdGhpcy5pbml0QnJlYWRjcnVtYigpO1xuICAgIHRoaXMuZ2V0QWxsQXNzb2NpYXRlZFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuY2xlYXJTZWNvbmRCcmVhZGNydW1iKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsQXNzb2NpYXRlZFByb2Nlc3NEZWZpbml0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50U2VydmljZVxuICAgICAgLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc0J5U3RhcnRhYmxlQnlVc2VyKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgdHJ1ZSlcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zO1xuXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25MaXN0RmllbGRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3Byb2Nlc3NOYW1lJyxcbiAgICAgICAgICAgIGxhYmVsOiAnUHJvY2VzJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnN1cHBvcnRpbmdQcm9jZXNzU3RhcnQub3Blbk1vZGFsKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24sIHRoaXMuZG9jdW1lbnRJZCk7XG4gIH1cblxuICBwdWJsaWMgY2xhaW1Bc3NpZ25lZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy51c2VySWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5hc3NpZ25IYW5kbGVyVG9Eb2N1bWVudCh0aGlzLmRvY3VtZW50SWQsIHVzZXJJZCA/PyAnJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmRvc3NpZXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgYXNzaWduaW5nIHVzZXIgdG8gY2FzZScpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZ2V0RG9jdW1lbnREZWZpbml0aW9uKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoZGVmaW5pdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlID0gZGVmaW5pdGlvbi5zY2hlbWEudGl0bGU7XG4gICAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRUYWJMb2FkZXIoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS50YWJzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh0YWJzID0+IHtcbiAgICAgIGlmICh0YWJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxUYWJOYW1lID0gdGhpcy5fc25hcHNob3QuZ2V0KCd0YWInKSA/PyAnJztcbiAgICAgICAgdGhpcy50YWJMb2FkZXIgPSBuZXcgVGFiTG9hZGVySW1wbChcbiAgICAgICAgICB0YWJzLFxuICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICB0aGlzLnJvdXRlcixcbiAgICAgICAgICB0aGlzLnJvdXRlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGFiTG9hZGVyLmluaXRpYWwodGhpcy5faW5pdGlhbFRhYk5hbWUpO1xuICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubm9UYWJzQ29uZmlndXJlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nVGFicyQubmV4dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21Eb3NzaWVySGVhZGVySXRlbShpdGVtKTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21Eb3NzaWVySGVhZGVySXRlbXMucHVzaCh7XG4gICAgICBsYWJlbDogaXRlbVsnbGFiZWxUcmFuc2xhdGlvbktleSddIHx8ICcnLFxuICAgICAgY29sdW1uU2l6ZTogaXRlbVsnY29sdW1uU2l6ZSddIHx8IDMsXG4gICAgICB0ZXh0U2l6ZTogaXRlbVsndGV4dFNpemUnXSB8fCAnbWQnLFxuICAgICAgY3VzdG9tQ2xhc3M6IGl0ZW1bJ2N1c3RvbUNsYXNzJ10gfHwgJycsXG4gICAgICBtb2RpZmllcjogaXRlbVsnbW9kaWZpZXInXSB8fCAnJyxcbiAgICAgIHZhbHVlOiBpdGVtWydwcm9wZXJ0eVBhdGhzJ10/LnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnIpID0+IHByZXYgKyB0aGlzLmdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgY3VyciksXG4gICAgICAgICcnXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHJpbmdGcm9tRG9jdW1lbnRQYXRoKGl0ZW0sIHBhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXS5pbmRleE9mKHBhdGgpID4gMCA/ICcgJyA6ICcnO1xuICAgIGxldCBzdHJpbmcgPSB0aGlzLmdldE5lc3RlZFByb3BlcnR5KHRoaXMuZG9jdW1lbnQuY29udGVudCwgcGF0aCwgaXRlbVsnbm9WYWx1ZVRleHQnXSkgfHwgJyc7XG4gICAgY29uc3QgZGF0ZUZvcm1hdHMgPSBbbW9tZW50LklTT184NjAxLCAnTU0tREQtWVlZWScsICdERC1NTS1ZWVlZJywgJ1lZWVktTU0tREQnXTtcbiAgICBzd2l0Y2ggKGl0ZW1bJ21vZGlmaWVyJ10pIHtcbiAgICAgIGNhc2UgJ2FnZSc6IHtcbiAgICAgICAgaWYgKG1vbWVudChzdHJpbmcsIGRhdGVGb3JtYXRzLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBzdHJpbmcgPSBtb21lbnQoKS5kaWZmKHN0cmluZywgJ3llYXJzJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChtb21lbnQoc3RyaW5nLCBkYXRlRm9ybWF0cywgdHJ1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgc3RyaW5nID0gbW9tZW50KHN0cmluZykuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArIHN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkUHJvcGVydHkob2JqOiBhbnksIHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50T2JqZWN0LCBrZXkpID0+IGN1cnJlbnRPYmplY3Q/LltrZXldLCBvYmopIHx8IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QnJlYWRjcnVtYigpOiB2b2lkIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNldFNlY29uZEJyZWFkY3J1bWIoe1xuICAgICAgcm91dGU6IFtgL2Rvc3NpZXJzLyR7dGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lfWBdLFxuICAgICAgY29udGVudDogdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGUsXG4gICAgICBocmVmOiBgL2Rvc3NpZXJzLyR7dGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lfWAsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgY2FuQXNzaWduOiBjYW5Bc3NpZ24kIHwgYXN5bmMsXG4gICAgY2FuQ2xhaW06IGNhbkNsYWltJCB8IGFzeW5jLFxuICAgIGNhbkhhdmVBc3NpZ25lZTogY2FuSGF2ZUFzc2lnbmVlJCB8IGFzeW5jLFxuICAgIGRvY3VtZW50OiBkb2N1bWVudCQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwibWFpbi1jb250ZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8dmFsdGltby13aWRnZXQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1saWdodCBjYXJkLWhlYWRlci1kaXZpZGVyIHBiLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2FzZURldGFpbEhlYWRlcjtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogb2JzLmRvY3VtZW50LFxuICAgICAgICAgICAgICAgICAgICBjYW5Bc3NpZ246IG9icy5jYW5Bc3NpZ25cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtdC1tM3B4IG1iLTMgY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPHZhbHRpbW8tZXh0ZW5zaW9uXG4gICAgICAgICAgICAgICAgbW9kdWxlPVwiZG9zc2llclwiXG4gICAgICAgICAgICAgICAgcGFnZT1cImRvc3NpZXItZGV0YWlsXCJcbiAgICAgICAgICAgICAgICBzZWN0aW9uPVwiY2FyZC1oZWFkZXJcIlxuICAgICAgICAgICAgICA+PC92YWx0aW1vLWV4dGVuc2lvbj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGNsYWltQnV0dG9uO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge2NhbkNsYWltOiBvYnMuY2FuQ2xhaW0sIGNhbkhhdmVBc3NpZ25lZTogb2JzLmNhbkhhdmVBc3NpZ25lZX1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPT09IDAgPyAnTm8gYWN0aW9uJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwic3RhcnRQcm9jZXNzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdkb3NzaWVyLnN0YXJ0U3ViUHJvY2VzcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWwtMSBtZGkgbWRpLWNoZXZyb24tZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInN0YXJ0UHJvY2Vzc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uIG9mIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uPy5pZD8ucHJvY2Vzc0RlZmluaXRpb25LZXkgfCB0cmFuc2xhdGUpICE9PVxuICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5pZC5wcm9jZXNzRGVmaW5pdGlvbktleSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5wcm9jZXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDx1bCAqbmdJZj1cInRhYkxvYWRlclwiIGNsYXNzPVwibmF2IG5hdi10YWJzXCI+XG4gICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYkxvYWRlci50YWJzXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiB0YWIuaXNBY3RpdmUoKX1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidGFiTG9hZGVyLmxvYWQodGFiKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICBpZD1cInt7IHRhYi5uYW1lIH19LXRhYlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRhYiB8IHRhYlRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGJnLXdoaXRlIHAtNSBwb3NpdGlvbi1yZWxhdGl2ZSB0YWItY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdUYWJzJCB8IGFzeW5jXCIgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICAqbmdJZj1cIm5vVGFic0NvbmZpZ3VyZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLnRhYnMubm9SZXN1bHRzRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInZG9zc2llci50YWJzLm5vUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFiQ29udGFpbmVyPjwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWxcbiAgICAgIChmb3JtU3VibWl0KT1cInRhYkxvYWRlci5yZWZyZXNoVmlldygpXCJcbiAgICAgICNzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI2Nhc2VEZXRhaWxIZWFkZXJcbiAgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiXG4gIGxldC1kb2N1bWVudD1cImRvY3VtZW50XCJcbiAgbGV0LWNhbkFzc2lnbj1cImNhbkFzc2lnblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5sZW5ndGggPiAwOyBlbHNlIGRlZmF1bHRUaXRsZVwiPlxuICAgIDxzcGFuXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21Eb3NzaWVySGVhZGVySXRlbXNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBoMTogaXRlbS50ZXh0U2l6ZSA9PT0gJ3hsJyxcbiAgICAgICAgaDI6IGl0ZW0udGV4dFNpemUgPT09ICdsZycsXG4gICAgICAgIGgzOiBpdGVtLnRleHRTaXplID09PSAnbWQnLFxuICAgICAgICBoNDogaXRlbS50ZXh0U2l6ZSA9PT0gJ3NtJyxcbiAgICAgICAgaDU6IGl0ZW0udGV4dFNpemUgPT09ICd4cydcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJtYi0wIG10LTAgcGItMiBhbGlnbi1zZWxmLWVuZCBjb2wteGwte3sgaXRlbS5jb2x1bW5TaXplIH19IGNvbC1sZy17e1xuICAgICAgICBpdGVtLmNvbHVtblNpemUgKiAyXG4gICAgICB9fSB7eyBpdGVtLmN1c3RvbUNsYXNzIH19XCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubGFiZWxcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubGFiZWwgJiYgaXRlbS52YWx1ZVwiPjogPC9zcGFuPlxuXG4gICAgICA8c3Ryb25nPnt7IGl0ZW0udmFsdWUgfX08L3N0cm9uZz5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FzZURldGFpbEFzc2lnbmVlO1xuICAgICAgY29udGV4dDoge2NhbkhhdmVBc3NpZ25lZTogY2FuSGF2ZUFzc2lnbmVlLCBkb2N1bWVudDogZG9jdW1lbnQsIGNhbkFzc2lnbjogY2FuQXNzaWdufVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRpdGxlPlxuICA8ZGl2IGNsYXNzPVwicm93IG1sLTAgbXItMFwiPnt7IGRvY3VtZW50RGVmaW5pdGlvbk5hbWVUaXRsZT8udHJpbSgpIH19PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI2Nhc2VEZXRhaWxBc3NpZ25lZVxuICBsZXQtY2FuSGF2ZUFzc2lnbmVlPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgbGV0LWRvY3VtZW50PVwiZG9jdW1lbnRcIlxuICBsZXQtY2FuQXNzaWduPVwiY2FuQXNzaWduXCJcbj5cbiAgPGRpdiBjbGFzcz1cInJvdyBtbC0wIG1yLTAgbXQtMSBtYi0xXCIgKm5nSWY9XCJjYW5IYXZlQXNzaWduZWUgJiYgZG9jdW1lbnRcIj5cbiAgICA8dmFsdGltby1kb3NzaWVyLWFzc2lnbi11c2VyXG4gICAgICAqbmdJZj1cImNhbkFzc2lnbkxvYWRlZCQgfCBhc3luY1wiXG4gICAgICBbYXNzaWduZWVGdWxsTmFtZV09XCJkb2N1bWVudD8uYXNzaWduZWVGdWxsTmFtZVwiXG4gICAgICBbYXNzaWduZWVJZF09XCJkb2N1bWVudC5hc3NpZ25lZUlkXCJcbiAgICAgIFtkb2N1bWVudElkXT1cImRvY3VtZW50LmlkXCJcbiAgICAgIFtoYXNQZXJtaXNzaW9uXT1cImNhbkFzc2lnblwiXG4gICAgICAoYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKT1cImFzc2lnbm1lbnRPZkRvY3VtZW50Q2hhbmdlZCgpXCJcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItYXNzaWduLXVzZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjbGFpbUJ1dHRvbiBsZXQtY2FuQ2xhaW09XCJjYW5DbGFpbVwiIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIj5cbiAgPGRpdiBjbGFzcz1cInVzZXItZnVsbC1uYW1lXCIgKm5nSWY9XCJjYW5DbGFpbSAmJiBjYW5IYXZlQXNzaWduZWVcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiKGlzQXNzaWduaW5nJCB8IGFzeW5jKSB8fCAoaXNBc3NpZ25lZFRvQ3VycmVudFVzZXIkIHwgYXN5bmMpXCJcbiAgICAgIChjbGljayk9XCJjbGFpbUFzc2lnbmVlKClcIlxuICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeSBtci0xXCJcbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyAnZG9zc2llci5jbGFpbUFzc2lnbmVlQ2FzZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -14,39 +14,55 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Component } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, map, startWith, switchMap, tap } from 'rxjs';
|
|
17
18
|
import * as i0 from "@angular/core";
|
|
18
19
|
import * as i1 from "@angular/router";
|
|
19
20
|
import * as i2 from "@valtimo/document";
|
|
20
21
|
import * as i3 from "@angular/common";
|
|
21
22
|
import * as i4 from "@valtimo/process";
|
|
22
|
-
import * as i5 from "@
|
|
23
|
+
import * as i5 from "@valtimo/components";
|
|
23
24
|
import * as i6 from "carbon-components-angular";
|
|
24
25
|
import * as i7 from "@ngx-translate/core";
|
|
25
26
|
export class DossierDetailTabProgressComponent {
|
|
26
27
|
constructor(route, documentService) {
|
|
27
28
|
this.route = route;
|
|
28
29
|
this.documentService = documentService;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
this.processDocumentInstances$ = this.route.paramMap.pipe(switchMap((params) => this.documentService.findProcessDocumentInstances(params.get('documentId'))), map(processDocumentInstances => processDocumentInstances.map(processDocumentInstance => ({
|
|
31
|
+
...processDocumentInstance,
|
|
32
|
+
startedOn: new Date(processDocumentInstance.startedOn),
|
|
33
|
+
}))), map(processDocumentInstances => processDocumentInstances.sort((a, b) => a.active === b.active
|
|
34
|
+
? b.startedOn.getTime() - a.startedOn.getTime()
|
|
35
|
+
: a.active
|
|
36
|
+
? -1
|
|
37
|
+
: 1)), tap(processDocumentInstances => {
|
|
37
38
|
if (processDocumentInstances.length > 0) {
|
|
38
|
-
this.selectedProcessInstanceId
|
|
39
|
+
this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);
|
|
39
40
|
}
|
|
40
|
-
});
|
|
41
|
+
}));
|
|
42
|
+
this.processInstanceItems$ = this.processDocumentInstances$.pipe(map(processDocumentInstances => processDocumentInstances.map((processDocumentInstance, index) => ({
|
|
43
|
+
processInstanceId: processDocumentInstance.id.processInstanceId,
|
|
44
|
+
content: processDocumentInstance.processName || '-',
|
|
45
|
+
selected: index === 0,
|
|
46
|
+
}))), map(processInstanceItems => ({
|
|
47
|
+
value: processInstanceItems,
|
|
48
|
+
isLoading: false,
|
|
49
|
+
})), startWith({ isLoading: true }));
|
|
50
|
+
this.selectedProcessInstanceId$ = new BehaviorSubject(null);
|
|
51
|
+
this.selectedProcessInstance$ = combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(map(([processDocumentInstances, selectedProcessInstanceId]) => processDocumentInstances.find(instance => instance.id.processInstanceId === selectedProcessInstanceId)), map(processInstanceItems => ({
|
|
52
|
+
value: processInstanceItems,
|
|
53
|
+
isLoading: false,
|
|
54
|
+
})), startWith({ isLoading: true }));
|
|
41
55
|
}
|
|
42
56
|
loadProcessInstance(processInstanceId) {
|
|
43
|
-
|
|
57
|
+
if (!!processInstanceId) {
|
|
58
|
+
this.selectedProcessInstanceId$.next(processInstanceId);
|
|
59
|
+
}
|
|
44
60
|
}
|
|
45
61
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabProgressComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DocumentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabProgressComponent, selector: "valtimo-dossier-detail-tab-progress", ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<
|
|
62
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabProgressComponent, selector: "valtimo-dossier-detail-tab-progress", ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n", styles: [".full-height-tab-content{height:calc(100vh - 380px);width:100%}.process-info-row{display:flex;gap:24px}.process-info-text{color:var(--v-color-black);font-size:var(--v-font-size-default)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: ["processDefinitionKey", "processInstanceId"], outputs: ["importDone"] }, { kind: "component", type: i5.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i6.SkeletonText, selector: "cds-skeleton-text, ibm-skeleton-text", inputs: ["lines", "minLineWidth", "maxLineWidth"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
|
|
47
63
|
}
|
|
48
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabProgressComponent, decorators: [{
|
|
49
65
|
type: Component,
|
|
50
|
-
args: [{ selector: 'valtimo-dossier-detail-tab-progress', template: "<!--\n ~ Copyright 2015-2023 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<
|
|
66
|
+
args: [{ selector: 'valtimo-dossier-detail-tab-progress', template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n", styles: [".full-height-tab-content{height:calc(100vh - 380px);width:100%}.process-info-row{display:flex;gap:24px}.process-info-text{color:var(--v-color-black);font-size:var(--v-font-size-default)}\n"] }]
|
|
51
67
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.DocumentService }]; } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVaEQsTUFBTSxPQUFPLGlDQUFpQztJQUs1QyxZQUNVLEtBQXFCLEVBQ3JCLGVBQWdDO1FBRGhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUV4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlO2FBQ2pCLDRCQUE0QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDN0MsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNyRSxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQztZQUNGLElBQUksd0JBQXdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUNuRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGlCQUF5QjtRQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsaUJBQWlCLENBQUM7SUFDckQsQ0FBQzsrR0E1QlUsaUNBQWlDO21HQUFqQyxpQ0FBaUMsMkVDMUI5QyxzbERBNENBOzs0RkRsQmEsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1Byb2Nlc3NEb2N1bWVudEluc3RhbmNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLXByb2dyZXNzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiUHJvZ3Jlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzOiBQcm9jZXNzRG9jdW1lbnRJbnN0YW5jZVtdO1xuICBwdWJsaWMgc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2VcbiAgKSB7XG4gICAgY29uc3Qgc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwO1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IHNuYXBzaG90LmdldCgnZG9jdW1lbnRJZCcpIHx8ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgIC5maW5kUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzKHRoaXMuZG9jdW1lbnRJZClcbiAgICAgIC5zdWJzY3JpYmUocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMgPSBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICBhLmlzQWN0aXZlID09PSBiLmlzQWN0aXZlID8gMCA6IGEuaXNBY3RpdmUgPyAtMSA6IDFcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZUlkID0gcHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzWzBdLmlkLnByb2Nlc3NJbnN0YW5jZUlkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0luc3RhbmNlKHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlSWQgPSBwcm9jZXNzSW5zdGFuY2VJZDtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2XG4gIGNsYXNzPVwiZnVsbC1oZWlnaHQtdGFiLWNvbnRlbnRcIlxuICAqbmdJZj1cIlxuICAgIHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyAmJiBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMubGVuZ3RoID4gMDtcbiAgICBlbHNlIGVtcHR5UHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgIDxsYWJlbD48c3Ryb25nPlByb2Nlc3M8L3N0cm9uZz48L2xhYmVsXG4gICAgPjxiciAvPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAoY2hhbmdlKT1cImxvYWRQcm9jZXNzSW5zdGFuY2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlIG9mIHByb2Nlc3NEb2N1bWVudEluc3RhbmNlc1wiXG4gICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZS5pZC5wcm9jZXNzSW5zdGFuY2VJZFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFByb2Nlc3NJbnN0YW5jZUlkID09PSBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZS5pZC5wcm9jZXNzSW5zdGFuY2VJZFwiXG4gICAgICA+XG4gICAgICAgIHt7IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlLnByb2Nlc3NOYW1lIH19XG4gICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG4gIDx2YWx0aW1vLXByb2Nlc3MtZGlhZ3JhbVxuICAgIFtwcm9jZXNzSW5zdGFuY2VJZF09XCJzZWxlY3RlZFByb2Nlc3NJbnN0YW5jZUlkXCJcbiAgPjwvdmFsdGltby1wcm9jZXNzLWRpYWdyYW0+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVByb2Nlc3NEb2N1bWVudEluc3RhbmNlcz5cbiAgPHNwYW4+IHt7ICdwcm9ncmVzcy5ub1Byb2Nlc3NEb2N1bWVudEluc3RhbmNlcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUWhHLE1BQU0sT0FBTyxpQ0FBaUM7SUEyRDVDLFlBQ21CLEtBQXFCLEVBQ3JCLGVBQWdDO1FBRGhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTVEbEMsOEJBQXlCLEdBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUM1RSxFQUNELEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQzdCLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxHQUFHLHVCQUF1QjtZQUMxQixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO1NBQ3ZELENBQUMsQ0FBQyxDQUNKLEVBQ0QsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FDN0Isd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3JDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07WUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUNWLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUMsQ0FDTixDQUNGLEVBQ0QsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7WUFDN0IsSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3hGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVZLDBCQUFxQixHQUNuQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUM3Qix3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEUsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsRUFBRSxDQUFDLGlCQUFpQjtZQUMvRCxPQUFPLEVBQUUsdUJBQXVCLENBQUMsV0FBVyxJQUFJLEdBQUc7WUFDbkQsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDO1NBQ3RCLENBQUMsQ0FBQyxDQUNKLEVBQ0QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDLEVBQ0gsU0FBUyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQzdCLENBQUM7UUFFWSwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDdEUsNkJBQXdCLEdBQ3RDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsQ0FDNUQsd0JBQXdCLENBQUMsSUFBSSxDQUMzQixRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEtBQUsseUJBQXlCLENBQ3hFLENBQ0YsRUFDRCxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0IsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUMsRUFDSCxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FDN0IsQ0FBQztJQUtELENBQUM7SUFFRyxtQkFBbUIsQ0FBQyxpQkFBeUI7UUFDbEQsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzsrR0FwRVUsaUNBQWlDO21HQUFqQyxpQ0FBaUMsMkVDM0I5QyxpbEdBOEVBOzs0RkRuRGEsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2UsIExvYWRlZFZhbHVlLCBQcm9jZXNzRG9jdW1lbnRJbnN0YW5jZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmVzcy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxUYWJQcm9ncmVzc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzJDogT2JzZXJ2YWJsZTxBcnJheTxQcm9jZXNzRG9jdW1lbnRJbnN0YW5jZT4+ID1cbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMocGFyYW1zLmdldCgnZG9jdW1lbnRJZCcpKVxuICAgICAgKSxcbiAgICAgIG1hcChwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMgPT5cbiAgICAgICAgcHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzLm1hcChwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZSA9PiAoe1xuICAgICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlLFxuICAgICAgICAgIHN0YXJ0ZWRPbjogbmV3IERhdGUocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2Uuc3RhcnRlZE9uKSxcbiAgICAgICAgfSkpXG4gICAgICApLFxuICAgICAgbWFwKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9PlxuICAgICAgICBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICBhLmFjdGl2ZSA9PT0gYi5hY3RpdmVcbiAgICAgICAgICAgID8gYi5zdGFydGVkT24uZ2V0VGltZSgpIC0gYS5zdGFydGVkT24uZ2V0VGltZSgpXG4gICAgICAgICAgICA6IGEuYWN0aXZlXG4gICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICA6IDFcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcChwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMgPT4ge1xuICAgICAgICBpZiAocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlSWQkLm5leHQocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzWzBdLmlkLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzSW5zdGFuY2VJdGVtcyQ6IE9ic2VydmFibGU8TG9hZGVkVmFsdWU8QXJyYXk8TGlzdEl0ZW0+Pj4gPVxuICAgIHRoaXMucHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzJC5waXBlKFxuICAgICAgbWFwKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9PlxuICAgICAgICBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMubWFwKChwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgcHJvY2Vzc0luc3RhbmNlSWQ6IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlLmlkLnByb2Nlc3NJbnN0YW5jZUlkLFxuICAgICAgICAgIGNvbnRlbnQ6IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlLnByb2Nlc3NOYW1lIHx8ICctJyxcbiAgICAgICAgICBzZWxlY3RlZDogaW5kZXggPT09IDAsXG4gICAgICAgIH0pKVxuICAgICAgKSxcbiAgICAgIG1hcChwcm9jZXNzSW5zdGFuY2VJdGVtcyA9PiAoe1xuICAgICAgICB2YWx1ZTogcHJvY2Vzc0luc3RhbmNlSXRlbXMsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICB9KSksXG4gICAgICBzdGFydFdpdGgoe2lzTG9hZGluZzogdHJ1ZX0pXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2VJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2UkOiBPYnNlcnZhYmxlPExvYWRlZFZhbHVlPFByb2Nlc3NEb2N1bWVudEluc3RhbmNlPj4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzJCwgdGhpcy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZUlkJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMsIHNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlSWRdKSA9PlxuICAgICAgICBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMuZmluZChcbiAgICAgICAgICBpbnN0YW5jZSA9PiBpbnN0YW5jZS5pZC5wcm9jZXNzSW5zdGFuY2VJZCA9PT0gc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2VJZFxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKHByb2Nlc3NJbnN0YW5jZUl0ZW1zID0+ICh7XG4gICAgICAgIHZhbHVlOiBwcm9jZXNzSW5zdGFuY2VJdGVtcyxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH0pKSxcbiAgICAgIHN0YXJ0V2l0aCh7aXNMb2FkaW5nOiB0cnVlfSlcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0luc3RhbmNlKHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoISFwcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZUlkJC5uZXh0KHByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICBjbGFzcz1cImZ1bGwtaGVpZ2h0LXRhYi1jb250ZW50XCJcbiAgKm5nSWY9XCJ7XG4gICAgcHJvY2Vzc0luc3RhbmNlSXRlbXM6IHByb2Nlc3NJbnN0YW5jZUl0ZW1zJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlOiBzZWxlY3RlZFByb2Nlc3NJbnN0YW5jZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxzcGFuICpuZ0lmPVwiIW9icy5wcm9jZXNzSW5zdGFuY2VJdGVtcy5pc0xvYWRpbmcgJiYgIW9icy5wcm9jZXNzSW5zdGFuY2VJdGVtcy52YWx1ZVwiPnt7XG4gICAgJ3Byb2dyZXNzLm5vUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzJyB8IHRyYW5zbGF0ZVxuICB9fTwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cInByb2Nlc3MtaW5mby1yb3dcIj5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICAgIFtsYWJlbF09XCIncHJvZ3Jlc3MucHJvY2VzcycgfCB0cmFuc2xhdGVcIlxuICAgICAgW3NrZWxldG9uXT1cIm9icy5wcm9jZXNzSW5zdGFuY2VJdGVtcy5pc0xvYWRpbmdcIlxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiXG4gICAgICAoc2VsZWN0ZWQpPVwibG9hZFByb2Nlc3NJbnN0YW5jZSgkZXZlbnQuaXRlbS5wcm9jZXNzSW5zdGFuY2VJZClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLnByb2Nlc3NJbnN0YW5jZUl0ZW1zLnZhbHVlIHx8IFtdXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgICA8ZGl2PlxuICAgICAgPHYtaW5wdXQtbGFiZWwgW3RpdGxlXT1cIidwcm9ncmVzcy52ZXJzaW9uJyB8IHRyYW5zbGF0ZVwiPjwvdi1pbnB1dC1sYWJlbD5cbiAgICAgIDxjZHMtc2tlbGV0b24tdGV4dFxuICAgICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZS5pc0xvYWRpbmdcIlxuICAgICAgICBbbGluZXNdPVwiMVwiXG4gICAgICAgIFttYXhMaW5lV2lkdGhdPVwiMzBcIlxuICAgICAgPjwvY2RzLXNrZWxldG9uLXRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFvYnMuc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2UuaXNMb2FkaW5nXCIgY2xhc3M9XCJwcm9jZXNzLWluZm8tdGV4dFwiPlxuICAgICAgICB7eyBvYnMuc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2UudmFsdWUudmVyc2lvbiB9fSAoe3sgJ3Byb2dyZXNzLm9mJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICB7eyBvYnMuc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2UudmFsdWUubGF0ZXN0VmVyc2lvbiB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPHYtaW5wdXQtbGFiZWwgW3RpdGxlXT1cIidwcm9ncmVzcy5zdGFydGVkQnknIHwgdHJhbnNsYXRlXCI+PC92LWlucHV0LWxhYmVsPlxuICAgICAgPGNkcy1za2VsZXRvbi10ZXh0XG4gICAgICAgICpuZ0lmPVwib2JzLnNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlLmlzTG9hZGluZ1wiXG4gICAgICAgIFtsaW5lc109XCIxXCJcbiAgICAgICAgW21heExpbmVXaWR0aF09XCI1MFwiXG4gICAgICA+PC9jZHMtc2tlbGV0b24tdGV4dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIW9icy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZS5pc0xvYWRpbmdcIiBjbGFzcz1cInByb2Nlc3MtaW5mby10ZXh0XCI+XG4gICAgICAgIHt7IG9icy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZS52YWx1ZS5zdGFydGVkQnkgfHwgKCdwcm9ncmVzcy5zeXN0ZW0nIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8di1pbnB1dC1sYWJlbCBbdGl0bGVdPVwiJ3Byb2dyZXNzLnN0YXJ0ZWRPbicgfCB0cmFuc2xhdGVcIj48L3YtaW5wdXQtbGFiZWw+XG4gICAgICA8Y2RzLXNrZWxldG9uLXRleHRcbiAgICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWRQcm9jZXNzSW5zdGFuY2UuaXNMb2FkaW5nXCJcbiAgICAgICAgW2xpbmVzXT1cIjFcIlxuICAgICAgICBbbWF4TGluZVdpZHRoXT1cIjUwXCJcbiAgICAgID48L2Nkcy1za2VsZXRvbi10ZXh0PlxuICAgICAgPHNwYW4gKm5nSWY9XCIhb2JzLnNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlLmlzTG9hZGluZ1wiIGNsYXNzPVwicHJvY2Vzcy1pbmZvLXRleHRcIj5cbiAgICAgICAge3sgb2JzLnNlbGVjdGVkUHJvY2Vzc0luc3RhbmNlLnZhbHVlLnN0YXJ0ZWRPbi50b0xvY2FsZURhdGVTdHJpbmcoKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8dmFsdGltby1wcm9jZXNzLWRpYWdyYW1cbiAgICAgICpuZ0lmPVwiIW9icy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZS5pc0xvYWRpbmdcIlxuICAgICAgW3Byb2Nlc3NJbnN0YW5jZUlkXT1cIm9icy5zZWxlY3RlZFByb2Nlc3NJbnN0YW5jZS52YWx1ZS5pZC5wcm9jZXNzSW5zdGFuY2VJZFwiXG4gICAgPjwvdmFsdGltby1wcm9jZXNzLWRpYWdyYW0+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -18,7 +18,6 @@ import { CAN_VIEW_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, } from '@val
|
|
|
18
18
|
import { FormioOptionsImpl } from '@valtimo/components';
|
|
19
19
|
import moment from 'moment';
|
|
20
20
|
import { BehaviorSubject, combineLatest, of, Subscription, switchMap } from 'rxjs';
|
|
21
|
-
import { catchError } from 'rxjs/operators';
|
|
22
21
|
import * as i0 from "@angular/core";
|
|
23
22
|
import * as i1 from "@angular/router";
|
|
24
23
|
import * as i2 from "@valtimo/document";
|
|
@@ -98,14 +97,11 @@ export class DossierDetailTabSummaryComponent {
|
|
|
98
97
|
.getProcessInstanceTasks(processInstanceId)
|
|
99
98
|
.pipe(switchMap(tasks => combineLatest([
|
|
100
99
|
of(tasks),
|
|
101
|
-
...tasks.map(task => this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {
|
|
100
|
+
...(tasks || []).map(task => this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {
|
|
102
101
|
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
103
102
|
identifier: task.id,
|
|
104
103
|
})),
|
|
105
|
-
]))
|
|
106
|
-
this.loadingTasks$.next(false);
|
|
107
|
-
return of(null);
|
|
108
|
-
}))
|
|
104
|
+
])))
|
|
109
105
|
.subscribe(res => {
|
|
110
106
|
const tasks = res?.[0];
|
|
111
107
|
const permissions = res?.filter((_, index) => index !== 0);
|
|
@@ -122,13 +118,13 @@ export class DossierDetailTabSummaryComponent {
|
|
|
122
118
|
}));
|
|
123
119
|
}
|
|
124
120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabSummaryComponent, deps: [{ token: i1.Router }, { token: i2.DocumentService }, { token: i3.TaskService }, { token: i4.ProcessService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ActivatedRoute }, { token: i5.FormService }, { token: i6.UserProviderService }, { token: i7.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabSummaryComponent, selector: "valtimo-dossier-detail-tab-summary", viewQueries: [{ propertyName: "taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabSummaryComponent, selector: "valtimo-dossier-detail-tab-summary", viewQueries: [{ propertyName: "taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"!tasks.length\">\n <valtimo-widget>\n <div class=\"p-3\">\n <img class=\"float-left\" src=\"assets/audit-2.png\" height=\"25\" />\n <span class=\"float-right\">{{ 'summary.userTasksDoneState' | translate }}</span>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </ng-container>\n\n <ng-container *ngFor=\"let task of tasks\">\n <valtimo-widget>\n <div\n *ngIf=\"!task.isLocked\"\n class=\"p-3 clickable hoverable\"\n (click)=\"rowTaskClick(task)\"\n >\n <span class=\"float-right badge badge-pill badge-primary\">{{\n 'summary.taskOpen' | translate\n }}</span>\n <strong>{{ task.name }}</strong>\n <div class=\"mt-1\">{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n <div class=\"p-3 hoverable\" *ngIf=\"task.isLocked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ 'summary.taskLocked' | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n <strong>{{ task.name }}</strong>\n <div>{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"init()\"\n (assignmentOfTaskChanged)=\"init()\"\n ></valtimo-task-detail-modal>\n </div>\n </div>\n</div>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.hoverable:hover{background-color:#eee}.summaryForm .formio-component{margin-bottom:0!important}.summaryForm .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.summaryForm .formio-field div[ref=element] .form-control{font-weight:400}.summaryForm .formio-value div[ref=element] .form-control{font-weight:700}.user-tasks-title{margin-top:0;margin-bottom:12px;font-weight:400;color:#000;height:20px}.loading-container{display:flex;width:100%;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i9.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i3.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
126
122
|
}
|
|
127
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabSummaryComponent, decorators: [{
|
|
128
124
|
type: Component,
|
|
129
|
-
args: [{ selector: 'valtimo-dossier-detail-tab-summary', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"
|
|
125
|
+
args: [{ selector: 'valtimo-dossier-detail-tab-summary', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"!tasks.length\">\n <valtimo-widget>\n <div class=\"p-3\">\n <img class=\"float-left\" src=\"assets/audit-2.png\" height=\"25\" />\n <span class=\"float-right\">{{ 'summary.userTasksDoneState' | translate }}</span>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </ng-container>\n\n <ng-container *ngFor=\"let task of tasks\">\n <valtimo-widget>\n <div\n *ngIf=\"!task.isLocked\"\n class=\"p-3 clickable hoverable\"\n (click)=\"rowTaskClick(task)\"\n >\n <span class=\"float-right badge badge-pill badge-primary\">{{\n 'summary.taskOpen' | translate\n }}</span>\n <strong>{{ task.name }}</strong>\n <div class=\"mt-1\">{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n <div class=\"p-3 hoverable\" *ngIf=\"task.isLocked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ 'summary.taskLocked' | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n <strong>{{ task.name }}</strong>\n <div>{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"init()\"\n (assignmentOfTaskChanged)=\"init()\"\n ></valtimo-task-detail-modal>\n </div>\n </div>\n</div>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.hoverable:hover{background-color:#eee}.summaryForm .formio-component{margin-bottom:0!important}.summaryForm .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.summaryForm .formio-field div[ref=element] .form-control{font-weight:400}.summaryForm .formio-value div[ref=element] .form-control{font-weight:700}.user-tasks-title{margin-top:0;margin-bottom:12px;font-weight:400;color:#000;height:20px}.loading-container{display:flex;width:100%;justify-content:center}\n"] }]
|
|
130
126
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.DocumentService }, { type: i3.TaskService }, { type: i4.ProcessService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ActivatedRoute }, { type: i5.FormService }, { type: i6.UserProviderService }, { type: i7.PermissionService }]; }, propDecorators: { taskDetail: [{
|
|
131
127
|
type: ViewChild,
|
|
132
128
|
args: ['taskDetail']
|
|
133
129
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi9zdW1tYXJ5L3N1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvc3VtbWFyeS9zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFLVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsK0JBQStCLEdBR2hDLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQztBQVEzQyxNQUFNLE9BQU8sZ0NBQWdDO0lBZTNDLFlBQ21CLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixjQUE4QixFQUM5QixFQUFjLEVBQ2Qs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OlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0luc3RhbmNlVGFzaywgUHJvY2Vzc1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnQsIERvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTixcbiAgVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbiAgVGFza0RldGFpbE1vZGFsQ29tcG9uZW50LFxuICBUYXNrU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge0Zvcm1TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9mb3JtJztcbmltcG9ydCB7Rm9ybWlvT3B0aW9uc0ltcGwsIFZhbHRpbW9Gb3JtaW9PcHRpb25zfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9hY2Nlc3MtY29udHJvbCc7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcbm1vbWVudC5kZWZhdWx0Rm9ybWF0ID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItc3VtbWFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdW1tYXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VtbWFyeS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiU3VtbWFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndGFza0RldGFpbCcpIHRhc2tEZXRhaWw6IFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudDtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEb2N1bWVudEluc3RhbmNlczogUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VbXSA9IFtdO1xuICBwcml2YXRlIHNuYXBzaG90OiBQYXJhbU1hcDtcbiAgcHVibGljIHRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10gPSBbXTtcbiAgcHVibGljIG1vbWVudDtcbiAgcHVibGljIGZvcm1EZWZpbml0aW9uOiBGb3JtaW9Gb3JtID0gbnVsbDtcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgcm9sZXM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuc25hcHNob3QuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgfHwgJyc7XG4gICAgdGhpcy5kb2N1bWVudElkID0gdGhpcy5zbmFwc2hvdC5nZXQoJ2RvY3VtZW50SWQnKSB8fCAnJztcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgRm9ybWlvT3B0aW9uc0ltcGwoKTtcbiAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZUFsZXJ0cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb21lbnQgPSBtb21lbnQ7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnQodGhpcy5kb2N1bWVudElkKS5zdWJzY3JpYmUoZG9jdW1lbnQgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2VcbiAgICAgICAgLmdldEZvcm1EZWZpbml0aW9uQnlOYW1lUHJlRmlsbGVkKGAke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX0uc3VtbWFyeWAsIHRoaXMuZG9jdW1lbnRJZClcbiAgICAgICAgLnN1YnNjcmliZShmb3JtRGVmaW5pdGlvbiA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IGZvcm1EZWZpbml0aW9uO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZS5nZXRVc2VyU3ViamVjdCgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgdGhpcy5yb2xlcyA9IHVzZXIucm9sZXM7XG4gICAgICAgIHRoaXMudGFza3MgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzKHRoaXMuZG9jdW1lbnRJZCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyhkb2N1bWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAgIC5maW5kUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzKGRvY3VtZW50SWQpXG4gICAgICAgIC5zdWJzY3JpYmUocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzID0+IHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcy5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVRhc2tzKGluc3RhbmNlLmlkLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJvd1Rhc2tDbGljayh0YXNrOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJvY2Vzc0luc3RhbmNlVGFza3MocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wcm9jZXNzU2VydmljZVxuICAgICAgICAuZ2V0UHJvY2Vzc0luc3RhbmNlVGFza3MocHJvY2Vzc0luc3RhbmNlSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCh0YXNrcyA9PlxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgIG9mKHRhc2tzKSxcbiAgICAgICAgICAgICAgLi4udGFza3MubWFwKHRhc2sgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHRhc2suaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2tzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBjb25zdCB0YXNrcyA9IHJlcz8uWzBdO1xuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gcmVzPy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG5cbiAgICAgICAgICBpZiAoISF0YXNrcykge1xuICAgICAgICAgICAgdGFza3MuZm9yRWFjaCgodGFzaywgdGFza0luZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHRhc2suY3JlYXRlZFVuaXggPSB0aGlzLm1vbWVudCh0YXNrLmNyZWF0ZWQpLnVuaXgoKTtcbiAgICAgICAgICAgICAgdGFzay5jcmVhdGVkID0gdGhpcy5tb21lbnQodGFzay5jcmVhdGVkKS5mb3JtYXQoJ0REIE1NTSBZWVlZIEhIOm1tJyk7XG4gICAgICAgICAgICAgIHRhc2suaXNMb2NrZWQgPSAhcGVybWlzc2lvbnNbdGFza0luZGV4XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy50YXNrcyA9IHRoaXMudGFza3MuY29uY2F0KHRhc2tzKTtcbiAgICAgICAgICAgIHRoaXMudGFza3Muc29ydCgodDEsIHQyKSA9PiB0Mi5jcmVhdGVkVW5peCAtIHQxLmNyZWF0ZWRVbml4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJ7bG9hZGluZ1Rhc2tzOiBsb2FkaW5nVGFza3MkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8ZGl2IGNsYXNzPVwicm93IHB5LTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IGNvbC14bC05XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1EZWZpbml0aW9uXCIgY2xhc3M9XCJzdW1tYXJ5Rm9ybVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICA8dmFsdGltby1mb3JtLWlvIFtmb3JtXT1cImZvcm1EZWZpbml0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPjwvdmFsdGltby1mb3JtLWlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLUN1cnJlbnQgdXNlciB0YXNrcyByaWdodCBzaWRlLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wteGwtM1wiPlxuICAgICAgPGg0IGNsYXNzPVwidXNlci10YXNrcy10aXRsZVwiPnt7ICdzdW1tYXJ5LnVzZXJUYXNrcycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvYnMubG9hZGluZ1Rhc2tzOyBlbHNlIGxvYWRpbmdUYXNrc1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGFza3MgfCBpc0FycmF5OiAxKSA9PT0gZmFsc2VcIj5cbiAgICAgICAgICA8dmFsdGltby13aWRnZXQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmbG9hdC1sZWZ0XCIgc3JjPVwiYXNzZXRzL2F1ZGl0LTIucG5nXCIgaGVpZ2h0PVwiMjVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+e3sgJ3N1bW1hcnkudXNlclRhc2tzRG9uZVN0YXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza3MgfCBpc0FycmF5OiAxXCI+XG4gICAgICAgICAgPHZhbHRpbW8td2lkZ2V0ICpuZ0Zvcj1cImxldCB0YXNrIG9mIHRhc2tzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRhc2suaXNMb2NrZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtMyBjbGlja2FibGUgaG92ZXJhYmxlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJvd1Rhc2tDbGljayh0YXNrKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHQgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+e3tcbiAgICAgICAgICAgICAgICAnc3VtbWFyeS50YXNrT3BlbicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGFzay5uYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCI+e3sgJ3N1bW1hcnkudGFza0NyZWF0ZWQnIHwgdHJhbnNsYXRlIH19IHt7IHRhc2suY3JlYXRlZCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIGhvdmVyYWJsZVwiICpuZ0lmPVwidGFzay5pc0xvY2tlZFwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxvYXQtcmlnaHQgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgYmctZ3JleVwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7ICdzdW1tYXJ5LnRhc2tMb2NrZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWxvY2tcIj48L2k+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0YXNrLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGRpdj57eyAnc3VtbWFyeS50YXNrQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX0ge3sgdGFzay5jcmVhdGVkIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dmFsdGltby10YXNrLWRldGFpbC1tb2RhbFxuICAgICAgICAjdGFza0RldGFpbFxuICAgICAgICAoZm9ybVN1Ym1pdCk9XCJpbml0KClcIlxuICAgICAgICAoYXNzaWdubWVudE9mVGFza0NoYW5nZWQpPVwiaW5pdCgpXCJcbiAgICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1Rhc2tzVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgIDxjZHMtbG9hZGluZyBzaXplPVwic21cIj48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi9zdW1tYXJ5L3N1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvc3VtbWFyeS9zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFLVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsK0JBQStCLEdBR2hDLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBR2pGLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRCxNQUFNLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFDO0FBUTNDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFlM0MsWUFDbUIsTUFBYyxFQUNkLGVBQWdDLEVBQ2hDLFdBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLEVBQWMsRUFDZCxRQUFtQixFQUNuQixLQUFxQixFQUNyQixXQUF3QixFQUN4QixtQkFBd0MsRUFDeEMsaUJBQW9DO1FBVHBDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXBCaEQsNkJBQXdCLEdBQThCLEVBQUUsQ0FBQztRQUV6RCxVQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUVsQyxtQkFBYyxHQUFlLElBQUksQ0FBQztRQUVsQyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBQ1osa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMzRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFjMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNNLElBQUk7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxXQUFXO2FBQ2IsZ0NBQWdDLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQzNGLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSw0QkFBNEIsQ0FBQyxVQUFrQjtRQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsSUFBSSxDQUFDLGVBQWU7YUFDakIsNEJBQTRCLENBQUMsVUFBVSxDQUFDO2FBQ3hDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztZQUN6RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBUztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsaUJBQXlCO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixJQUFJLENBQUMsY0FBYzthQUNoQix1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQzthQUMxQyxJQUFJLENBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2hCLGFBQWEsQ0FBQztZQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDVCxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ2pFLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxJQUFJO2dCQUM5QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUU7YUFDcEIsQ0FBQyxDQUNIO1NBQ0YsQ0FBQyxDQUNILENBQ0Y7YUFDQSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTNELElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDWCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO29CQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzlEO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7K0dBckhVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLG9MQ25EN0MsaXJHQW1GQTs7NEZEaENhLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSxvQ0FBb0MsaUJBRy9CLGlCQUFpQixDQUFDLElBQUk7NFZBR1osVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0luc3RhbmNlVGFzaywgUHJvY2Vzc1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnQsIERvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTixcbiAgVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbiAgVGFza0RldGFpbE1vZGFsQ29tcG9uZW50LFxuICBUYXNrU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge0Zvcm1TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9mb3JtJztcbmltcG9ydCB7Rm9ybWlvT3B0aW9uc0ltcGwsIFZhbHRpbW9Gb3JtaW9PcHRpb25zfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9hY2Nlc3MtY29udHJvbCc7XG5cbm1vbWVudC5sb2NhbGUobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmdLZXknKSB8fCAnJyk7XG5tb21lbnQuZGVmYXVsdEZvcm1hdCA9ICdERCBNTU0gWVlZWSBISDptbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLXN1bW1hcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N1bW1hcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhYlN1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWwnKSB0YXNrRGV0YWlsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnQ7XG4gIHB1YmxpYyBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXM6IFByb2Nlc3NEb2N1bWVudEluc3RhbmNlW10gPSBbXTtcbiAgcHJpdmF0ZSBzbmFwc2hvdDogUGFyYW1NYXA7XG4gIHB1YmxpYyB0YXNrczogUHJvY2Vzc0luc3RhbmNlVGFza1tdID0gW107XG4gIHB1YmxpYyBtb21lbnQ7XG4gIHB1YmxpYyBmb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybSA9IG51bGw7XG4gIHB1YmxpYyBvcHRpb25zOiBWYWx0aW1vRm9ybWlvT3B0aW9ucztcbiAgcHVibGljIHJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza1NlcnZpY2U6IFRhc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcDtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLnNuYXBzaG90LmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpIHx8ICcnO1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IHRoaXMuc25hcHNob3QuZ2V0KCdkb2N1bWVudElkJykgfHwgJyc7XG4gICAgdGhpcy5vcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5vcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9tZW50ID0gbW9tZW50O1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuICBwdWJsaWMgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKGRvY3VtZW50ID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRGb3JtRGVmaW5pdGlvbkJ5TmFtZVByZUZpbGxlZChgJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9LnN1bW1hcnlgLCB0aGlzLmRvY3VtZW50SWQpXG4gICAgICAgIC5zdWJzY3JpYmUoZm9ybURlZmluaXRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBmb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICAgIHRoaXMucm9sZXMgPSB1c2VyLnJvbGVzO1xuICAgICAgICB0aGlzLnRhc2tzID0gW107XG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyh0aGlzLmRvY3VtZW50SWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMoZG9jdW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZVxuICAgICAgICAuZmluZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyhkb2N1bWVudElkKVxuICAgICAgICAuc3Vic2NyaWJlKHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMgPSBwcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXM7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnRJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VUYXNrcyhpbnN0YW5jZS5pZC5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByb3dUYXNrQ2xpY2sodGFzazogYW55KTogdm9pZCB7XG4gICAgdGhpcy50YXNrRGV0YWlsLm9wZW5UYXNrRGV0YWlscyh0YXNrKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NJbnN0YW5jZVRhc2tzKHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgICAgLmdldFByb2Nlc3NJbnN0YW5jZVRhc2tzKHByb2Nlc3NJbnN0YW5jZUlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAodGFza3MgPT5cbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICBvZih0YXNrcyksXG4gICAgICAgICAgICAgIC4uLih0YXNrcyB8fCBbXSkubWFwKHRhc2sgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHRhc2suaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBjb25zdCB0YXNrcyA9IHJlcz8uWzBdO1xuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gcmVzPy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG5cbiAgICAgICAgICBpZiAoISF0YXNrcykge1xuICAgICAgICAgICAgdGFza3MuZm9yRWFjaCgodGFzaywgdGFza0luZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHRhc2suY3JlYXRlZFVuaXggPSB0aGlzLm1vbWVudCh0YXNrLmNyZWF0ZWQpLnVuaXgoKTtcbiAgICAgICAgICAgICAgdGFzay5jcmVhdGVkID0gdGhpcy5tb21lbnQodGFzay5jcmVhdGVkKS5mb3JtYXQoJ0REIE1NTSBZWVlZIEhIOm1tJyk7XG4gICAgICAgICAgICAgIHRhc2suaXNMb2NrZWQgPSAhcGVybWlzc2lvbnNbdGFza0luZGV4XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy50YXNrcyA9IHRoaXMudGFza3MuY29uY2F0KHRhc2tzKTtcbiAgICAgICAgICAgIHRoaXMudGFza3Muc29ydCgodDEsIHQyKSA9PiB0Mi5jcmVhdGVkVW5peCAtIHQxLmNyZWF0ZWRVbml4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJ7bG9hZGluZ1Rhc2tzOiBsb2FkaW5nVGFza3MkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8ZGl2IGNsYXNzPVwicm93IHB5LTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IGNvbC14bC05XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1EZWZpbml0aW9uXCIgY2xhc3M9XCJzdW1tYXJ5Rm9ybVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICA8dmFsdGltby1mb3JtLWlvIFtmb3JtXT1cImZvcm1EZWZpbml0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPjwvdmFsdGltby1mb3JtLWlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLUN1cnJlbnQgdXNlciB0YXNrcyByaWdodCBzaWRlLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wteGwtM1wiPlxuICAgICAgPGg0IGNsYXNzPVwidXNlci10YXNrcy10aXRsZVwiPnt7ICdzdW1tYXJ5LnVzZXJUYXNrcycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvYnMubG9hZGluZ1Rhc2tzOyBlbHNlIGxvYWRpbmdUYXNrc1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFza3MubGVuZ3RoXCI+XG4gICAgICAgICAgPHZhbHRpbW8td2lkZ2V0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZmxvYXQtbGVmdFwiIHNyYz1cImFzc2V0cy9hdWRpdC0yLnBuZ1wiIGhlaWdodD1cIjI1XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPnt7ICdzdW1tYXJ5LnVzZXJUYXNrc0RvbmVTdGF0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92YWx0aW1vLXdpZGdldD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFzayBvZiB0YXNrc1wiPlxuICAgICAgICAgIDx2YWx0aW1vLXdpZGdldD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCIhdGFzay5pc0xvY2tlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC0zIGNsaWNrYWJsZSBob3ZlcmFibGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicm93VGFza0NsaWNrKHRhc2spXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodCBiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXByaW1hcnlcIj57e1xuICAgICAgICAgICAgICAgICdzdW1tYXJ5LnRhc2tPcGVuJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0YXNrLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIj57eyAnc3VtbWFyeS50YXNrQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX0ge3sgdGFzay5jcmVhdGVkIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgaG92ZXJhYmxlXCIgKm5nSWY9XCJ0YXNrLmlzTG9ja2VkXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodCBiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXNlY29uZGFyeSBiZy1ncmV5XCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgJ3N1bW1hcnkudGFza0xvY2tlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktbG9ja1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHRhc2submFtZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8ZGl2Pnt7ICdzdW1tYXJ5LnRhc2tDcmVhdGVkJyB8IHRyYW5zbGF0ZSB9fSB7eyB0YXNrLmNyZWF0ZWQgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx2YWx0aW1vLXRhc2stZGV0YWlsLW1vZGFsXG4gICAgICAgICN0YXNrRGV0YWlsXG4gICAgICAgIChmb3JtU3VibWl0KT1cImluaXQoKVwiXG4gICAgICAgIChhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCk9XCJpbml0KClcIlxuICAgICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1tb2RhbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFza3NUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgPGNkcy1sb2FkaW5nIHNpemU9XCJzbVwiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|