@valtimo/dossier-management 12.10.1 → 12.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.mjs +263 -0
- package/esm2022/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.mjs +149 -0
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +4 -3
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +5 -4
- package/esm2022/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.mjs +127 -0
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +33 -13
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +3 -3
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +8 -20
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +3 -3
- package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +3 -3
- package/esm2022/lib/dossier-management.module.mjs +23 -5
- package/esm2022/lib/models/tab.enum.mjs +2 -1
- package/fesm2022/valtimo-dossier-management.mjs +571 -47
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.d.ts +75 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tag-modal/dossier-management-case-tag-modal.component.d.ts.map +1 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.d.ts +48 -0
- package/lib/components/dossier-management-case-tags/dossier-management-case-tags.component.d.ts.map +1 -0
- package/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.d.ts +37 -0
- package/lib/components/dossier-management-external-start-form/dossier-management-external-start-form.component.d.ts.map +1 -0
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +3 -0
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts +1 -1
- package/lib/dossier-management.module.d.ts +13 -10
- package/lib/dossier-management.module.d.ts.map +1 -1
- package/lib/models/tab.enum.d.ts +2 -1
- package/lib/models/tab.enum.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs
CHANGED
|
@@ -22,6 +22,7 @@ import * as i2 from "@angular/router";
|
|
|
22
22
|
import * as i3 from "@angular/common";
|
|
23
23
|
import * as i4 from "@valtimo/components";
|
|
24
24
|
import * as i5 from "../dossier-management-assignee/dossier-management-assignee.component";
|
|
25
|
+
import * as i6 from "../dossier-management-external-start-form/dossier-management-external-start-form.component";
|
|
25
26
|
export class DossierManagementDetailComponent {
|
|
26
27
|
constructor(documentService, route, zgwCaseConfigurationExtensionComponents, cdr) {
|
|
27
28
|
this.documentService = documentService;
|
|
@@ -44,11 +45,11 @@ export class DossierManagementDetailComponent {
|
|
|
44
45
|
this.cdr.detectChanges();
|
|
45
46
|
}
|
|
46
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementDetailComponent, deps: [{ token: i1.DocumentService }, { token: i2.ActivatedRoute }, { token: ZGW_CASE_CONFIGURATION_EXTENSIONS_TOKEN, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementDetailComponent, selector: "valtimo-dossier-management-detail", viewQueries: [{ propertyName: "_extensions", first: true, predicate: ["extensions"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</div>\n", styles: [".row{margin:0}.dossier-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{background:transparent;border:none}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i5.DossierManagementAssigneeComponent, selector: "valtimo-dossier-management-assignee" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementDetailComponent, selector: "valtimo-dossier-management-detail", viewQueries: [{ propertyName: "_extensions", first: true, predicate: ["extensions"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n\n <valtimo-dossier-management-external-start-form>\n </valtimo-dossier-management-external-start-form>\n </div>\n </div>\n </valtimo-widget>\n</div>\n", styles: [".row{margin:0}.dossier-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{background:transparent;border:none}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i5.DossierManagementAssigneeComponent, selector: "valtimo-dossier-management-assignee" }, { kind: "component", type: i6.DossierManagementExternalStartFormComponent, selector: "valtimo-dossier-management-external-start-form" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
48
49
|
}
|
|
49
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementDetailComponent, decorators: [{
|
|
50
51
|
type: Component,
|
|
51
|
-
args: [{ selector: 'valtimo-dossier-management-detail', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n </div>\n </div>\n </valtimo-widget>\n</div>\n", styles: [".row{margin:0}.dossier-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{background:transparent;border:none}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
52
|
+
args: [{ selector: 'valtimo-dossier-management-detail', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"row pt-4 mb-5 pb-4 pl-2 pr-2\">\n <div class=\"col-10 offset-1\">\n <ng-template #extensions></ng-template>\n\n <valtimo-dossier-management-assignee\n *ngIf=\"documentDefinition$ | async\"\n ></valtimo-dossier-management-assignee>\n\n <valtimo-dossier-management-external-start-form>\n </valtimo-dossier-management-external-start-form>\n </div>\n </div>\n </valtimo-widget>\n</div>\n", styles: [".row{margin:0}.dossier-schema{resize:none}valtimo-widget::ng-deep .card-border.card-full-default{background:transparent;border:none}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
52
53
|
}], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.ActivatedRoute }, { type: undefined, decorators: [{
|
|
53
54
|
type: Optional
|
|
54
55
|
}, {
|
|
@@ -58,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
58
59
|
type: ViewChild,
|
|
59
60
|
args: ['extensions', { read: ViewContainerRef }]
|
|
60
61
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBRVIsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQWEsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sZ0NBQWdDO0lBVTNDLFlBQ21CLGVBQWdDLEVBQ2hDLEtBQXFCLEVBR3JCLHVDQUFvRCxFQUNwRCxHQUFzQjtRQUx0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFHckIsNENBQXVDLEdBQXZDLHVDQUF1QyxDQUFhO1FBQ3BELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWnpCLHdCQUFtQixHQUFtQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVGLFNBQVMsQ0FBQyxDQUFDLE1BQWdCLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQ2xGLENBQ0YsQ0FBQztJQVNDLENBQUM7SUFFRyxlQUFlO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFDRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDO1lBQzVELElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUN6RCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsdUNBQXVDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0FwQ1UsZ0NBQWdDLCtFQWNqQyx1Q0FBdUM7bUdBZHRDLGdDQUFnQywrSkFDWCxnQkFBZ0IsNkJDcENsRCxrcENBZ0NBOzs0RkRHYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsbUNBQW1DOzswQkFpQjFDLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsdUNBQXVDO3lFQVp6QyxXQUFXO3NCQURsQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1pHV19DQVNFX0NPTkZJR1VSQVRJT05fRVhURU5TSU9OU19UT0tFTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9uLCBEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50RGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2V4dGVuc2lvbnMnLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHByaXZhdGUgX2V4dGVuc2lvbnM6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbiQ6IE9ic2VydmFibGU8RG9jdW1lbnREZWZpbml0aW9uPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXREb2N1bWVudERlZmluaXRpb25Gb3JNYW5hZ2VtZW50KHBhcmFtcy5nZXQoJ25hbWUnKSA/PyAnJylcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoWkdXX0NBU0VfQ09ORklHVVJBVElPTl9FWFRFTlNJT05TX1RPS0VOKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgemd3Q2FzZUNvbmZpZ3VyYXRpb25FeHRlbnNpb25Db21wb25lbnRzOiBUeXBlPGFueT5bXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJFeHRlbnNpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckV4dGVuc2lvbnMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIUFycmF5LmlzQXJyYXkodGhpcy56Z3dDYXNlQ29uZmlndXJhdGlvbkV4dGVuc2lvbkNvbXBvbmVudHMpIHx8XG4gICAgICB0aGlzLnpnd0Nhc2VDb25maWd1cmF0aW9uRXh0ZW5zaW9uQ29tcG9uZW50cy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnpnd0Nhc2VDb25maWd1cmF0aW9uRXh0ZW5zaW9uQ29tcG9uZW50cy5mb3JFYWNoKGV4dGVuc2lvbkNvbXBvbmVudCA9PiB7XG4gICAgICB0aGlzLl9leHRlbnNpb25zLmNyZWF0ZUNvbXBvbmVudChleHRlbnNpb25Db21wb25lbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gIDx2YWx0aW1vLXdpZGdldD5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTQgbWItNSBwYi00IHBsLTIgcHItMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMCBvZmZzZXQtMVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2V4dGVuc2lvbnM+PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtYXNzaWduZWVcbiAgICAgICAgICAqbmdJZj1cImRvY3VtZW50RGVmaW5pdGlvbiQgfCBhc3luY1wiXG4gICAgICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWFzc2lnbmVlPlxuXG4gICAgICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1leHRlcm5hbC1zdGFydC1mb3JtPlxuICAgICAgICA8L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWV4dGVybmFsLXN0YXJ0LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLXdpZGdldD5cbjwvZGl2PlxuIl19
|
|
@@ -34,7 +34,8 @@ import * as i11 from "../dossier-management-detail-container-actions/dossier-man
|
|
|
34
34
|
import * as i12 from "../dossier-management-document-definition/dossier-management-document-definition.component";
|
|
35
35
|
import * as i13 from "../dossier-management-processes/dossier-management-processes.component";
|
|
36
36
|
import * as i14 from "../dossier-management-statuses/dossier-management-statuses.component";
|
|
37
|
-
import * as i15 from "
|
|
37
|
+
import * as i15 from "../dossier-management-case-tags/dossier-management-case-tags.component";
|
|
38
|
+
import * as i16 from "@ngx-translate/core";
|
|
38
39
|
export class DossierManagementDetailContainerComponent extends PendingChangesComponent {
|
|
39
40
|
constructor(dossierDetailService, route, configService, tabService, pageTitleService) {
|
|
40
41
|
super();
|
|
@@ -133,11 +134,11 @@ export class DossierManagementDetailContainerComponent extends PendingChangesCom
|
|
|
133
134
|
this._documentDefinitionTab?.onCanDeactivate();
|
|
134
135
|
}
|
|
135
136
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementDetailContainerComponent, deps: [{ token: i1.DossierDetailService }, { token: i2.ActivatedRoute }, { token: i3.ConfigService }, { token: i1.TabService }, { token: i4.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierManagementDetailContainerComponent, selector: "valtimo-dossier-management-detail-container", providers: [DossierDetailService], viewQueries: [{ propertyName: "_contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_documentDefinitionTab", first: true, predicate: DossierManagementDocumentDefinitionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .dossier-management-tabs .cds--tab-content{background-color:var(--cds-layer)}::ng-deep .dossier-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .dossier-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .dossier-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .dossier-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}.dossier-management-detail-container{display:flex;flex-direction:column;width:100%}.dossier-management-detail-container__content{background:var(--cds-layer)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i6.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i6.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i7.DossierManagementDetailComponent, selector: "valtimo-dossier-management-detail" }, { kind: "component", type: i8.DossierManagementSearchFieldsComponent, selector: "valtimo-dossier-management-search-fields", outputs: ["searchField"] }, { kind: "component", type: i9.DossierManagementListColumnsComponent, selector: "valtimo-dossier-management-list-columns" }, { kind: "component", type: i10.DossierManagementTabsComponent, selector: "valtimo-dossier-management-tabs", inputs: ["documentDefinitionName"] }, { kind: "component", type: i11.DossierManagementDetailContainerActionsComponent, selector: "valtimo-dossier-management-detail-container-actions", inputs: ["documentDefinitionTitle", "documentDefinitionName"], outputs: ["versionSet"] }, { kind: "component", type: i12.DossierManagementDocumentDefinitionComponent, selector: "valtimo-dossier-management-document-definition", inputs: ["documentDefinitionName"], outputs: ["cancelRedirect", "confirmRedirect", "pendingChangesUpdate"] }, { kind: "component", type: i13.DossierManagementProcessesComponent, selector: "valtimo-dossier-management-processes" }, { kind: "component", type: i14.DossierManagementStatusesComponent, selector: "valtimo-dossier-management-statuses" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
137
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierManagementDetailContainerComponent, selector: "valtimo-dossier-management-detail-container", providers: [DossierDetailService], viewQueries: [{ propertyName: "_contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_documentDefinitionTab", first: true, predicate: DossierManagementDocumentDefinitionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.TAGS} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.tags' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TAGS)\"\n >\n <valtimo-dossier-management-case-tags\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-case-tags>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .dossier-management-tabs .cds--tab-content{background-color:var(--cds-layer)}::ng-deep .dossier-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .dossier-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .dossier-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .dossier-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}.dossier-management-detail-container{display:flex;flex-direction:column;width:100%}.dossier-management-detail-container__content{background:var(--cds-layer)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i6.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i6.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i7.DossierManagementDetailComponent, selector: "valtimo-dossier-management-detail" }, { kind: "component", type: i8.DossierManagementSearchFieldsComponent, selector: "valtimo-dossier-management-search-fields", outputs: ["searchField"] }, { kind: "component", type: i9.DossierManagementListColumnsComponent, selector: "valtimo-dossier-management-list-columns" }, { kind: "component", type: i10.DossierManagementTabsComponent, selector: "valtimo-dossier-management-tabs", inputs: ["documentDefinitionName"] }, { kind: "component", type: i11.DossierManagementDetailContainerActionsComponent, selector: "valtimo-dossier-management-detail-container-actions", inputs: ["documentDefinitionTitle", "documentDefinitionName"], outputs: ["versionSet"] }, { kind: "component", type: i12.DossierManagementDocumentDefinitionComponent, selector: "valtimo-dossier-management-document-definition", inputs: ["documentDefinitionName"], outputs: ["cancelRedirect", "confirmRedirect", "pendingChangesUpdate"] }, { kind: "component", type: i13.DossierManagementProcessesComponent, selector: "valtimo-dossier-management-processes" }, { kind: "component", type: i14.DossierManagementStatusesComponent, selector: "valtimo-dossier-management-statuses" }, { kind: "component", type: i15.DossierManagementCaseTagComponent, selector: "valtimo-dossier-management-case-tags" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
137
138
|
}
|
|
138
139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementDetailContainerComponent, decorators: [{
|
|
139
140
|
type: Component,
|
|
140
|
-
args: [{ selector: 'valtimo-dossier-management-detail-container', providers: [DossierDetailService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .dossier-management-tabs .cds--tab-content{background-color:var(--cds-layer)}::ng-deep .dossier-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .dossier-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .dossier-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .dossier-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}.dossier-management-detail-container{display:flex;flex-direction:column;width:100%}.dossier-management-detail-container__content{background:var(--cds-layer)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
141
|
+
args: [{ selector: 'valtimo-dossier-management-detail-container', providers: [DossierDetailService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n currentTab: currentTab$ | async,\n injectedTabs: injectedCaseManagementTabs$ | async,\n } as obs\"\n class=\"dossier-management-detail-container\"\n>\n <valtimo-documenten-api></valtimo-documenten-api>\n <cds-tabs class=\"dossier-management-tabs\" type=\"contained\">\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.DOCUMENT\"\n [heading]=\"'dossierManagement.tabs.document' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.DOCUMENT)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.CASE\"\n [heading]=\"'dossierManagement.tabs.cases' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.CASE)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"no-padding-left-right main-content\"\n [active]=\"obs.currentTab === TabEnum.PROCESSES\"\n [heading]=\"'dossierManagement.tabs.processes' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.PROCESSES)\"\n >\n </cds-tab>\n\n <cds-tab\n class=\"main-content no-padding-left-right no-padding-bottom\"\n [active]=\"obs.currentTab === TabEnum.SEARCH\"\n [heading]=\"'dossierManagement.tabs.searchFields' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.SEARCH)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"caseListColumn\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.LIST\"\n [heading]=\"'dossierManagement.tabs.listColumns' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.LIST)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"tabManagementEnabled\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === TabEnum.TABS\"\n [heading]=\"'dossierManagement.tabs.tabManagement' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TABS)\"\n >\n </cds-tab>\n\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.STATUSES} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.statuses' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.STATUSES)\"\n >\n <valtimo-dossier-management-statuses\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-statuses>\n </cds-tab>\n <cds-tab\n *ngIf=\"{active: obs.currentTab === TabEnum.TAGS} as vars\"\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"vars.active\"\n [heading]=\"'dossierManagement.tabs.tags' | translate\"\n (selected)=\"displayBodyComponent(TabEnum.TAGS)\"\n >\n <valtimo-dossier-management-case-tags\n *ngIf=\"vars.active\"\n ></valtimo-dossier-management-case-tags>\n </cds-tab>\n\n @for (injectedTab of obs.injectedTabs; track injectedTab.translationKey) {\n <cds-tab\n class=\"no-padding-left-right no-padding-top-bottom\"\n [active]=\"obs.currentTab === injectedTab.translationKey\"\n [heading]=\"injectedTab.translationKey | translate\"\n (selected)=\"displayBodyComponent(injectedTab.translationKey, true)\"\n >\n </cds-tab>\n }\n </cds-tabs>\n\n <div class=\"dossier-management-detail-container__content\">\n <ng-template #contentContainer></ng-template>\n\n <valtimo-dossier-management-document-definition\n *ngIf=\"\n (obs.currentTab === TabEnum.DOCUMENT && !pendingChanges) || pendingTab === TabEnum.DOCUMENT\n \"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (pendingChangesUpdate)=\"onPendingChangesUpdate($event)\"\n (cancelRedirect)=\"onCancelRedirectEvent()\"\n (confirmRedirect)=\"onConfirmRedirectEvent()\"\n ></valtimo-dossier-management-document-definition>\n\n <valtimo-dossier-management-detail\n *ngIf=\"(obs.currentTab === TabEnum.CASE && !pendingChanges) || pendingTab === TabEnum.CASE\"\n ></valtimo-dossier-management-detail>\n\n <valtimo-dossier-management-processes\n *ngIf=\"\n (obs.currentTab === TabEnum.PROCESSES && !pendingChanges) ||\n pendingTab === TabEnum.PROCESSES\n \"\n ></valtimo-dossier-management-processes>\n\n <valtimo-dossier-management-search-fields\n *ngIf=\"\n (obs.currentTab === TabEnum.SEARCH && !pendingChanges) || pendingTab === TabEnum.SEARCH\n \"\n ></valtimo-dossier-management-search-fields>\n\n <valtimo-dossier-management-list-columns\n *ngIf=\"(obs.currentTab === TabEnum.LIST && !pendingChanges) || pendingTab === TabEnum.LIST\"\n ></valtimo-dossier-management-list-columns>\n\n <valtimo-dossier-management-tabs\n *ngIf=\"(obs.currentTab === TabEnum.TABS && !pendingChanges) || pendingTab === TabEnum.TABS\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n ></valtimo-dossier-management-tabs>\n </div>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <valtimo-dossier-management-detail-container-actions\n [documentDefinitionTitle]=\"documentDefinitionTitle$ | async\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n (versionSet)=\"onVersionSet($event)\"\n ></valtimo-dossier-management-detail-container-actions>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep .dossier-management-tabs .cds--tab-content{background-color:var(--cds-layer)}::ng-deep .dossier-management-tabs .cds--tab-content:focus{outline:none}::ng-deep .dossier-management-tabs .no-padding-left-right .cds--tab-content{padding-left:0;padding-right:0}::ng-deep .dossier-management-tabs .no-padding-top-bottom .cds--tab-content{padding-top:0;padding-bottom:0}::ng-deep .dossier-management-tabs .no-padding-bottom .cds--tab-content{padding-bottom:0}.tab-container{min-height:300px}.dossier-header{height:80px;padding-top:21px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(0,0,0,.125)}.dossier-title{margin-top:0;margin-bottom:7px}.dossier-management-detail-container{display:flex;flex-direction:column;width:100%}.dossier-management-detail-container__content{background:var(--cds-layer)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
141
142
|
}], ctorParameters: () => [{ type: i1.DossierDetailService }, { type: i2.ActivatedRoute }, { type: i3.ConfigService }, { type: i1.TabService }, { type: i4.PageTitleService }], propDecorators: { _contentContainer: [{
|
|
142
143
|
type: ViewChild,
|
|
143
144
|
args: ['contentContainer', { read: ViewContainerRef }]
|
|
@@ -145,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
145
146
|
type: ViewChild,
|
|
146
147
|
args: [DossierManagementDocumentDefinitionComponent]
|
|
147
148
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQix1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlFLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBRUgsWUFBWSxFQUNaLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFDLG9CQUFvQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDRDQUE0QyxFQUFDLE1BQU0sNEZBQTRGLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3hKLE1BQU0sT0FBTyx5Q0FDWCxTQUFRLHVCQUF1QjtJQWtDL0IsWUFDbUIsb0JBQTBDLEVBQzFDLEtBQXFC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U0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQztnQkFHL0Msc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2UsIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q2FzZU1hbmFnZW1lbnRUYWJDb25maWcsIENvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGFiRW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9zc2llckRldGFpbFNlcnZpY2UsIFRhYlNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnREb2N1bWVudERlZmluaXRpb25Db21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItbWFuYWdlbWVudC1kb2N1bWVudC1kZWZpbml0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC1kb2N1bWVudC1kZWZpbml0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEb3NzaWVyRGV0YWlsU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudFxuICBleHRlbmRzIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcicsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHJpdmF0ZSBfY29udGVudENvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgQFZpZXdDaGlsZChEb3NzaWVyTWFuYWdlbWVudERvY3VtZW50RGVmaW5pdGlvbkNvbXBvbmVudClcbiAgcHJpdmF0ZSBfZG9jdW1lbnREZWZpbml0aW9uVGFiOiBEb3NzaWVyTWFuYWdlbWVudERvY3VtZW50RGVmaW5pdGlvbkNvbXBvbmVudDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMubmFtZSB8fCAnJyksXG4gICAgZmlsdGVyKGRvY0RlZk5hbWUgPT4gISFkb2NEZWZOYW1lKVxuICApO1xuXG4gIHB1YmxpYyBjYXNlTGlzdENvbHVtbiE6IGJvb2xlYW47XG4gIHB1YmxpYyB0YWJNYW5hZ2VtZW50RW5hYmxlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIF9hY3RpdmVUYWI6IFRhYkVudW07XG4gIHB1YmxpYyBwZW5kaW5nVGFiOiBUYWJFbnVtIHwgbnVsbDtcbiAgcHVibGljIGN1cnJlbnRUYWIkID0gdGhpcy50YWJTZXJ2aWNlLmN1cnJlbnRUYWIkLnBpcGUoXG4gICAgdGFwKChjdXJyZW50VGFiOiBUYWJFbnVtKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVUYWIgPSBjdXJyZW50VGFiO1xuICAgIH0pXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBpbmplY3RlZENhc2VNYW5hZ2VtZW50VGFicyQ6IE9ic2VydmFibGU8Q2FzZU1hbmFnZW1lbnRUYWJDb25maWdbXT4gPVxuICAgIHRoaXMudGFiU2VydmljZS5pbmplY3RlZENhc2VNYW5hZ2VtZW50VGFicyQ7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25UaXRsZSQgPSB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuY3VzdG9tUGFnZVRpdGxlJDtcbiAgcHVibGljIHJlYWRvbmx5IENBUkJPTl9USEVNRSA9ICdnMTAnO1xuICBwdWJsaWMgcmVhZG9ubHkgRG9zc2llck1hbmFnZW1lbnRUYWJzID0gT2JqZWN0LnZhbHVlcyhUYWJFbnVtKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgVGFiRW51bSA9IFRhYkVudW07XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVmVyc2lvbjogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSBfcGVuZGluZ1ZlcnNpb246IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llckRldGFpbFNlcnZpY2U6IERvc3NpZXJEZXRhaWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYlNlcnZpY2U6IFRhYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgZmVhdHVyZVRvZ2dsZXMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmZlYXR1cmVUb2dnbGVzO1xuICAgIHRoaXMuY2FzZUxpc3RDb2x1bW4gPSBmZWF0dXJlVG9nZ2xlcz8uY2FzZUxpc3RDb2x1bW4gPz8gdHJ1ZTtcbiAgICB0aGlzLnRhYk1hbmFnZW1lbnRFbmFibGVkID0gZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZVRhYk1hbmFnZW1lbnQgPz8gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5BY3RpdmVWZXJzaW9uU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kb2N1bWVudERlZmluaXRpb25UYWIpIHRoaXMuY3VzdG9tTW9kYWwgPSB0aGlzLl9kb2N1bWVudERlZmluaXRpb25UYWIuY2FuY2VsTW9kYWw7XG4gICAgdGhpcy5vcGVuSW5qZWN0ZWRUYWJTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuY3VycmVudFRhYiA9IFRhYkVudW0uRE9DVU1FTlQ7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5lbmFibGVSZXNldCgpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlCb2R5Q29tcG9uZW50KHRhYjogVGFiRW51bSB8IHN0cmluZywgaXNJbmplY3RlZFRhYiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmN1c3RvbU1vZGFsICYmICEhdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uVGFiKVxuICAgICAgdGhpcy5jdXN0b21Nb2RhbCA9IHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvblRhYi5jYW5jZWxNb2RhbDtcblxuICAgIGlmICh0aGlzLnBlbmRpbmdDaGFuZ2VzKSB7XG4gICAgICB0aGlzLm9uQ2FuRGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnRhYlNlcnZpY2UuY3VycmVudFRhYiA9IHRhYjtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbmNlbFJlZGlyZWN0RXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkN1c3RvbUNhbmNlbCgpO1xuICAgIGlmICh0aGlzLl9hY3RpdmVWZXJzaW9uKSB7XG4gICAgICB0aGlzLmRvc3NpZXJEZXRhaWxTZXJ2aWNlLnNldFByZXZpb3VzU2VsZWN0ZWRWZXJzaW9uTnVtYmVyKHRoaXMuX2FjdGl2ZVZlcnNpb24pO1xuICAgICAgdGhpcy5fYWN0aXZlVmVyc2lvbiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdUYWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50YWJTZXJ2aWNlLmN1cnJlbnRUYWIgPSB0aGlzLnBlbmRpbmdUYWI7XG4gIH1cblxuICBwdWJsaWMgb25Db25maXJtUmVkaXJlY3RFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdUYWIgPSBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZVZlcnNpb24gPSBudWxsO1xuICAgIGlmICh0aGlzLl9wZW5kaW5nVmVyc2lvbikge1xuICAgICAgdGhpcy5kb3NzaWVyRGV0YWlsU2VydmljZS5zZXRTZWxlY3RlZFZlcnNpb25OdW1iZXIodGhpcy5fcGVuZGluZ1ZlcnNpb24pO1xuICAgICAgdGhpcy5fcGVuZGluZ1ZlcnNpb24gPSBudWxsO1xuICAgICAgdGhpcy5kb3NzaWVyRGV0YWlsU2VydmljZS5zZXRQcmV2aW91c1NlbGVjdGVkVmVyc2lvbk51bWJlcihudWxsKTtcbiAgICB9XG4gICAgdGhpcy5vbkN1c3RvbUNvbmZpcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBlbmRpbmdDaGFuZ2VzVXBkYXRlKHBlbmRpbmdDaGFuZ2VzOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcyA9IHBlbmRpbmdDaGFuZ2VzO1xuICAgIHRoaXMucGVuZGluZ1RhYiA9IHBlbmRpbmdDaGFuZ2VzID8gdGhpcy5fYWN0aXZlVGFiIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvblZlcnNpb25TZXQodmVyc2lvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0NoYW5nZXMpIHtcbiAgICAgIHRoaXMub25DYW5EZWFjdGl2YXRlKCk7XG4gICAgICB0aGlzLl9wZW5kaW5nVmVyc2lvbiA9IHZlcnNpb247XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZG9zc2llckRldGFpbFNlcnZpY2Uuc2V0U2VsZWN0ZWRWZXJzaW9uTnVtYmVyKHZlcnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQWN0aXZlVmVyc2lvblN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZG9zc2llckRldGFpbFNlcnZpY2Uuc2VsZWN0ZWRWZXJzaW9uTnVtYmVyJC5zdWJzY3JpYmUoKHZlcnNpb25OdW1iZXI6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmVyc2lvbiA9IHZlcnNpb25OdW1iZXI7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5JbmplY3RlZFRhYlN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWIkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHRoaXMuaW5qZWN0ZWRDYXNlTWFuYWdlbWVudFRhYnMkLFxuICAgICAgXSkuc3Vic2NyaWJlKChbY3VycmVudFRhYiwgaW5qZWN0ZWRDYXNlTWFuYWdlbWVudFRhYnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbmRJbmplY3RlZFRhYiA9IGluamVjdGVkQ2FzZU1hbmFnZW1lbnRUYWJzLmZpbmQoXG4gICAgICAgICAgaW5qZWN0ZWRUYWIgPT4gaW5qZWN0ZWRUYWIudHJhbnNsYXRpb25LZXkgPT09IGN1cnJlbnRUYWJcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIGlmIChmaW5kSW5qZWN0ZWRUYWIgJiYgdGhpcy5fY29udGVudENvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuX2NvbnRlbnRDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZpbmRJbmplY3RlZFRhYi5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DYW5EZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvblRhYj8ub25DYW5EZWFjdGl2YXRlKCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBjdXJyZW50VGFiOiBjdXJyZW50VGFiJCB8IGFzeW5jLFxuICAgIGluamVjdGVkVGFiczogaW5qZWN0ZWRDYXNlTWFuYWdlbWVudFRhYnMkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lclwiXG4+XG4gIDx2YWx0aW1vLWRvY3VtZW50ZW4tYXBpPjwvdmFsdGltby1kb2N1bWVudGVuLWFwaT5cbiAgPGNkcy10YWJzIGNsYXNzPVwiZG9zc2llci1tYW5hZ2VtZW50LXRhYnNcIiB0eXBlPVwiY29udGFpbmVkXCI+XG4gICAgPGNkcy10YWJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbVwiXG4gICAgICBbYWN0aXZlXT1cIm9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLkRPQ1VNRU5UXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLmRvY3VtZW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheUJvZHlDb21wb25lbnQoVGFiRW51bS5ET0NVTUVOVClcIlxuICAgID5cbiAgICA8L2Nkcy10YWI+XG5cbiAgICA8Y2RzLXRhYlxuICAgICAgY2xhc3M9XCJuby1wYWRkaW5nLWxlZnQtcmlnaHQgbWFpbi1jb250ZW50XCJcbiAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uQ0FTRVwiXG4gICAgICBbaGVhZGluZ109XCInZG9zc2llck1hbmFnZW1lbnQudGFicy5jYXNlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KFRhYkVudW0uQ0FTRSlcIlxuICAgID5cbiAgICA8L2Nkcy10YWI+XG5cbiAgICA8Y2RzLXRhYlxuICAgICAgY2xhc3M9XCJuby1wYWRkaW5nLWxlZnQtcmlnaHQgbWFpbi1jb250ZW50XCJcbiAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uUFJPQ0VTU0VTXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLnByb2Nlc3NlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KFRhYkVudW0uUFJPQ0VTU0VTKVwiXG4gICAgPlxuICAgIDwvY2RzLXRhYj5cblxuICAgIDxjZHMtdGFiXG4gICAgICBjbGFzcz1cIm1haW4tY29udGVudCBuby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy1ib3R0b21cIlxuICAgICAgW2FjdGl2ZV09XCJvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5TRUFSQ0hcIlxuICAgICAgW2hlYWRpbmddPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYnMuc2VhcmNoRmllbGRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheUJvZHlDb21wb25lbnQoVGFiRW51bS5TRUFSQ0gpXCJcbiAgICA+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgPGNkcy10YWJcbiAgICAgICpuZ0lmPVwiY2FzZUxpc3RDb2x1bW5cIlxuICAgICAgY2xhc3M9XCJuby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tXCJcbiAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uTElTVFwiXG4gICAgICBbaGVhZGluZ109XCInZG9zc2llck1hbmFnZW1lbnQudGFicy5saXN0Q29sdW1ucycgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KFRhYkVudW0uTElTVClcIlxuICAgID5cbiAgICA8L2Nkcy10YWI+XG5cbiAgICA8Y2RzLXRhYlxuICAgICAgKm5nSWY9XCJ0YWJNYW5hZ2VtZW50RW5hYmxlZFwiXG4gICAgICBjbGFzcz1cIm5vLXBhZGRpbmctbGVmdC1yaWdodCBuby1wYWRkaW5nLXRvcC1ib3R0b21cIlxuICAgICAgW2FjdGl2ZV09XCJvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5UQUJTXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLnRhYk1hbmFnZW1lbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLlRBQlMpXCJcbiAgICA+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgPGNkcy10YWJcbiAgICAgICpuZ0lmPVwie2FjdGl2ZTogb2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uU1RBVFVTRVN9IGFzIHZhcnNcIlxuICAgICAgY2xhc3M9XCJuby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tXCJcbiAgICAgIFthY3RpdmVdPVwidmFycy5hY3RpdmVcIlxuICAgICAgW2hlYWRpbmddPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYnMuc3RhdHVzZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLlNUQVRVU0VTKVwiXG4gICAgPlxuICAgICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzXG4gICAgICAgICpuZ0lmPVwidmFycy5hY3RpdmVcIlxuICAgICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtc3RhdHVzZXM+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgQGZvciAoaW5qZWN0ZWRUYWIgb2Ygb2JzLmluamVjdGVkVGFiczsgdHJhY2sgaW5qZWN0ZWRUYWIudHJhbnNsYXRpb25LZXkpIHtcbiAgICAgIDxjZHMtdGFiXG4gICAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbVwiXG4gICAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IGluamVjdGVkVGFiLnRyYW5zbGF0aW9uS2V5XCJcbiAgICAgICAgW2hlYWRpbmddPVwiaW5qZWN0ZWRUYWIudHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheUJvZHlDb21wb25lbnQoaW5qZWN0ZWRUYWIudHJhbnNsYXRpb25LZXksIHRydWUpXCJcbiAgICAgID5cbiAgICAgIDwvY2RzLXRhYj5cbiAgICB9XG4gIDwvY2RzLXRhYnM+XG5cbiAgPGRpdiBjbGFzcz1cImRvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlICNjb250ZW50Q29udGFpbmVyPjwvbmctdGVtcGxhdGU+XG5cbiAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZG9jdW1lbnQtZGVmaW5pdGlvblxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKG9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLkRPQ1VNRU5UICYmICFwZW5kaW5nQ2hhbmdlcykgfHwgcGVuZGluZ1RhYiA9PT0gVGFiRW51bS5ET0NVTUVOVFxuICAgICAgXCJcbiAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgICAgKHBlbmRpbmdDaGFuZ2VzVXBkYXRlKT1cIm9uUGVuZGluZ0NoYW5nZXNVcGRhdGUoJGV2ZW50KVwiXG4gICAgICAoY2FuY2VsUmVkaXJlY3QpPVwib25DYW5jZWxSZWRpcmVjdEV2ZW50KClcIlxuICAgICAgKGNvbmZpcm1SZWRpcmVjdCk9XCJvbkNvbmZpcm1SZWRpcmVjdEV2ZW50KClcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRvY3VtZW50LWRlZmluaXRpb24+XG5cbiAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsXG4gICAgICAqbmdJZj1cIihvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5DQVNFICYmICFwZW5kaW5nQ2hhbmdlcykgfHwgcGVuZGluZ1RhYiA9PT0gVGFiRW51bS5DQVNFXCJcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1kZXRhaWw+XG5cbiAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtcHJvY2Vzc2VzXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAob2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uUFJPQ0VTU0VTICYmICFwZW5kaW5nQ2hhbmdlcykgfHxcbiAgICAgICAgcGVuZGluZ1RhYiA9PT0gVGFiRW51bS5QUk9DRVNTRVNcbiAgICAgIFwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtcHJvY2Vzc2VzPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXNlYXJjaC1maWVsZHNcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5TRUFSQ0ggJiYgIXBlbmRpbmdDaGFuZ2VzKSB8fCBwZW5kaW5nVGFiID09PSBUYWJFbnVtLlNFQVJDSFxuICAgICAgXCJcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWxpc3QtY29sdW1uc1xuICAgICAgKm5nSWY9XCIob2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uTElTVCAmJiAhcGVuZGluZ0NoYW5nZXMpIHx8IHBlbmRpbmdUYWIgPT09IFRhYkVudW0uTElTVFwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtbGlzdC1jb2x1bW5zPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXRhYnNcbiAgICAgICpuZ0lmPVwiKG9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLlRBQlMgJiYgIXBlbmRpbmdDaGFuZ2VzKSB8fCBwZW5kaW5nVGFiID09PSBUYWJFbnVtLlRBQlNcIlxuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtdGFicz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXIgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci1hY3Rpb25zXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uVGl0bGVdPVwiZG9jdW1lbnREZWZpbml0aW9uVGl0bGUkIHwgYXN5bmNcIlxuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwiZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgfCBhc3luY1wiXG4gICAgICAodmVyc2lvblNldCk9XCJvblZlcnNpb25TZXQoJGV2ZW50KVwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci1hY3Rpb25zPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQix1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlFLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBRUgsWUFBWSxFQUNaLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFDLG9CQUFvQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDRDQUE0QyxFQUFDLE1BQU0sNEZBQTRGLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVN4SixNQUFNLE9BQU8seUNBQ1gsU0FBUSx1QkFBdUI7SUFrQy9CLFlBQ21CLG9CQUEwQyxFQUMxQyxLQUFx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LFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBRy9DLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlLCBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudH0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0Nhc2VNYW5hZ2VtZW50VGFiQ29uZmlnLCBDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1RhYkVudW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Rvc3NpZXJEZXRhaWxTZXJ2aWNlLCBUYWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50RG9jdW1lbnREZWZpbml0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9kb3NzaWVyLW1hbmFnZW1lbnQtZG9jdW1lbnQtZGVmaW5pdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtZG9jdW1lbnQtZGVmaW5pdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRG9zc2llckRldGFpbFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnREZXRhaWxDb250YWluZXJDb21wb25lbnRcbiAgZXh0ZW5kcyBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHByaXZhdGUgX2NvbnRlbnRDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoRG9zc2llck1hbmFnZW1lbnREb2N1bWVudERlZmluaXRpb25Db21wb25lbnQpXG4gIHByaXZhdGUgX2RvY3VtZW50RGVmaW5pdGlvblRhYjogRG9zc2llck1hbmFnZW1lbnREb2N1bWVudERlZmluaXRpb25Db21wb25lbnQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpLFxuICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSlcbiAgKTtcblxuICBwdWJsaWMgY2FzZUxpc3RDb2x1bW4hOiBib29sZWFuO1xuICBwdWJsaWMgdGFiTWFuYWdlbWVudEVuYWJsZWQhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBfYWN0aXZlVGFiOiBUYWJFbnVtO1xuICBwdWJsaWMgcGVuZGluZ1RhYjogVGFiRW51bSB8IG51bGw7XG4gIHB1YmxpYyBjdXJyZW50VGFiJCA9IHRoaXMudGFiU2VydmljZS5jdXJyZW50VGFiJC5waXBlKFxuICAgIHRhcCgoY3VycmVudFRhYjogVGFiRW51bSkgPT4ge1xuICAgICAgdGhpcy5fYWN0aXZlVGFiID0gY3VycmVudFRhYjtcbiAgICB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5qZWN0ZWRDYXNlTWFuYWdlbWVudFRhYnMkOiBPYnNlcnZhYmxlPENhc2VNYW5hZ2VtZW50VGFiQ29uZmlnW10+ID1cbiAgICB0aGlzLnRhYlNlcnZpY2UuaW5qZWN0ZWRDYXNlTWFuYWdlbWVudFRhYnMkO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uVGl0bGUkID0gdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmN1c3RvbVBhZ2VUaXRsZSQ7XG4gIHB1YmxpYyByZWFkb25seSBDQVJCT05fVEhFTUUgPSAnZzEwJztcbiAgcHVibGljIHJlYWRvbmx5IERvc3NpZXJNYW5hZ2VtZW50VGFicyA9IE9iamVjdC52YWx1ZXMoVGFiRW51bSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IFRhYkVudW0gPSBUYWJFbnVtO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVZlcnNpb246IG51bWJlciB8IG51bGw7XG4gIHByaXZhdGUgX3BlbmRpbmdWZXJzaW9uOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJEZXRhaWxTZXJ2aWNlOiBEb3NzaWVyRGV0YWlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWJTZXJ2aWNlOiBUYWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IGZlYXR1cmVUb2dnbGVzID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWF0dXJlVG9nZ2xlcztcbiAgICB0aGlzLmNhc2VMaXN0Q29sdW1uID0gZmVhdHVyZVRvZ2dsZXM/LmNhc2VMaXN0Q29sdW1uID8/IHRydWU7XG4gICAgdGhpcy50YWJNYW5hZ2VtZW50RW5hYmxlZCA9IGZlYXR1cmVUb2dnbGVzPy5lbmFibGVUYWJNYW5hZ2VtZW50ID8/IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQWN0aXZlVmVyc2lvblN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZG9jdW1lbnREZWZpbml0aW9uVGFiKSB0aGlzLmN1c3RvbU1vZGFsID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uVGFiLmNhbmNlbE1vZGFsO1xuICAgIHRoaXMub3BlbkluamVjdGVkVGFiU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50YWJTZXJ2aWNlLmN1cnJlbnRUYWIgPSBUYWJFbnVtLkRPQ1VNRU5UO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZW5hYmxlUmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5Qm9keUNvbXBvbmVudCh0YWI6IFRhYkVudW0gfCBzdHJpbmcsIGlzSW5qZWN0ZWRUYWIgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jdXN0b21Nb2RhbCAmJiAhIXRoaXMuX2RvY3VtZW50RGVmaW5pdGlvblRhYilcbiAgICAgIHRoaXMuY3VzdG9tTW9kYWwgPSB0aGlzLl9kb2N1bWVudERlZmluaXRpb25UYWIuY2FuY2VsTW9kYWw7XG5cbiAgICBpZiAodGhpcy5wZW5kaW5nQ2hhbmdlcykge1xuICAgICAgdGhpcy5vbkNhbkRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgdGhpcy50YWJTZXJ2aWNlLmN1cnJlbnRUYWIgPSB0YWI7XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWxSZWRpcmVjdEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMub25DdXN0b21DYW5jZWwoKTtcbiAgICBpZiAodGhpcy5fYWN0aXZlVmVyc2lvbikge1xuICAgICAgdGhpcy5kb3NzaWVyRGV0YWlsU2VydmljZS5zZXRQcmV2aW91c1NlbGVjdGVkVmVyc2lvbk51bWJlcih0aGlzLl9hY3RpdmVWZXJzaW9uKTtcbiAgICAgIHRoaXMuX2FjdGl2ZVZlcnNpb24gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wZW5kaW5nVGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGFiU2VydmljZS5jdXJyZW50VGFiID0gdGhpcy5wZW5kaW5nVGFiO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmlybVJlZGlyZWN0RXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nVGFiID0gbnVsbDtcbiAgICB0aGlzLl9hY3RpdmVWZXJzaW9uID0gbnVsbDtcbiAgICBpZiAodGhpcy5fcGVuZGluZ1ZlcnNpb24pIHtcbiAgICAgIHRoaXMuZG9zc2llckRldGFpbFNlcnZpY2Uuc2V0U2VsZWN0ZWRWZXJzaW9uTnVtYmVyKHRoaXMuX3BlbmRpbmdWZXJzaW9uKTtcbiAgICAgIHRoaXMuX3BlbmRpbmdWZXJzaW9uID0gbnVsbDtcbiAgICAgIHRoaXMuZG9zc2llckRldGFpbFNlcnZpY2Uuc2V0UHJldmlvdXNTZWxlY3RlZFZlcnNpb25OdW1iZXIobnVsbCk7XG4gICAgfVxuICAgIHRoaXMub25DdXN0b21Db25maXJtKCk7XG4gIH1cblxuICBwdWJsaWMgb25QZW5kaW5nQ2hhbmdlc1VwZGF0ZShwZW5kaW5nQ2hhbmdlczogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMgPSBwZW5kaW5nQ2hhbmdlcztcbiAgICB0aGlzLnBlbmRpbmdUYWIgPSBwZW5kaW5nQ2hhbmdlcyA/IHRoaXMuX2FjdGl2ZVRhYiA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25WZXJzaW9uU2V0KHZlcnNpb246IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDaGFuZ2VzKSB7XG4gICAgICB0aGlzLm9uQ2FuRGVhY3RpdmF0ZSgpO1xuICAgICAgdGhpcy5fcGVuZGluZ1ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRvc3NpZXJEZXRhaWxTZXJ2aWNlLnNldFNlbGVjdGVkVmVyc2lvbk51bWJlcih2ZXJzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkFjdGl2ZVZlcnNpb25TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmRvc3NpZXJEZXRhaWxTZXJ2aWNlLnNlbGVjdGVkVmVyc2lvbk51bWJlciQuc3Vic2NyaWJlKCh2ZXJzaW9uTnVtYmVyOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVZlcnNpb24gPSB2ZXJzaW9uTnVtYmVyO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuSW5qZWN0ZWRUYWJTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgICB0aGlzLmluamVjdGVkQ2FzZU1hbmFnZW1lbnRUYWJzJCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW2N1cnJlbnRUYWIsIGluamVjdGVkQ2FzZU1hbmFnZW1lbnRUYWJzXSkgPT4ge1xuICAgICAgICBjb25zdCBmaW5kSW5qZWN0ZWRUYWIgPSBpbmplY3RlZENhc2VNYW5hZ2VtZW50VGFicy5maW5kKFxuICAgICAgICAgIGluamVjdGVkVGFiID0+IGluamVjdGVkVGFiLnRyYW5zbGF0aW9uS2V5ID09PSBjdXJyZW50VGFiXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29udGVudENvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICBpZiAoZmluZEluamVjdGVkVGFiICYmIHRoaXMuX2NvbnRlbnRDb250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLl9jb250ZW50Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmaW5kSW5qZWN0ZWRUYWIuY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2FuRGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25UYWI/Lm9uQ2FuRGVhY3RpdmF0ZSgpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgY3VycmVudFRhYjogY3VycmVudFRhYiQgfCBhc3luYyxcbiAgICBpbmplY3RlZFRhYnM6IGluamVjdGVkQ2FzZU1hbmFnZW1lbnRUYWJzJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwiZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXJcIlxuPlxuICA8dmFsdGltby1kb2N1bWVudGVuLWFwaT48L3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGk+XG4gIDxjZHMtdGFicyBjbGFzcz1cImRvc3NpZXItbWFuYWdlbWVudC10YWJzXCIgdHlwZT1cImNvbnRhaW5lZFwiPlxuICAgIDxjZHMtdGFiXG4gICAgICBjbGFzcz1cIm5vLXBhZGRpbmctbGVmdC1yaWdodCBuby1wYWRkaW5nLXRvcC1ib3R0b21cIlxuICAgICAgW2FjdGl2ZV09XCJvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5ET0NVTUVOVFwiXG4gICAgICBbaGVhZGluZ109XCInZG9zc2llck1hbmFnZW1lbnQudGFicy5kb2N1bWVudCcgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KFRhYkVudW0uRE9DVU1FTlQpXCJcbiAgICA+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgPGNkcy10YWJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG1haW4tY29udGVudFwiXG4gICAgICBbYWN0aXZlXT1cIm9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLkNBU0VcIlxuICAgICAgW2hlYWRpbmddPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYnMuY2FzZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLkNBU0UpXCJcbiAgICA+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgPGNkcy10YWJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG1haW4tY29udGVudFwiXG4gICAgICBbYWN0aXZlXT1cIm9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLlBST0NFU1NFU1wiXG4gICAgICBbaGVhZGluZ109XCInZG9zc2llck1hbmFnZW1lbnQudGFicy5wcm9jZXNzZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLlBST0NFU1NFUylcIlxuICAgID5cbiAgICA8L2Nkcy10YWI+XG5cbiAgICA8Y2RzLXRhYlxuICAgICAgY2xhc3M9XCJtYWluLWNvbnRlbnQgbm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctYm90dG9tXCJcbiAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uU0VBUkNIXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLnNlYXJjaEZpZWxkcycgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KFRhYkVudW0uU0VBUkNIKVwiXG4gICAgPlxuICAgIDwvY2RzLXRhYj5cblxuICAgIDxjZHMtdGFiXG4gICAgICAqbmdJZj1cImNhc2VMaXN0Q29sdW1uXCJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbVwiXG4gICAgICBbYWN0aXZlXT1cIm9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLkxJU1RcIlxuICAgICAgW2hlYWRpbmddPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYnMubGlzdENvbHVtbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLkxJU1QpXCJcbiAgICA+XG4gICAgPC9jZHMtdGFiPlxuXG4gICAgPGNkcy10YWJcbiAgICAgICpuZ0lmPVwidGFiTWFuYWdlbWVudEVuYWJsZWRcIlxuICAgICAgY2xhc3M9XCJuby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tXCJcbiAgICAgIFthY3RpdmVdPVwib2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uVEFCU1wiXG4gICAgICBbaGVhZGluZ109XCInZG9zc2llck1hbmFnZW1lbnQudGFicy50YWJNYW5hZ2VtZW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheUJvZHlDb21wb25lbnQoVGFiRW51bS5UQUJTKVwiXG4gICAgPlxuICAgIDwvY2RzLXRhYj5cblxuICAgIDxjZHMtdGFiXG4gICAgICAqbmdJZj1cInthY3RpdmU6IG9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLlNUQVRVU0VTfSBhcyB2YXJzXCJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbVwiXG4gICAgICBbYWN0aXZlXT1cInZhcnMuYWN0aXZlXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLnN0YXR1c2VzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheUJvZHlDb21wb25lbnQoVGFiRW51bS5TVEFUVVNFUylcIlxuICAgID5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zdGF0dXNlc1xuICAgICAgICAqbmdJZj1cInZhcnMuYWN0aXZlXCJcbiAgICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXN0YXR1c2VzPlxuICAgIDwvY2RzLXRhYj5cbiAgICA8Y2RzLXRhYlxuICAgICAgKm5nSWY9XCJ7YWN0aXZlOiBvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5UQUdTfSBhcyB2YXJzXCJcbiAgICAgIGNsYXNzPVwibm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbVwiXG4gICAgICBbYWN0aXZlXT1cInZhcnMuYWN0aXZlXCJcbiAgICAgIFtoZWFkaW5nXT1cIidkb3NzaWVyTWFuYWdlbWVudC50YWJzLnRhZ3MnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJkaXNwbGF5Qm9keUNvbXBvbmVudChUYWJFbnVtLlRBR1MpXCJcbiAgICA+XG4gICAgICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWdzXG4gICAgICAgICpuZ0lmPVwidmFycy5hY3RpdmVcIlxuICAgICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtY2FzZS10YWdzPlxuICAgIDwvY2RzLXRhYj5cblxuICAgIEBmb3IgKGluamVjdGVkVGFiIG9mIG9icy5pbmplY3RlZFRhYnM7IHRyYWNrIGluamVjdGVkVGFiLnRyYW5zbGF0aW9uS2V5KSB7XG4gICAgICA8Y2RzLXRhYlxuICAgICAgICBjbGFzcz1cIm5vLXBhZGRpbmctbGVmdC1yaWdodCBuby1wYWRkaW5nLXRvcC1ib3R0b21cIlxuICAgICAgICBbYWN0aXZlXT1cIm9icy5jdXJyZW50VGFiID09PSBpbmplY3RlZFRhYi50cmFuc2xhdGlvbktleVwiXG4gICAgICAgIFtoZWFkaW5nXT1cImluamVjdGVkVGFiLnRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlCb2R5Q29tcG9uZW50KGluamVjdGVkVGFiLnRyYW5zbGF0aW9uS2V5LCB0cnVlKVwiXG4gICAgICA+XG4gICAgICA8L2Nkcy10YWI+XG4gICAgfVxuICA8L2Nkcy10YWJzPlxuXG4gIDxkaXYgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lcl9fY29udGVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudENvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRvY3VtZW50LWRlZmluaXRpb25cbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5ET0NVTUVOVCAmJiAhcGVuZGluZ0NoYW5nZXMpIHx8IHBlbmRpbmdUYWIgPT09IFRhYkVudW0uRE9DVU1FTlRcbiAgICAgIFwiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJkb2N1bWVudERlZmluaXRpb25OYW1lJCB8IGFzeW5jXCJcbiAgICAgIChwZW5kaW5nQ2hhbmdlc1VwZGF0ZSk9XCJvblBlbmRpbmdDaGFuZ2VzVXBkYXRlKCRldmVudClcIlxuICAgICAgKGNhbmNlbFJlZGlyZWN0KT1cIm9uQ2FuY2VsUmVkaXJlY3RFdmVudCgpXCJcbiAgICAgIChjb25maXJtUmVkaXJlY3QpPVwib25Db25maXJtUmVkaXJlY3RFdmVudCgpXCJcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1kb2N1bWVudC1kZWZpbml0aW9uPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbFxuICAgICAgKm5nSWY9XCIob2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uQ0FTRSAmJiAhcGVuZGluZ0NoYW5nZXMpIHx8IHBlbmRpbmdUYWIgPT09IFRhYkVudW0uQ0FTRVwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsPlxuXG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXByb2Nlc3Nlc1xuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKG9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLlBST0NFU1NFUyAmJiAhcGVuZGluZ0NoYW5nZXMpIHx8XG4gICAgICAgIHBlbmRpbmdUYWIgPT09IFRhYkVudW0uUFJPQ0VTU0VTXG4gICAgICBcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXByb2Nlc3Nlcz5cblxuICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAob2JzLmN1cnJlbnRUYWIgPT09IFRhYkVudW0uU0VBUkNIICYmICFwZW5kaW5nQ2hhbmdlcykgfHwgcGVuZGluZ1RhYiA9PT0gVGFiRW51bS5TRUFSQ0hcbiAgICAgIFwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcz5cblxuICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1saXN0LWNvbHVtbnNcbiAgICAgICpuZ0lmPVwiKG9icy5jdXJyZW50VGFiID09PSBUYWJFbnVtLkxJU1QgJiYgIXBlbmRpbmdDaGFuZ2VzKSB8fCBwZW5kaW5nVGFiID09PSBUYWJFbnVtLkxJU1RcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWxpc3QtY29sdW1ucz5cblxuICAgIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC10YWJzXG4gICAgICAqbmdJZj1cIihvYnMuY3VycmVudFRhYiA9PT0gVGFiRW51bS5UQUJTICYmICFwZW5kaW5nQ2hhbmdlcykgfHwgcGVuZGluZ1RhYiA9PT0gVGFiRW51bS5UQUJTXCJcbiAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXRhYnM+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgcmVuZGVySW5QYWdlSGVhZGVyIFtmdWxsV2lkdGhdPVwidHJ1ZVwiPlxuICA8bmctdGVtcGxhdGU+XG4gICAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXItYWN0aW9uc1xuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvblRpdGxlXT1cImRvY3VtZW50RGVmaW5pdGlvblRpdGxlJCB8IGFzeW5jXCJcbiAgICAgIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuICAgICAgKHZlcnNpb25TZXQpPVwib25WZXJzaW9uU2V0KCRldmVudClcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXItYWN0aW9ucz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, filter, map, Subscription, switchMap, tap } from 'rxjs';
|
|
3
|
+
import { Validators } from '@angular/forms';
|
|
4
|
+
import { NotificationService } from 'carbon-components-angular';
|
|
5
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
import * as i2 from "@valtimo/document";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "@ngx-translate/core";
|
|
11
|
+
import * as i5 from "ngx-logger";
|
|
12
|
+
import * as i6 from "carbon-components-angular";
|
|
13
|
+
import * as i7 from "@angular/common";
|
|
14
|
+
export class DossierManagementExternalStartFormComponent {
|
|
15
|
+
constructor(route, documentService, fb, translateService, logger, notificationService) {
|
|
16
|
+
this.route = route;
|
|
17
|
+
this.documentService = documentService;
|
|
18
|
+
this.fb = fb;
|
|
19
|
+
this.translateService = translateService;
|
|
20
|
+
this.logger = logger;
|
|
21
|
+
this.notificationService = notificationService;
|
|
22
|
+
this._URL_PATTERN = new RegExp('^(https?:\\/\\/)(([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}|\\d{1,3}(\\.\\d{1,3}){3})(:\\d+)?(\\/\\S*)?(\\?\\S*)?(#\\S*)?$');
|
|
23
|
+
this.form = this.fb.group({
|
|
24
|
+
hasExternalForm: [false],
|
|
25
|
+
externalFormUrl: [
|
|
26
|
+
{ value: '', disabled: true },
|
|
27
|
+
[Validators.required, Validators.pattern(this._URL_PATTERN), Validators.maxLength(512)],
|
|
28
|
+
],
|
|
29
|
+
description: [''],
|
|
30
|
+
});
|
|
31
|
+
this.documentDefinitionName$ = this.route.params.pipe(map(params => params?.name), filter(docDefName => !!docDefName));
|
|
32
|
+
this.caseSettings$ = new BehaviorSubject(null);
|
|
33
|
+
this._subscriptions = new Subscription();
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.logger.debug('External Case Start Form - onInit');
|
|
37
|
+
this._subscriptions.add(this.hasExternalForm?.valueChanges.subscribe(isEnabled => {
|
|
38
|
+
if (isEnabled) {
|
|
39
|
+
this.externalFormUrl.enable();
|
|
40
|
+
this.description.enable();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.form.patchValue({ externalFormUrl: '', description: '' });
|
|
44
|
+
this.description.disable();
|
|
45
|
+
this.externalFormUrl.disable();
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
this._subscriptions.add(this.documentDefinitionName$
|
|
49
|
+
.pipe(switchMap(documentDefinitionName => this.documentService.getCaseSettingsForManagement(documentDefinitionName)), tap(caseSettings => {
|
|
50
|
+
this.logger.debug('Fetched case definition settings', caseSettings);
|
|
51
|
+
this.caseSettings$.next(caseSettings);
|
|
52
|
+
}))
|
|
53
|
+
.subscribe());
|
|
54
|
+
this._subscriptions.add(this.caseSettings$.subscribe(caseSettings => {
|
|
55
|
+
if (caseSettings) {
|
|
56
|
+
this.logger.debug('Applying case definition settings to form', caseSettings);
|
|
57
|
+
this.form.setValue({
|
|
58
|
+
hasExternalForm: caseSettings.hasExternalStartForm,
|
|
59
|
+
externalFormUrl: caseSettings.externalStartFormUrl,
|
|
60
|
+
description: caseSettings.externalStartFormDescription,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.logger.debug('External Case Start Form - onDestroy');
|
|
67
|
+
this._subscriptions.unsubscribe();
|
|
68
|
+
}
|
|
69
|
+
get hasExternalForm() {
|
|
70
|
+
return this.form.get('hasExternalForm');
|
|
71
|
+
}
|
|
72
|
+
get externalFormUrl() {
|
|
73
|
+
return this.form.get('externalFormUrl');
|
|
74
|
+
}
|
|
75
|
+
get description() {
|
|
76
|
+
return this.form.get('description');
|
|
77
|
+
}
|
|
78
|
+
onSubmit() {
|
|
79
|
+
if (!this.form.valid)
|
|
80
|
+
return;
|
|
81
|
+
this.logger.debug('Submitted case definition settings form with values:', this.form.value);
|
|
82
|
+
const caseSettings = this.caseSettings$.getValue();
|
|
83
|
+
this.updateCaseSettings(caseSettings.name, {
|
|
84
|
+
hasExternalStartForm: this.hasExternalForm.value,
|
|
85
|
+
externalStartFormUrl: typeof this.externalFormUrl.value === 'string'
|
|
86
|
+
? this.externalFormUrl.value.trim()
|
|
87
|
+
: this.externalFormUrl.value,
|
|
88
|
+
externalStartFormDescription: this.description.value || '',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
updateCaseSettings(documentDefinitionName, caseSettings) {
|
|
92
|
+
this.logger.debug('Updating case definition settings', documentDefinitionName, caseSettings);
|
|
93
|
+
this.documentService
|
|
94
|
+
.patchCaseSettingsForManagement(documentDefinitionName, caseSettings)
|
|
95
|
+
.subscribe({
|
|
96
|
+
next: result => {
|
|
97
|
+
this.logger.debug('Updated case definition settings', result);
|
|
98
|
+
this.caseSettings$.next(result);
|
|
99
|
+
},
|
|
100
|
+
error: e => {
|
|
101
|
+
this.logger.error('An error occurred while updating case definition settings', e);
|
|
102
|
+
this.notificationService.showToast({
|
|
103
|
+
type: 'error',
|
|
104
|
+
duration: CARBON_CONSTANTS.notificationDuration,
|
|
105
|
+
showClose: true,
|
|
106
|
+
title: this.translateService.instant('dossierManagement.externalStartForm.notification.error'),
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
complete: () => {
|
|
110
|
+
this.logger.debug('Finished updating case definition settings');
|
|
111
|
+
this.notificationService.showToast({
|
|
112
|
+
type: 'success',
|
|
113
|
+
duration: CARBON_CONSTANTS.notificationDuration,
|
|
114
|
+
showClose: true,
|
|
115
|
+
title: this.translateService.instant('dossierManagement.externalStartForm.notification.success'),
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementExternalStartFormComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DocumentService }, { token: i3.FormBuilder }, { token: i4.TranslateService }, { token: i5.NGXLogger }, { token: i6.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementExternalStartFormComponent, selector: "valtimo-dossier-management-external-start-form", providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n class=\"external-case-form-container\"\n *ngIf=\"{\n documentDefinitionName: documentDefinitionName$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n [cdsLayer]=\"1\"\n>\n <h4>{{ 'dossierManagement.externalStartForm.title' | translate }}</h4>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [cdsLayer]=\"0\">\n <cds-toggle\n formControlName=\"hasExternalForm\"\n label=\"{{ 'dossierManagement.externalStartForm.enabledToggle' | translate }}\"\n onText=\"{{ 'dossierManagement.externalStartForm.enabledToggleOn' | translate }}\"\n offText=\"{{ 'dossierManagement.externalStartForm.enabledToggleOff' | translate }}\"\n ></cds-toggle>\n\n <cds-label>\n {{ 'dossierManagement.externalStartForm.externalUrl' | translate }}\n <input\n cdsText\n type=\"text\"\n formControlName=\"externalFormUrl\"\n placeholder=\"{{ 'dossierManagement.externalStartForm.externalUrlPlaceholder' | translate }}\"\n maxlength=\"512\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.externalStartForm.description' | translate }}\n <input\n cdsText\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'dossierManagement.externalStartForm.descriptionPlaceholder' | translate }}\"\n maxlength=\"512\"\n />\n </cds-label>\n\n <button cdsButton=\"primary\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'dossierManagement.externalStartForm.apply' | translate }}\n </button>\n </form>\n</cds-tile>\n", styles: [".external-case-form-container,.external-case-form-container form{display:flex;flex-direction:column;gap:16px}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }, { kind: "component", type: i6.Tile, selector: "cds-tile, ibm-tile", inputs: ["theme"] }, { kind: "directive", type: i6.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementExternalStartFormComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'valtimo-dossier-management-external-start-form', providers: [NotificationService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n class=\"external-case-form-container\"\n *ngIf=\"{\n documentDefinitionName: documentDefinitionName$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n [cdsLayer]=\"1\"\n>\n <h4>{{ 'dossierManagement.externalStartForm.title' | translate }}</h4>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [cdsLayer]=\"0\">\n <cds-toggle\n formControlName=\"hasExternalForm\"\n label=\"{{ 'dossierManagement.externalStartForm.enabledToggle' | translate }}\"\n onText=\"{{ 'dossierManagement.externalStartForm.enabledToggleOn' | translate }}\"\n offText=\"{{ 'dossierManagement.externalStartForm.enabledToggleOff' | translate }}\"\n ></cds-toggle>\n\n <cds-label>\n {{ 'dossierManagement.externalStartForm.externalUrl' | translate }}\n <input\n cdsText\n type=\"text\"\n formControlName=\"externalFormUrl\"\n placeholder=\"{{ 'dossierManagement.externalStartForm.externalUrlPlaceholder' | translate }}\"\n maxlength=\"512\"\n />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.externalStartForm.description' | translate }}\n <input\n cdsText\n type=\"text\"\n formControlName=\"description\"\n placeholder=\"{{ 'dossierManagement.externalStartForm.descriptionPlaceholder' | translate }}\"\n maxlength=\"512\"\n />\n </cds-label>\n\n <button cdsButton=\"primary\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'dossierManagement.externalStartForm.apply' | translate }}\n </button>\n </form>\n</cds-tile>\n", styles: [".external-case-form-container,.external-case-form-container form{display:flex;flex-direction:column;gap:16px}\n"] }]
|
|
126
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.DocumentService }, { type: i3.FormBuilder }, { type: i4.TranslateService }, { type: i5.NGXLogger }, { type: i6.NotificationService }] });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWV4dGVybmFsLXN0YXJ0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC1leHRlcm5hbC1zdGFydC1mb3JtL2Rvc3NpZXItbWFuYWdlbWVudC1leHRlcm5hbC1zdGFydC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtZXh0ZXJuYWwtc3RhcnQtZm9ybS9kb3NzaWVyLW1hbmFnZW1lbnQtZXh0ZXJuYWwtc3RhcnQtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHNUYsT0FBTyxFQUErQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBUXJELE1BQU0sT0FBTywyQ0FBMkM7SUF1QnRELFlBQ21CLEtBQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLEVBQWUsRUFDZixnQkFBa0MsRUFDbEMsTUFBaUIsRUFDakIsbUJBQXdDO1FBTHhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNo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QztvQkFDakMsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQjtvQkFDL0MsU0FBUyxFQUFFLElBQUk7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ2xDLDBEQUEwRCxDQUMzRDtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5SVUsMkNBQTJDO21HQUEzQywyQ0FBMkMseUVBRjNDLENBQUMsbUJBQW1CLENBQUMsMEJDZGxDLDZzRUE2REE7OzRGRDdDYSwyQ0FBMkM7a0JBTnZELFNBQVM7K0JBQ0UsZ0RBQWdELGFBRy9DLENBQUMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FzZVNldHRpbmdzLCBEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZXh0ZXJuYWwtc3RhcnQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZXh0ZXJuYWwtc3RhcnQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZXh0ZXJuYWwtc3RhcnQtZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW05vdGlmaWNhdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudEV4dGVybmFsU3RhcnRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9VUkxfUEFUVEVSTiA9IG5ldyBSZWdFeHAoXG4gICAgJ14oaHR0cHM/OlxcXFwvXFxcXC8pKChbYS16QS1aMC05LV0rXFxcXC4pK1thLXpBLVpdezIsfXxcXFxcZHsxLDN9KFxcXFwuXFxcXGR7MSwzfSl7M30pKDpcXFxcZCspPyhcXFxcL1xcXFxTKik/KFxcXFw/XFxcXFMqKT8oI1xcXFxTKik/JCdcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGhhc0V4dGVybmFsRm9ybTogW2ZhbHNlXSxcbiAgICBleHRlcm5hbEZvcm1Vcmw6IFtcbiAgICAgIHt2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5fVVJMX1BBVFRFUk4pLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MTIpXSxcbiAgICBdLFxuICAgIGRlc2NyaXB0aW9uOiBbJyddLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/Lm5hbWUpLFxuICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVNldHRpbmdzJDogQmVoYXZpb3JTdWJqZWN0PENhc2VTZXR0aW5ncz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXh0ZXJuYWwgQ2FzZSBTdGFydCBGb3JtIC0gb25Jbml0Jyk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuaGFzRXh0ZXJuYWxGb3JtPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGlzRW5hYmxlZCA9PiB7XG4gICAgICAgIGlmIChpc0VuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRm9ybVVybC5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uLmVuYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtleHRlcm5hbEZvcm1Vcmw6ICcnLCBkZXNjcmlwdGlvbjogJyd9KTtcbiAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uLmRpc2FibGUoKTtcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRm9ybVVybC5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FzZVNldHRpbmdzRm9yTWFuYWdlbWVudChkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKGNhc2VTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRmV0Y2hlZCBjYXNlIGRlZmluaXRpb24gc2V0dGluZ3MnLCBjYXNlU2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5jYXNlU2V0dGluZ3MkLm5leHQoY2FzZVNldHRpbmdzKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuY2FzZVNldHRpbmdzJC5zdWJzY3JpYmUoY2FzZVNldHRpbmdzID0+IHtcbiAgICAgICAgaWYgKGNhc2VTZXR0aW5ncykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBcHBseWluZyBjYXNlIGRlZmluaXRpb24gc2V0dGluZ3MgdG8gZm9ybScsIGNhc2VTZXR0aW5ncyk7XG4gICAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgICAgICAgIGhhc0V4dGVybmFsRm9ybTogY2FzZVNldHRpbmdzLmhhc0V4dGVybmFsU3RhcnRGb3JtLFxuICAgICAgICAgICAgZXh0ZXJuYWxGb3JtVXJsOiBjYXNlU2V0dGluZ3MuZXh0ZXJuYWxTdGFydEZvcm1VcmwsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY2FzZVNldHRpbmdzLmV4dGVybmFsU3RhcnRGb3JtRGVzY3JpcHRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXh0ZXJuYWwgQ2FzZSBTdGFydCBGb3JtIC0gb25EZXN0cm95Jyk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNFeHRlcm5hbEZvcm0oKTogQWJzdHJhY3RDb250cm9sPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnaGFzRXh0ZXJuYWxGb3JtJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4dGVybmFsRm9ybVVybCgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2V4dGVybmFsRm9ybVVybCcpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHJldHVybjtcblxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdWJtaXR0ZWQgY2FzZSBkZWZpbml0aW9uIHNldHRpbmdzIGZvcm0gd2l0aCB2YWx1ZXM6JywgdGhpcy5mb3JtLnZhbHVlKTtcbiAgICBjb25zdCBjYXNlU2V0dGluZ3MgPSB0aGlzLmNhc2VTZXR0aW5ncyQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLnVwZGF0ZUNhc2VTZXR0aW5ncyhjYXNlU2V0dGluZ3MubmFtZSwge1xuICAgICAgaGFzRXh0ZXJuYWxTdGFydEZvcm06IHRoaXMuaGFzRXh0ZXJuYWxGb3JtLnZhbHVlLFxuICAgICAgZXh0ZXJuYWxTdGFydEZvcm1Vcmw6XG4gICAgICAgIHR5cGVvZiB0aGlzLmV4dGVybmFsRm9ybVVybC52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IHRoaXMuZXh0ZXJuYWxGb3JtVXJsLnZhbHVlLnRyaW0oKVxuICAgICAgICAgIDogdGhpcy5leHRlcm5hbEZvcm1VcmwudmFsdWUsXG4gICAgICBleHRlcm5hbFN0YXJ0Rm9ybURlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDYXNlU2V0dGluZ3MoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nLCBjYXNlU2V0dGluZ3M6IENhc2VTZXR0aW5ncyk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdVcGRhdGluZyBjYXNlIGRlZmluaXRpb24gc2V0dGluZ3MnLCBkb2N1bWVudERlZmluaXRpb25OYW1lLCBjYXNlU2V0dGluZ3MpO1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAucGF0Y2hDYXNlU2V0dGluZ3NGb3JNYW5hZ2VtZW50KGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGNhc2VTZXR0aW5ncylcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdVcGRhdGVkIGNhc2UgZGVmaW5pdGlvbiBzZXR0aW5ncycsIHJlc3VsdCk7XG4gICAgICAgICAgdGhpcy5jYXNlU2V0dGluZ3MkLm5leHQocmVzdWx0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB1cGRhdGluZyBjYXNlIGRlZmluaXRpb24gc2V0dGluZ3MnLCBlKTtcblxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBDQVJCT05fQ09OU1RBTlRTLm5vdGlmaWNhdGlvbkR1cmF0aW9uLFxuICAgICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuZXh0ZXJuYWxTdGFydEZvcm0ubm90aWZpY2F0aW9uLmVycm9yJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRmluaXNoZWQgdXBkYXRpbmcgY2FzZSBkZWZpbml0aW9uIHNldHRpbmdzJyk7XG5cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd1RvYXN0KHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBDQVJCT05fQ09OU1RBTlRTLm5vdGlmaWNhdGlvbkR1cmF0aW9uLFxuICAgICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZG9zc2llck1hbmFnZW1lbnQuZXh0ZXJuYWxTdGFydEZvcm0ubm90aWZpY2F0aW9uLnN1Y2Nlc3MnXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy10aWxlXG4gIGNsYXNzPVwiZXh0ZXJuYWwtY2FzZS1mb3JtLWNvbnRhaW5lclwiXG4gICpuZ0lmPVwie1xuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgY2FzZVNldHRpbmdzOiBjYXNlU2V0dGluZ3MkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgW2Nkc0xheWVyXT1cIjFcIlxuPlxuICA8aDQ+e3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmV4dGVybmFsU3RhcnRGb3JtLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiBbY2RzTGF5ZXJdPVwiMFwiPlxuICAgIDxjZHMtdG9nZ2xlXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJoYXNFeHRlcm5hbEZvcm1cIlxuICAgICAgbGFiZWw9XCJ7eyAnZG9zc2llck1hbmFnZW1lbnQuZXh0ZXJuYWxTdGFydEZvcm0uZW5hYmxlZFRvZ2dsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgb25UZXh0PVwie3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmV4dGVybmFsU3RhcnRGb3JtLmVuYWJsZWRUb2dnbGVPbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgb2ZmVGV4dD1cInt7ICdkb3NzaWVyTWFuYWdlbWVudC5leHRlcm5hbFN0YXJ0Rm9ybS5lbmFibGVkVG9nZ2xlT2ZmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPjwvY2RzLXRvZ2dsZT5cblxuICAgIDxjZHMtbGFiZWw+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuZXh0ZXJuYWxTdGFydEZvcm0uZXh0ZXJuYWxVcmwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsRm9ybVVybFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmV4dGVybmFsU3RhcnRGb3JtLmV4dGVybmFsVXJsUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgbWF4bGVuZ3RoPVwiNTEyXCJcbiAgICAgIC8+XG4gICAgPC9jZHMtbGFiZWw+XG5cbiAgICA8Y2RzLWxhYmVsPlxuICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmV4dGVybmFsU3RhcnRGb3JtLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPGlucHV0XG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LmV4dGVybmFsU3RhcnRGb3JtLmRlc2NyaXB0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgbWF4bGVuZ3RoPVwiNTEyXCJcbiAgICAgIC8+XG4gICAgPC9jZHMtbGFiZWw+XG5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCI+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuZXh0ZXJuYWxTdGFydEZvcm0uYXBwbHknIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZm9ybT5cbjwvY2RzLXRpbGU+XG4iXX0=
|