@firestitch/form 18.0.39 → 18.0.41
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/app/helpers/get-route-component.d.ts +22 -0
- package/esm2022/app/components/form-dialog-actions/form-dialog-actions.component.mjs +3 -3
- package/esm2022/app/directives/form-base/form-base.directive.mjs +4 -3
- package/esm2022/app/guards/form-deactivate.guard.mjs +3 -2
- package/esm2022/app/helpers/get-route-component.mjs +23 -0
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/firestitch-form.mjs +28 -5
- package/fesm2022/firestitch-form.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Type } from '@angular/core';
|
|
2
|
+
import { Route } from '@angular/router';
|
|
3
|
+
/**
|
|
4
|
+
* The component a route renders, however the route declares it.
|
|
5
|
+
*
|
|
6
|
+
* `component:` and `loadComponent:` do NOT land in the same place. The router
|
|
7
|
+
* resolves a lazy component into `_loadedComponent` on the route CONFIG and
|
|
8
|
+
* assigns `component` only on the ActivatedRouteSnapshot — so a `loadComponent`
|
|
9
|
+
* route's `routeConfig.component` is `undefined` for the life of the route.
|
|
10
|
+
* Angular reads it as `component ?? _loadedComponent ?? null` everywhere it
|
|
11
|
+
* needs the type; this does the same.
|
|
12
|
+
*
|
|
13
|
+
* It matters here because the config's component is the WeakMap key the form
|
|
14
|
+
* store is keyed by. Reading `.component` alone hands `undefined` to
|
|
15
|
+
* `WeakMap.set()`, which throws "Invalid value used as weak map key" out of
|
|
16
|
+
* ngOnInit — aborting the hook and leaving the screen half-rendered. Every
|
|
17
|
+
* route written with `loadComponent` hit that.
|
|
18
|
+
*
|
|
19
|
+
* `_loadedComponent` is Angular-private and absent from the public `Route`
|
|
20
|
+
* type, hence the cast.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRouteComponent(route: Route): Type<any>;
|
|
@@ -103,7 +103,7 @@ export class FsFormDialogActionsComponent {
|
|
|
103
103
|
return withinSameDialog(owner, this._dialogRef) ? owner : null;
|
|
104
104
|
}
|
|
105
105
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, host: { properties: { "class.save-create": "showSave || create" }, classAttribute: "form-buttons" }, ngImport: i0, template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}
|
|
106
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, host: { properties: { "class.save-create": "showSave || create" }, classAttribute: "form-buttons" }, ngImport: i0, template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "submitDisabled"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
107
107
|
}
|
|
108
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, decorators: [{
|
|
109
109
|
type: Component,
|
|
@@ -116,7 +116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
116
116
|
MatDialogClose,
|
|
117
117
|
NgTemplateOutlet,
|
|
118
118
|
FsFormDialogCloseDirective,
|
|
119
|
-
], template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}
|
|
119
|
+
], template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}\n"] }]
|
|
120
120
|
}], propDecorators: { save: [{
|
|
121
121
|
type: Input
|
|
122
122
|
}], create: [{
|
|
@@ -130,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
130
130
|
}], name: [{
|
|
131
131
|
type: Input
|
|
132
132
|
}] } });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQXFCcEUsTUFBTSxPQUFPLDRCQUE0QjtJQUV2QywwRkFBMEY7SUFDMUUsSUFBSSxDQUFVO0lBQ2QsTUFBTSxHQUFHLEtB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QUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLGNBQWMsQ0FBZ0MsS0FBUTtRQUM1RCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7dUdBL0dVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLHVTQ25DekMsNi9CQTZDYyw2N0NEakJWLFNBQVMsaUxBQ1QsaUJBQWlCLHVLQUNqQixjQUFjLHFMQUNkLGdCQUFnQixvSkFDaEIsMEJBQTBCOzsyRkFHakIsNEJBQTRCO2tCQWxCeEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxRQUNWO3dCQUNKLE9BQU8sRUFBRSxjQUFjO3dCQUN2QixxQkFBcUIsRUFBRSxvQkFBb0I7cUJBQzVDLFdBQ1E7d0JBQ1AsU0FBUzt3QkFDVCxpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCOzhCQUtlLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWJhc2UnO1xuaW1wb3J0IHsgRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB3aXRoaW5TYW1lRGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycy93aXRoaW4tc2FtZS1kaWFsb2cnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZvcm0tZGlhbG9nLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZm9ybS1idXR0b25zJyxcbiAgICAnW2NsYXNzLnNhdmUtY3JlYXRlXSc6ICdzaG93U2F2ZSB8fCBjcmVhdGUnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqIExlYXZlIHVuc2V0IHRvIGZvbGxvdyB3aGV0aGVyIHRoZSBlbmNsb3NpbmcgZm9ybSBvciBjb250YWluZXIgaGFzIGFueXRoaW5nIHRvIHNhdmUuICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgY3JlYXRlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZSA9IGZhbHNlO1xuICAvKiogTGVhdmUgdW5zZXQgdG8gZmlsbCBpbiB3aGVuZXZlciBTYXZlIGRvZXMgbm90IGFwcGx5LiAqL1xuICBASW5wdXQoKSBwdWJsaWMgZG9uZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlRGF0YSA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpcnR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kaWFsb2dSZWYgPSBpbmplY3Q8TWF0RGlhbG9nUmVmPGFueT4+KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgLy8gQSBkaWFsb2cgb3BlbmVkIHdpdGggYHZpZXdDb250YWluZXJSZWZgIHJlc29sdmVzIHRocm91Z2ggdG8gd2hhdGV2ZXIgb3BlbmVkXG4gIC8vIGl0LCBzbyBhbiBvd25lciBmcm9tIGFub3RoZXIgZGlhbG9nIGlzIGRpc2NhcmRlZCAtIHRoZXNlIGFjdGlvbnMgYmVsb25nIHRvXG4gIC8vIHRoZWlyIG93biBkaWFsb2cncyBmb3JtIHNldCBhbmQgbm8gb25lIGVsc2Uncy5cbiAgcHJpdmF0ZSBfY29udGFpbmVyID0gdGhpcy5fb3duRGlhbG9nT25seShpbmplY3QoRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pKTtcbiAgcHJpdmF0ZSBfZm9ybSA9IHRoaXMuX293bkRpYWxvZ09ubHkoaW5qZWN0KEZzRm9ybURpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogV2hhdGV2ZXIgb3ducyB0aGUgZm9ybSBzZXQgdGhlc2UgYWN0aW9ucyBhY3Qgb24sIG9yIG51bGwgd2hlbiBub3RoaW5nIGRvZXMuXG4gICAqIEEgY29udGFpbmVyIGFuc3dlcnMgZm9yIGV2ZXJ5IGZvcm0gbW91bnRlZCB1bmRlciBpdDsgZmFpbGluZyB0aGF0IHRoZVxuICAgKiBlbmNsb3NpbmcgZm9ybSdzIHJvb3QgYW5zd2VycyBmb3IgaXRzZWxmIGFuZCBhbnl0aGluZyBsaW5rZWQgaW50byBpdC5cbiAgICovXG4gIHByaXZhdGUgZ2V0IF9vd25lcigpOiBGc0Zvcm1CYXNlRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyIHx8IHRoaXMuX2Zvcm0/LnJvb3RGb3JtIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhbmQgRG9uZSBhcmUgb25lIGRlY2lzaW9uIC0gd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBzYXZlIC0gcmF0aGVyXG4gICAqIHRoYW4gdHdvIGluZGVwZW5kZW50IHN3aXRjaGVzLCBzbyBhIGJhcmUgYDxmcy1mb3JtLWRpYWxvZy1hY3Rpb25zPmAgcmVzb2x2ZXNcbiAgICogaXQgb2ZmIHRoZSBmb3JtIHNldCBpdCBzaXRzIGluIGFuZCBuZWVkcyBubyBiaW5kaW5ncyBhdCBhbGwuIEEgZm9vdGVyIGluIGFcbiAgICogY29udGFpbmVyIHN3YXBzIFNhdmUgZm9yIERvbmUgYXMgdGFicyBjaGFuZ2Ugd2l0aG91dCB0aGUgZGlhbG9nIGxpc3RpbmdcbiAgICogd2hpY2ggdGFicyBhcmUgc2F2YWJsZSwgYW5kIGEgZGlhbG9nIHdpdGggbm8gZm9ybSBhdCBhbGwgLSBhIHJlYWQtb25seSBvbmVcbiAgICogb2YgbGFiZWxsZWQgZmFjdHMgLSBnZXRzIERvbmUsIGJlY2F1c2UgYSBzdWJtaXQgYnV0dG9uIHRoZXJlIGhhcyBub3RoaW5nIHRvXG4gICAqIHN1Ym1pdC5cbiAgICpcbiAgICogQW4gZXhwbGljaXQgYmluZGluZyBhbHdheXMgd2lucy4gYFtkb25lXT1cInRydWVcImAgb24gaXRzIG93biBtZWFucyBEb25lIGFuZFxuICAgKiBvbmx5IERvbmU6IHR1cm5pbmcgRG9uZSBvbiB3aGlsZSBsZWF2aW5nIGEgU2F2ZSBiZXNpZGUgaXQgaXMgbmV2ZXIgd2hhdCB0aGVcbiAgICogY2FsbGVyIG1lYW50LCBhbmQgdGhlIHR3by1mbGFnIHZlcnNpb24gb2YgdGhpcyBsZXQgdGhhdCBoYXBwZW4gc2lsZW50bHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3dTYXZlKCk6IGJvb2xlYW4ge1xuICAgIGlmKHRoaXMuc2F2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYXZlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRvbmUgPT09IHRydWUgPyBmYWxzZSA6IHRoaXMuX293bmVyPy5zdWJtaXRzID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERvbmUgc3RhbmRzIGluIGZvciBhIFNhdmUgdGhhdCBkb2VzIG5vdCBhcHBseSwgc28gaXQgZmlsbHMgaW4gb25seSB3aGVyZSBhXG4gICAqIFNhdmUgd291bGQgb3RoZXJ3aXNlIGhhdmUgZ29uZS4gYFtzYXZlXT1cImZhbHNlXCJgIGlzIHRoZSBjYWxsZXIgc2F5aW5nIHRoZXlcbiAgICogYXJlIGZvb3RpbmcgdGhlIGRpYWxvZyB0aGVtc2VsdmVzIC0gdXN1YWxseSB3aXRoIGJ1dHRvbnMgcHJvamVjdGVkIGludG8gdGhlXG4gICAqIGNvbnRlbnQgc2xvdCwgc29tZXRpbWVzIGluY2x1ZGluZyB0aGVpciBvd24gc3VibWl0IC0gYW5kIGRyb3BwaW5nIGFuXG4gICAqIHVuYXNrZWQtZm9yIERvbmUgYmVzaWRlIHRob3NlIHdvdWxkIGJlIHRoaXMgY29tcG9uZW50IG92ZXJydWxpbmcgdGhlbS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2hvd0RvbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG9uZSA/PyAodGhpcy5zYXZlID09PSB1bmRlZmluZWQgJiYgIXRoaXMuc2hvd1NhdmUgJiYgIXRoaXMuY3JlYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBvd25lciA9IHRoaXMuX293bmVyO1xuXG4gICAgaWYob3duZXIpIHtcbiAgICAgIC8vIFRyYWNrIHRoZSB3aG9sZSBzZXQsIG5vdCBvbmUgZm9ybSdzIG93biBjb250cm9sczogd2l0aCBhIGZvcm0gc2NvcGVkIHRvIGFcbiAgICAgIC8vIHRhYidzIGZpZWxkcywgdGhlIGFjdGlvbnMgc2l0IG91dHNpZGUgaXQgaW4gdGhlIGRpYWxvZyBmb290ZXIgYW5kIHRoYXRcbiAgICAgIC8vIGZvcm0ncyBOZ0Zvcm0gaG9sZHMgbm90aGluZyBvZiBpdHMgb3duLiBSZWNvbXB1dGVkIG9uIGV2ZXJ5IGVtaXNzaW9uXG4gICAgICAvLyByYXRoZXIgdGhhbiBsYXRjaGVkLCBzbyBhIHN3aXRjaCB0byBhIHByaXN0aW5lIHRhYiBjbGVhcnMgaXQgdG9vLlxuICAgICAgb3duZXIuZGlydHlDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IG93bmVyLmRpcnR5TGlua2VkO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgb3duZXIuc3VibWl0dGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWxheSg1MCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcbiAgICAgIHRoaXMuX2Zvcm0ucmVzZXRlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBLZWVwcyBhIERJLXJlc29sdmVkIG93bmVyIG9ubHkgd2hlbiBpdCBiZWxvbmdzIHRvIHRoZXNlIGFjdGlvbnMnIGRpYWxvZy4gKi9cbiAgcHJpdmF0ZSBfb3duRGlhbG9nT25seTxUIGV4dGVuZHMgRnNGb3JtQmFzZURpcmVjdGl2ZT4ob3duZXI6IFQpOiBUIHtcbiAgICByZXR1cm4gd2l0aGluU2FtZURpYWxvZyhvd25lciwgdGhpcy5fZGlhbG9nUmVmKSA/IG93bmVyIDogbnVsbDtcbiAgfVxufVxuIiwiQGlmIChzaG93U2F2ZSB8fCBjcmVhdGUpIHtcbiAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW25hbWVdPVwibmFtZVwiPlxuICAgIHt7IGNyZWF0ZSA/ICdDcmVhdGUnIDogJ1NhdmUnIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiY2xvc2UgJiYgIWRpcnR5ICYmICFjcmVhdGVcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgIENhbmNlbFxuICA8L2J1dHRvbj5cbn1cbkBpZiAoc2hvd0RvbmUpIHtcbiAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgIERvbmVcbiAgPC9idXR0b24+XG59XG5AaWYgKHNob3dTYXZlIHx8IGNyZWF0ZSkge1xuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKGNsb3NlKSB7XG4gIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxuICAgICAgZnNGb3JtRGlhbG9nQ2xvc2VcbiAgICAgIFtjbG9zZURhdGFdPVwiY2xvc2VEYXRhXCJcbiAgICAgIFtjb2xvcl09XCJkaXJ0eSA/ICdiYXNpYycgOiAncHJpbWFyeSdcIj5cbiAgICBDbG9zZVxuICA8L2J1dHRvbj5cbn1cbkBpZiAoIShzaG93U2F2ZSB8fCBjcmVhdGUpKSB7XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbn1cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9ybS1kaWFsb2ctYWN0aW9ucy9mb3JtLWRpYWxvZy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb3JtLWRpYWxvZy1hY3Rpb25zL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQXFCcEUsTUFBTSxPQUFPLDRCQUE0QjtJQUV2QywwRkFBMEY7SUFDMUUsSUFBSSxDQUFVO0lBQ2QsTUFBTSxHQUFHLEtB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QUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLGNBQWMsQ0FBZ0MsS0FBUTtRQUM1RCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7dUdBL0dVLDRCQUE0QjsyRkFBNUIsNEJBQTRCLHVTQ25DekMsNi9CQTZDYyw2ckNEakJWLFNBQVMsaUxBQ1QsaUJBQWlCLHVLQUNqQixjQUFjLHFMQUNkLGdCQUFnQixvSkFDaEIsMEJBQTBCOzsyRkFHakIsNEJBQTRCO2tCQWxCeEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxRQUNWO3dCQUNKLE9BQU8sRUFBRSxjQUFjO3dCQUN2QixxQkFBcUIsRUFBRSxvQkFBb0I7cUJBQzVDLFdBQ1E7d0JBQ1AsU0FBUzt3QkFDVCxpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7cUJBQzNCOzhCQUtlLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0Zvcm1CYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWJhc2UnO1xuaW1wb3J0IHsgRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB3aXRoaW5TYW1lRGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycy93aXRoaW4tc2FtZS1kaWFsb2cnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZvcm0tZGlhbG9nLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1kaWFsb2ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZm9ybS1idXR0b25zJyxcbiAgICAnW2NsYXNzLnNhdmUtY3JlYXRlXSc6ICdzaG93U2F2ZSB8fCBjcmVhdGUnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRnNGb3JtRGlhbG9nQ2xvc2VEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqIExlYXZlIHVuc2V0IHRvIGZvbGxvdyB3aGV0aGVyIHRoZSBlbmNsb3NpbmcgZm9ybSBvciBjb250YWluZXIgaGFzIGFueXRoaW5nIHRvIHNhdmUuICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgY3JlYXRlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZSA9IGZhbHNlO1xuICAvKiogTGVhdmUgdW5zZXQgdG8gZmlsbCBpbiB3aGVuZXZlciBTYXZlIGRvZXMgbm90IGFwcGx5LiAqL1xuICBASW5wdXQoKSBwdWJsaWMgZG9uZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlRGF0YSA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpcnR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kaWFsb2dSZWYgPSBpbmplY3Q8TWF0RGlhbG9nUmVmPGFueT4+KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgLy8gQSBkaWFsb2cgb3BlbmVkIHdpdGggYHZpZXdDb250YWluZXJSZWZgIHJlc29sdmVzIHRocm91Z2ggdG8gd2hhdGV2ZXIgb3BlbmVkXG4gIC8vIGl0LCBzbyBhbiBvd25lciBmcm9tIGFub3RoZXIgZGlhbG9nIGlzIGRpc2NhcmRlZCAtIHRoZXNlIGFjdGlvbnMgYmVsb25nIHRvXG4gIC8vIHRoZWlyIG93biBkaWFsb2cncyBmb3JtIHNldCBhbmQgbm8gb25lIGVsc2Uncy5cbiAgcHJpdmF0ZSBfY29udGFpbmVyID0gdGhpcy5fb3duRGlhbG9nT25seShpbmplY3QoRnNGb3JtQ29udGFpbmVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pKTtcbiAgcHJpdmF0ZSBfZm9ybSA9IHRoaXMuX293bkRpYWxvZ09ubHkoaW5qZWN0KEZzRm9ybURpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KSk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogV2hhdGV2ZXIgb3ducyB0aGUgZm9ybSBzZXQgdGhlc2UgYWN0aW9ucyBhY3Qgb24sIG9yIG51bGwgd2hlbiBub3RoaW5nIGRvZXMuXG4gICAqIEEgY29udGFpbmVyIGFuc3dlcnMgZm9yIGV2ZXJ5IGZvcm0gbW91bnRlZCB1bmRlciBpdDsgZmFpbGluZyB0aGF0IHRoZVxuICAgKiBlbmNsb3NpbmcgZm9ybSdzIHJvb3QgYW5zd2VycyBmb3IgaXRzZWxmIGFuZCBhbnl0aGluZyBsaW5rZWQgaW50byBpdC5cbiAgICovXG4gIHByaXZhdGUgZ2V0IF9vd25lcigpOiBGc0Zvcm1CYXNlRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyIHx8IHRoaXMuX2Zvcm0/LnJvb3RGb3JtIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhbmQgRG9uZSBhcmUgb25lIGRlY2lzaW9uIC0gd2hldGhlciB0aGVyZSBpcyBhbnl0aGluZyB0byBzYXZlIC0gcmF0aGVyXG4gICAqIHRoYW4gdHdvIGluZGVwZW5kZW50IHN3aXRjaGVzLCBzbyBhIGJhcmUgYDxmcy1mb3JtLWRpYWxvZy1hY3Rpb25zPmAgcmVzb2x2ZXNcbiAgICogaXQgb2ZmIHRoZSBmb3JtIHNldCBpdCBzaXRzIGluIGFuZCBuZWVkcyBubyBiaW5kaW5ncyBhdCBhbGwuIEEgZm9vdGVyIGluIGFcbiAgICogY29udGFpbmVyIHN3YXBzIFNhdmUgZm9yIERvbmUgYXMgdGFicyBjaGFuZ2Ugd2l0aG91dCB0aGUgZGlhbG9nIGxpc3RpbmdcbiAgICogd2hpY2ggdGFicyBhcmUgc2F2YWJsZSwgYW5kIGEgZGlhbG9nIHdpdGggbm8gZm9ybSBhdCBhbGwgLSBhIHJlYWQtb25seSBvbmVcbiAgICogb2YgbGFiZWxsZWQgZmFjdHMgLSBnZXRzIERvbmUsIGJlY2F1c2UgYSBzdWJtaXQgYnV0dG9uIHRoZXJlIGhhcyBub3RoaW5nIHRvXG4gICAqIHN1Ym1pdC5cbiAgICpcbiAgICogQW4gZXhwbGljaXQgYmluZGluZyBhbHdheXMgd2lucy4gYFtkb25lXT1cInRydWVcImAgb24gaXRzIG93biBtZWFucyBEb25lIGFuZFxuICAgKiBvbmx5IERvbmU6IHR1cm5pbmcgRG9uZSBvbiB3aGlsZSBsZWF2aW5nIGEgU2F2ZSBiZXNpZGUgaXQgaXMgbmV2ZXIgd2hhdCB0aGVcbiAgICogY2FsbGVyIG1lYW50LCBhbmQgdGhlIHR3by1mbGFnIHZlcnNpb24gb2YgdGhpcyBsZXQgdGhhdCBoYXBwZW4gc2lsZW50bHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3dTYXZlKCk6IGJvb2xlYW4ge1xuICAgIGlmKHRoaXMuc2F2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYXZlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRvbmUgPT09IHRydWUgPyBmYWxzZSA6IHRoaXMuX293bmVyPy5zdWJtaXRzID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERvbmUgc3RhbmRzIGluIGZvciBhIFNhdmUgdGhhdCBkb2VzIG5vdCBhcHBseSwgc28gaXQgZmlsbHMgaW4gb25seSB3aGVyZSBhXG4gICAqIFNhdmUgd291bGQgb3RoZXJ3aXNlIGhhdmUgZ29uZS4gYFtzYXZlXT1cImZhbHNlXCJgIGlzIHRoZSBjYWxsZXIgc2F5aW5nIHRoZXlcbiAgICogYXJlIGZvb3RpbmcgdGhlIGRpYWxvZyB0aGVtc2VsdmVzIC0gdXN1YWxseSB3aXRoIGJ1dHRvbnMgcHJvamVjdGVkIGludG8gdGhlXG4gICAqIGNvbnRlbnQgc2xvdCwgc29tZXRpbWVzIGluY2x1ZGluZyB0aGVpciBvd24gc3VibWl0IC0gYW5kIGRyb3BwaW5nIGFuXG4gICAqIHVuYXNrZWQtZm9yIERvbmUgYmVzaWRlIHRob3NlIHdvdWxkIGJlIHRoaXMgY29tcG9uZW50IG92ZXJydWxpbmcgdGhlbS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2hvd0RvbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG9uZSA/PyAodGhpcy5zYXZlID09PSB1bmRlZmluZWQgJiYgIXRoaXMuc2hvd1NhdmUgJiYgIXRoaXMuY3JlYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBvd25lciA9IHRoaXMuX293bmVyO1xuXG4gICAgaWYob3duZXIpIHtcbiAgICAgIC8vIFRyYWNrIHRoZSB3aG9sZSBzZXQsIG5vdCBvbmUgZm9ybSdzIG93biBjb250cm9sczogd2l0aCBhIGZvcm0gc2NvcGVkIHRvIGFcbiAgICAgIC8vIHRhYidzIGZpZWxkcywgdGhlIGFjdGlvbnMgc2l0IG91dHNpZGUgaXQgaW4gdGhlIGRpYWxvZyBmb290ZXIgYW5kIHRoYXRcbiAgICAgIC8vIGZvcm0ncyBOZ0Zvcm0gaG9sZHMgbm90aGluZyBvZiBpdHMgb3duLiBSZWNvbXB1dGVkIG9uIGV2ZXJ5IGVtaXNzaW9uXG4gICAgICAvLyByYXRoZXIgdGhhbiBsYXRjaGVkLCBzbyBhIHN3aXRjaCB0byBhIHByaXN0aW5lIHRhYiBjbGVhcnMgaXQgdG9vLlxuICAgICAgb3duZXIuZGlydHlDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IG93bmVyLmRpcnR5TGlua2VkO1xuICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgb3duZXIuc3VibWl0dGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWxheSg1MCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmKHRoaXMuX2Zvcm0pIHtcbiAgICAgIHRoaXMuX2Zvcm0ucmVzZXRlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBLZWVwcyBhIERJLXJlc29sdmVkIG93bmVyIG9ubHkgd2hlbiBpdCBiZWxvbmdzIHRvIHRoZXNlIGFjdGlvbnMnIGRpYWxvZy4gKi9cbiAgcHJpdmF0ZSBfb3duRGlhbG9nT25seTxUIGV4dGVuZHMgRnNGb3JtQmFzZURpcmVjdGl2ZT4ob3duZXI6IFQpOiBUIHtcbiAgICByZXR1cm4gd2l0aGluU2FtZURpYWxvZyhvd25lciwgdGhpcy5fZGlhbG9nUmVmKSA/IG93bmVyIDogbnVsbDtcbiAgfVxufVxuIiwiQGlmIChzaG93U2F2ZSB8fCBjcmVhdGUpIHtcbiAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW25hbWVdPVwibmFtZVwiPlxuICAgIHt7IGNyZWF0ZSA/ICdDcmVhdGUnIDogJ1NhdmUnIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiY2xvc2UgJiYgIWRpcnR5ICYmICFjcmVhdGVcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgIENhbmNlbFxuICA8L2J1dHRvbj5cbn1cbkBpZiAoc2hvd0RvbmUpIHtcbiAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgIERvbmVcbiAgPC9idXR0b24+XG59XG5AaWYgKHNob3dTYXZlIHx8IGNyZWF0ZSkge1xuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKGNsb3NlKSB7XG4gIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJjbG9zZS1idXR0b25cIlxuICAgICAgZnNGb3JtRGlhbG9nQ2xvc2VcbiAgICAgIFtjbG9zZURhdGFdPVwiY2xvc2VEYXRhXCJcbiAgICAgIFtjb2xvcl09XCJkaXJ0eSA/ICdiYXNpYycgOiAncHJpbWFyeSdcIj5cbiAgICBDbG9zZVxuICA8L2J1dHRvbj5cbn1cbkBpZiAoIShzaG93U2F2ZSB8fCBjcmVhdGUpKSB7XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbn1cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -10,6 +10,7 @@ import { FormStatus } from '../../enums/form-status';
|
|
|
10
10
|
import { FormDeactivateGuard } from '../../guards/form-deactivate.guard';
|
|
11
11
|
import { confirmResultContinue } from '../../helpers';
|
|
12
12
|
import { getActiveRoute } from '../../helpers/get-active-route';
|
|
13
|
+
import { getRouteComponent } from '../../helpers/get-route-component';
|
|
13
14
|
import { FsForm } from '../../services/fsform.service';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
/**
|
|
@@ -315,7 +316,7 @@ export class FsFormBaseDirective {
|
|
|
315
316
|
if (!this._activatedRouteConfig) {
|
|
316
317
|
return;
|
|
317
318
|
}
|
|
318
|
-
this._form.registerFormDirective(this._activatedRouteConfig
|
|
319
|
+
this._form.registerFormDirective(getRouteComponent(this._activatedRouteConfig), this);
|
|
319
320
|
if (!Array.isArray(this._activatedRouteConfig.canDeactivate)) {
|
|
320
321
|
this._activatedRouteConfig.canDeactivate = [];
|
|
321
322
|
}
|
|
@@ -348,7 +349,7 @@ export class FsFormBaseDirective {
|
|
|
348
349
|
guards.splice(guardIndex, 1);
|
|
349
350
|
}
|
|
350
351
|
}
|
|
351
|
-
this._form.removeFormDirective(this._activatedRouteConfig
|
|
352
|
+
this._form.removeFormDirective(getRouteComponent(this._activatedRouteConfig));
|
|
352
353
|
}
|
|
353
354
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
354
355
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsFormBaseDirective, inputs: { confirmTabs: "confirmTabs", confirm: "confirm", confirmDialog: "confirmDialog", confirmDrawer: "confirmDrawer", confirmBrowser: "confirmBrowser", shortcuts: "shortcuts", deactivationGuard: "deactivationGuard" }, queries: [{ propertyName: "_tabGroups", predicate: MatTabGroup, descendants: true }], ngImport: i0 });
|
|
@@ -373,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
373
374
|
type: ContentChildren,
|
|
374
375
|
args: [MatTabGroup, { descendants: true }]
|
|
375
376
|
}] } });
|
|
376
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1iYXNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9mb3JtLWJhc2UvZm9ybS1iYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxXQUFXLEVBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3ZEOzs7Ozs7Ozs7O0dBVUc7QUFFSCxN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QUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQWNFLFVBQVU7c0JBRGpCLGVBQWU7dUJBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRUYWIsIE1hdFRhYkdyb3VwLCBNYXRUYWJIZWFkZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcblxuaW1wb3J0IHsgRHJhd2VyUmVmIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZHJhd2VyJztcblxuaW1wb3J0IHsgZGVmZXIsIGZyb21FdmVudCwgaWlmLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbmZpcm1SZXN1bHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi4vLi4vZW51bXMvZm9ybS1zdGF0dXMnO1xuaW1wb3J0IHsgRm9ybURlYWN0aXZhdGVHdWFyZCB9IGZyb20gJy4uLy4uL2d1YXJkcy9mb3JtLWRlYWN0aXZhdGUuZ3VhcmQnO1xuaW1wb3J0IHsgY29uZmlybVJlc3VsdENvbnRpbnVlIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBnZXRBY3RpdmVSb3V0ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LWFjdGl2ZS1yb3V0ZSc7XG5pbXBvcnQgeyBDb25maXJtQ29uZmlnLCBDb25maXJtVGFiR3JvdXAsIFN1Ym1pdEV2ZW50LCBTdWJtaXR0ZWRFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNGb3JtIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnNmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB0eXBlIHsgRnNGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZm9ybS9mb3JtLmRpcmVjdGl2ZSc7XG5cblxuLyoqXG4gKiBTaGFyZWQgYnkgdGhlIHR3byB0aGluZ3MgdGhhdCBjYW4gb3duIGEgc2V0IG9mIGZvcm1zOiBhbiBgZnNGb3JtYCBzaXR0aW5nIGF0XG4gKiB0aGUgcm9vdCBvZiBpdHMgbGlua2VkIHNldCwgYW5kIGFuIGBmc0Zvcm1Db250YWluZXJgIGhvbGRpbmcgZm9ybXMgdGhhdCBhcmVcbiAqIHNpYmxpbmdzIHJhdGhlciB0aGFuIG5lc3RlZC5cbiAqXG4gKiBJdCBob2xkcyB0aGUgc3VibWl0LWJ1dHRvbiByZWdpc3RyeSBib3RoIG9mIHRoZW0gZXhwb3NlIHRvIGJ1dHRvbnMsIGFuZCB0aGVcbiAqIGxpZmVjeWNsZSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHNldCBhcyBhIHdob2xlIHJhdGhlciB0aGFuIHRvIGFueSBvbmUgZm9ybSAtXG4gKiB0aGUgZGlhbG9nIGJhY2tkcm9wIGFuZCBFc2NhcGUsIEN0cmwrUywgdGhlIGJyb3dzZXIgY2xvc2UgcHJvbXB0LCB0aGUgZHJhd2VyXG4gKiBhbmQgdGFiLXN3aXRjaCBjb25maXJtcy4gRXhhY3RseSBvbmUgb3duZXIgcmVnaXN0ZXJzIHRoYXQgbGlmZWN5Y2xlOyBzZWVcbiAqIGBfcmVnaXN0ZXJPd25lckxpZmVjeWNsZWAuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZzRm9ybUJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1UYWJzID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybTogQ29uZmlybUNvbmZpZyB8IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maXJtRGlhbG9nID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybURyYXdlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1Ccm93c2VyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvcnRjdXRzID0gdHJ1ZTsgLy8gQ3RybCArIHNcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVhY3RpdmF0aW9uR3VhcmQgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByb3RlY3RlZCBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgX2VsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBfZm9ybSA9IGluamVjdChGc0Zvcm0pO1xuICBwcm90ZWN0ZWQgX3JvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJvdGVjdGVkIF9kaWFsb2dSZWYgPSBpbmplY3Q8TWF0RGlhbG9nUmVmPGFueT4+KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJvdGVjdGVkIF9kcmF3ZXJSZWYgPSBpbmplY3Q8RHJhd2VyUmVmPGFueT4+KERyYXdlclJlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJvdGVjdGVkIF9kaWFsb2dCYWNrZHJvcEVzY2FwZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2FjdGl2YXRlZFJvdXRlQ29uZmlnOiBSb3V0ZSB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRUYWJHcm91cCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIF90YWJHcm91cHM6IFF1ZXJ5TGlzdDxNYXRUYWJHcm91cD4gPSBuZXcgUXVlcnlMaXN0KCk7XG5cbiAgcHJpdmF0ZSBfYnV0dG9ucyA9IG5ldyBRdWVyeUxpc3Q8RnNCdXR0b25EaXJlY3RpdmU+KCk7XG4gIHByaXZhdGUgX2FjdGl2ZVN1Ym1pdEJ1dHRvbjogRnNCdXR0b25EaXJlY3RpdmU7XG4gIHByaXZhdGUgX2NvbmZpcm1UYWJHcm91cHMgPSBuZXcgV2Vha1NldDxNYXRUYWJHcm91cD4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBzdWJtaXR0aW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gYW55dGhpbmcgaW4gdGhlIG93bmVkIHNldCBoYXMgYSBzdWJtaXQgaGFuZGxlciAtIGkuZS4gdGhlcmUgaXNcbiAgICogc29tZXRoaW5nIGZvciBhIFNhdmUgYnV0dG9uIHRvIGRvLiBCb3RoIGEgZm9ybSBhbmQgYSBjb250YWluZXIgYW5zd2VyIHRoaXNcbiAgICogb3ZlciB0aGVpciBsaW5rZWQgc2V0LCBzbyB3aGljaGV2ZXIgb25lIG93bnMgYSBmb290ZXIgY2FuIGJlIGFza2VkIHRoZSBzYW1lXG4gICAqIHF1ZXN0aW9uIHdpdGhvdXQga25vd2luZyB3aGljaCBpdCBnb3QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3VibWl0czogYm9vbGVhbjtcblxuICAvKiogVHJ1ZSB3aGVuIGFueXRoaW5nIGluIHRoZSBvd25lZCBzZXQgaGFzIHVuc2F2ZWQgY2hhbmdlcy4gKi9cbiAgcHVibGljIGFic3RyYWN0IGRpcnR5TGlua2VkOiBib29sZWFuO1xuXG4gIC8qKiBFdmVyeSBmb3JtIGluIHRoZSBvd25lZCBzZXQsIGF0IGFueSBkZXB0aC4gKi9cbiAgcHVibGljIGFic3RyYWN0IGxpbmtlZEZvcm1zOiBGc0Zvcm1EaXJlY3RpdmVbXTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIG93bmVkIHNldCdzIGRpcnR5IHN0YXRlIG1heSBoYXZlIG1vdmVkLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZGlydHlDaGFuZ2UkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIC8qKiBFbWl0cyBvbmNlIGEgc3VibWl0IG92ZXIgdGhlIG93bmVkIHNldCBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHN1Ym1pdHRlZCQ6IE9ic2VydmFibGU8U3VibWl0dGVkRXZlbnQ+O1xuXG4gIC8qKiBUcmFja3MgdGhlIG93bmVkIHNldCdzIHN1Ym1pdCBsaWZlY3ljbGUsIHNvIHRoZSBkcmF3ZXIgY2FuIHdhaXQgb25lIG91dC4gKi9cbiAgcHVibGljIGFic3RyYWN0IHN0YXR1cyQ6IE9ic2VydmFibGU8Rm9ybVN0YXR1cz47XG5cbiAgLyoqXG4gICAqIFRoZSBkaWFsb2cgdGhpcyBvd25lciBsaXZlcyBpbiwgb3IgbnVsbCBvdXRzaWRlIG9uZS4gVXNlZCB0byBrZWVwIGEgZm9ybSBzZXRcbiAgICogZnJvbSBzcGFubmluZyBhIGRpYWxvZyBib3VuZGFyeSAtIHNlZSBgd2l0aGluU2FtZURpYWxvZ2AuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRpYWxvZ1JlZigpOiBNYXREaWFsb2dSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1JlZjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWdpc3Rlck93bmVyTGlmZWN5Y2xlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdGVyT3duZXJDb250ZW50TGlmZWN5Y2xlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc3Ryb3kkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kZXN0cm95JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhbnVwQ2FuRGVhY3RpdmF0ZSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9ucygpOiBRdWVyeUxpc3Q8RnNCdXR0b25EaXJlY3RpdmU+IHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlU3VibWl0QnV0dG9uKCk6IEZzQnV0dG9uRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlU3VibWl0QnV0dG9uO1xuICB9XG5cbiAgcHVibGljIHNldCBhY3RpdmVTdWJtaXRCdXR0b24oYnV0dG9uOiBGc0J1dHRvbkRpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2FjdGl2ZVN1Ym1pdEJ1dHRvbiA9IGJ1dHRvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCcmluZyBhIHRhYiBncm91cCBpbnRvIHRoaXMgb3duZXIncyB1bnNhdmVkLWNoYW5nZXMgY29uZmlybS5cbiAgICpcbiAgICogYF90YWJHcm91cHNgIG9ubHkgcmVhY2hlcyBncm91cHMgaW4gdGhpcyBvd25lcidzIHByb2plY3RlZCBjb250ZW50LCBzbyBhIGdyb3VwXG4gICAqIGRlY2xhcmVkIGluc2lkZSBhIGNoaWxkIGNvbXBvbmVudCdzIG93biB0ZW1wbGF0ZSBoYXMgdG8gYW5ub3VuY2UgaXRzZWxmLlxuICAgKiBgZnNGb3JtQ29uZmlybVRhYnNgIGNhbGxzIHRoaXMgLSBjb25zdW1lcnMgbmV2ZXIgY2FsbCBpdCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclRhYkdyb3VwKHRhYkdyb3VwOiBNYXRUYWJHcm91cCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybVRhYkdyb3VwKHRhYkdyb3VwKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCdXR0b24oYnV0dG9uOiBGc0J1dHRvbkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIHRoaXMuX2J1dHRvbnNcbiAgICAgIC5yZXNldChcbiAgICAgICAgW1xuICAgICAgICAgIC4uLnRoaXMuX2J1dHRvbnMudG9BcnJheSgpLFxuICAgICAgICAgIGJ1dHRvbixcbiAgICAgICAgXSk7XG5cbiAgICAvLyBRdWVyeUxpc3QucmVzZXQoKSBkb2VzIG5vdCBlbWl0IGBjaGFuZ2VzYDsgbm90aWZ5IHNvIHN1YnNjcmliZXJzIChlLmcuIHRoZVxuICAgIC8vIGZvcm0ncyBkaXJ0eS1zdWJtaXQtYnV0dG9uIHRyYWNraW5nKSByZWFjdCB0byBidXR0b25zIGJlaW5nIHJlZ2lzdGVyZWQuXG4gICAgdGhpcy5fYnV0dG9ucy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVCdXR0b24oYnV0dG9uOiBGc0J1dHRvbkRpcmVjdGl2ZSk6IHZvaWQge1xuICAgIGlmKHRoaXMuX2FjdGl2ZVN1Ym1pdEJ1dHRvbiA9PT0gYnV0dG9uKSB7XG4gICAgICB0aGlzLl9hY3RpdmVTdWJtaXRCdXR0b24gPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2J1dHRvbnMucmVzZXQoXG4gICAgICBbXG4gICAgICAgIC4uLnRoaXMuX2J1dHRvbnMudG9BcnJheSgpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gKGJ1dHRvbiAhPT0gaXRlbSkpLFxuICAgICAgXSk7XG5cbiAgICB0aGlzLl9idXR0b25zLm5vdGlmeU9uQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5dGhpbmcgaGVyZSBhY3RzIG9uIHRoZSBmb3JtIHNldCBhcyBhIHdob2xlLCBzbyBleGFjdGx5IG9uZSB0aGluZyBtYXlcbiAgICogcmVnaXN0ZXIgaXQuIEEgZm9ybSBsaW5rZWQgaW50byBhIHBhcmVudCBkZWZlcnMgdG8gdGhhdCBwYXJlbnQ7IGV2ZXJ5IGZvcm1cbiAgICogaW5zaWRlIGEgY29udGFpbmVyIGRlZmVycyB0byB0aGUgY29udGFpbmVyLiBSZWdpc3RlcmluZyB0d2ljZSB3b3VsZCBwdXQgdHdvXG4gICAqIGNvbmZpcm1zIG9uIHRoZSBzYW1lIGJhY2tkcm9wIGNsaWNrIGFuZCB0d28gaGFuZGxlcnMgb24gdGhlIHNhbWUgQ3RybCtTLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9yZWdpc3Rlck93bmVyTGlmZWN5Y2xlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYWN0aXZhdGlvbkd1YXJkKSB7XG4gICAgICB0aGlzLl9yZWdpc3RlckNhbkRlYWN0aXZhdGVHdWFyZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybURpYWxvZ0JhY2tkcm9wRXNjYXBlKCk7XG4gICAgdGhpcy5fbGlzdGVuSG90S2V5cygpO1xuICAgIHRoaXMuX2xpc3RlbldpbmRvd0Nsb3NlKCk7XG4gIH1cblxuICAvKiogVGhlIGhhbGYgb2YgdGhlIHNhbWUgb3duZXJzaGlwIHRoYXQgbmVlZHMgcHJvamVjdGVkIGNvbnRlbnQgcmVzb2x2ZWQuICovXG4gIHByb3RlY3RlZCBfcmVnaXN0ZXJPd25lckNvbnRlbnRMaWZlY3ljbGUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtVGFicygpO1xuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybURyYXdlckNsb3NlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJEcmF3ZXJDbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHdoYXQgdGhpcyBvd25lciBjb3ZlcnMuIE92ZXJyaWRkZW4gYnkgdGhlXG4gICAqIGNvbnRhaW5lciwgd2hvc2Ugb3duIGVsZW1lbnQgaXMgYSBwb29yIHByb3h5OiBpdCBtYXkgYmUgYW4gYDxuZy1jb250YWluZXI+YCxcbiAgICogd2hpY2ggaXMgYSBjb21tZW50IG5vZGUgYW5kIGNvbnRhaW5zIG5vdGhpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2NvbnRhaW5zRWxlbWVudChlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9ub2RlQ29udGFpbnModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCBlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX25vZGVDb250YWlucyhyb290OiBOb2RlLCBlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICghcm9vdCB8fCAhZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZWwgPT09IHJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlbC5wYXJlbnRFbGVtZW50ID8gdGhpcy5fbm9kZUNvbnRhaW5zKHJvb3QsIGVsLnBhcmVudEVsZW1lbnQpIDogZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2Zvcm1DbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtICYmIHRoaXMuY29uZmlybURpYWxvZykge1xuICAgICAgdGhpcy50cmlnZ2VyQ29uZmlybSgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigocmVzdWx0KSA9PiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSksXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuTm9DaGFuZ2VzIHx8IHJlc3VsdCA9PT0gQ29uZmlybVJlc3VsdC5EaXNjYXJkXG4gICAgICAgICAgICAgID8gb2YobnVsbClcbiAgICAgICAgICAgICAgOiB0aGlzLnN1Ym1pdHRlZCQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IFN1Ym1pdHRlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHJlc3VsdD8ucmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbldpbmRvd0Nsb3NlKCk6IHZvaWQge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdiZWZvcmV1bmxvYWQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1Ccm93c2VyICYmIHRoaXMuZGlydHlMaW5rZWQpIHtcbiAgICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FjdGl2ZURpYWxvZyhlbDogTm9kZSwgZGlhbG9nOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9ub2RlQ29udGFpbnMoZGlhbG9nLCBlbCBhcyBFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkhvdEtleXMoKTogdm9pZCB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JhY2tkcm9wRXNjYXBlICYmIGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICBjb25zdCBjZGtPdmVybGF5UGFuZSA9IEFycmF5XG4gICAgICAgICAgICAgIC5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcuY2RrLW92ZXJsYXktcGFuZScpKS5wb3AoKTtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRGlhbG9nID0gdGhpc1xuICAgICAgICAgICAgICAuX2FjdGl2ZURpYWxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLl9kaWFsb2dSZWYuaWQpLCBjZGtPdmVybGF5UGFuZSk7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVEaWFsb2cpIHtcbiAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybUNsb3NlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5jb2RlID09PSAnS2V5UycpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNob3J0Y3V0cykge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY29udGFpbnNFbGVtZW50KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJTdWJtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1EaWFsb2dCYWNrZHJvcEVzY2FwZSgpOiB2b2lkIHtcbiAgICBpZih0aGlzLl9kaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0JhY2tkcm9wRXNjYXBlID0gIXRoaXMuX2RpYWxvZ1JlZj8uZGlzYWJsZUNsb3NlO1xuXG4gICAgICBpZiAodGhpcy5fZGlhbG9nQmFja2Ryb3BFc2NhcGUpIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQ2xvc2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9kZXN0cm95JFxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyRHJhd2VyQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RyYXdlclJlZikge1xuICAgICAgdGhpcy5fZHJhd2VyUmVmLmNsb3NlU3RhcnQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzJFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXR1cykgPT4gc3RhdHVzID09PSBGb3JtU3RhdHVzLlN1Y2Nlc3MgfHwgc3RhdHVzID09PSBGb3JtU3RhdHVzLkVycm9yKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IEZvcm1TdGF0dXMuU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDb25maXJtRHJhd2VyQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RyYXdlclJlZikge1xuICAgICAgdGhpcy5fZHJhd2VyUmVmLmNsb3NlU3RhcnQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGlpZihcbiAgICAgICAgICAgICAgKCkgPT4gISF0aGlzLmNvbmZpcm0gJiYgdGhpcy5jb25maXJtRHJhd2VyLFxuICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJDb25maXJtKClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSksXG4gICAgICAgICAgICAgICAgICB0YXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1UYWJzKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybVRhYkdyb3Vwcyh0aGlzLl90YWJHcm91cHMudG9BcnJheSgpKTtcbiAgICB0aGlzLl90YWJHcm91cHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtVGFiR3JvdXBzKHRoaXMuX3RhYkdyb3Vwcy50b0FycmF5KCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1UYWJHcm91cHModGFiR3JvdXBzOiBNYXRUYWJHcm91cFtdKTogdm9pZCB7XG4gICAgdGFiR3JvdXBzLmZvckVhY2goKHRhYkdyb3VwOiBNYXRUYWJHcm91cCkgPT4ge1xuICAgICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtVGFiR3JvdXAodGFiR3JvdXApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDb25maXJtVGFiR3JvdXAodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogdm9pZCB7XG4gICAgLy8gYF90YWJHcm91cHMuY2hhbmdlc2AgcmUtZW1pdHMgdGhlIHdob2xlIGxpc3QsIG5vdCBqdXN0IHdoYXQgYXJyaXZlZCwgYW5kIGl0XG4gICAgLy8gZW1pdHMgZXZlcnkgdGltZSBhIGxhenkgdGFiIGJvZHkgbW91bnRzIGEgbmVzdGVkIGdyb3VwLiBHcm91cHMgYWxyZWFkeVxuICAgIC8vIHdpcmVkIHRoZXJlZm9yZSBjb21lIGJhY2sgYXJvdW5kIC0gc28gd2l0aG91dCB0aGlzIHRoZSBvdXRlciBncm91cFxuICAgIC8vIGFjY3VtdWxhdGVzIG9uZSBzdWJzY3JpcHRpb24gcGVyIGVtaXNzaW9uLCBhbmQgYSBzaW5nbGUgY2xpY2sgb24gaXQgb3BlbnNcbiAgICAvLyB0aGF0IG1hbnkgc3RhY2tlZCBjb25maXJtIGRpYWxvZ3MuXG4gICAgaWYgKHRoaXMuX2NvbmZpcm1UYWJHcm91cHMuaGFzKHRhYkdyb3VwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbmZpcm1UYWJHcm91cHMuYWRkKHRhYkdyb3VwKTtcblxuICAgIGNvbnN0IGNvbmZpcm1UYWJHcm91cCA9IHRhYkdyb3VwIGFzIENvbmZpcm1UYWJHcm91cDtcbiAgICBpZiAoIWNvbmZpcm1UYWJHcm91cC5fb3JpZ2luYWxIYW5kbGVDbGljaykge1xuICAgICAgY29uZmlybVRhYkdyb3VwLl9vcmlnaW5hbEhhbmRsZUNsaWNrID0gdGFiR3JvdXAuX2hhbmRsZUNsaWNrO1xuICAgICAgY29uZmlybVRhYkdyb3VwLl9oYW5kbENsaWNrJCA9IG5ldyBTdWJqZWN0PHtcbiAgICAgICAgIHRhYjogTWF0VGFiO1xuICAgICAgICAgdGFiSGVhZGVyOiBNYXRUYWJIZWFkZXI7XG4gICAgICAgICBpZHg6IG51bWJlclxuICAgICAgICB9PigpO1xuXG4gICAgICBjb25maXJtVGFiR3JvdXAuX2hhbmRsZUNsaWNrID0gKHRhYjogTWF0VGFiLCB0YWJIZWFkZXI6IE1hdFRhYkhlYWRlciwgaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpcm1UYWJHcm91cC5faGFuZGxDbGljayQub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbmZpcm1UYWJHcm91cC5faGFuZGxDbGljayQubmV4dCh7IHRhYiwgdGFiSGVhZGVyLCBpZHggfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uZmlybVRhYkdyb3VwLl9vcmlnaW5hbEhhbmRsZUNsaWNrKHRhYiwgdGFiSGVhZGVyLCBpZHgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbmZpcm1UYWJHcm91cC5faGFuZGxDbGljayRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuc3VibWl0dGluZyksXG4gICAgICAgIHN3aXRjaE1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZih0aGlzLmNvbmZpcm0gJiYgdGhpcy5jb25maXJtVGFicykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJpZ2dlckNvbmZpcm0oKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1SZXN1bHRDb250aW51ZShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1UYWJHcm91cC5zZWxlY3RlZEluZGV4ID0gZXZlbnQuaWR4O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbmZpcm1UYWJHcm91cC5fb3JpZ2luYWxIYW5kbGVDbGljayhldmVudC50YWIsIGV2ZW50LnRhYkhlYWRlciwgZXZlbnQuaWR4KTtcblxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ2FuRGVhY3RpdmF0ZUd1YXJkKCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnID0gZ2V0QWN0aXZlUm91dGUodGhpcy5fcm91dGUpPy5yb3V0ZUNvbmZpZztcblxuICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtLnJlZ2lzdGVyRm9ybURpcmVjdGl2ZSh0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jb21wb25lbnQsIHRoaXMpO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpKSB7XG4gICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUuaW5kZXhPZihGb3JtRGVhY3RpdmF0ZUd1YXJkKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUucHVzaChGb3JtRGVhY3RpdmF0ZUd1YXJkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbnVwQ2FuRGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR1VBUkRFRCBUSEUgU0FNRSBXQVkgUkVHSVNUUkFUSU9OIElTLCBhbmQgZm9yIHRoZSBzYW1lIHJlYXNvbiB0aGVcbiAgICAvLyByZWdpc3RyYXRpb24gYWJvdmUgYnVpbGRzIHRoZSBhcnJheSB3aGVuIGl0IGlzIG1pc3NpbmcuXG4gICAgLy9cbiAgICAvLyBgcm91dGVDb25maWdgIGlzIHRoZSByb3V0ZXIncyBvd24gb2JqZWN0LCBzaGFyZWQgYW5kIGNhY2hlZCBmb3IgdGhlIGxpZmVcbiAgICAvLyBvZiB0aGUgcm91dGUuIEEgcm91dGUgdGhhdCBkZWNsYXJlcyBubyBgY2FuRGVhY3RpdmF0ZWAgaGFzIG5vbmUgdW50aWxcbiAgICAvLyByZWdpc3RyYXRpb24gY3JlYXRlcyBvbmUg4oCUIHNvIHRoaXMgY2Fubm90IGFzc3VtZSB0aGUgYXJyYXkgaXMgaGVyZSBqdXN0XG4gICAgLy8gYmVjYXVzZSByZWdpc3RyYXRpb24gcmFuLiBgZ2V0QWN0aXZlUm91dGUoKWAgd2Fsa3MgdG8gdGhlIERFRVBFU1QgYWN0aXZlXG4gICAgLy8gcm91dGUsIGFuZCBkZXN0cm95IHJlc29sdmVzIGl0IGFnYWluc3Qgd2hhdGV2ZXIgdGhlIHJvdXRlciBob2xkcyBhdFxuICAgIC8vIHRlYXJkb3duLCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjb25maWcgcmVnaXN0cmF0aW9uIG11dGF0ZWQ6IGFcbiAgICAvLyBuYXZpZ2F0aW9uIHRoYXQgYWR2YW5jZXMgdGhlIHJvdXRlIHRyZWUgYmVmb3JlIHRoZSBmb3JtJ3MgbmdPbkRlc3Ryb3lcbiAgICAvLyBmaXJlcyBsZWF2ZXMgdGhpcyBwb2ludGluZyBhdCBhIGNvbmZpZyB3aG9zZSBgY2FuRGVhY3RpdmF0ZWAgd2FzIG5ldmVyXG4gICAgLy8gaW5pdGlhbGl6ZWQsIGFuZCBgdW5kZWZpbmVkLmluZGV4T2ZgIHRocm93cyBtaWQtdGVhcmRvd24uIFRoZSBmb3JtIHRoZW5cbiAgICAvLyBuZXZlciBmaW5pc2hlcyBjbGVhbmluZyB1cCBhbmQgdGhlIG5leHQgc2NyZWVuIHJlbmRlcnMgYWdhaW5zdCBoYWxmLXRvcm5cbiAgICAvLyBzdGF0ZSDigJQgdW5zdHlsZWQgbmF0aXZlIGlucHV0cywgYSBwYWdlIHRoYXQgbG9va3MgbGlrZSBpdCBmYWlsZWQgdG8gYm9vdC5cbiAgICBjb25zdCBndWFyZHMgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZ3VhcmRzKSkge1xuICAgICAgY29uc3QgZ3VhcmRJbmRleCA9IGd1YXJkcy5pbmRleE9mKEZvcm1EZWFjdGl2YXRlR3VhcmQpO1xuXG4gICAgICBpZiAoZ3VhcmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZ3VhcmRzLnNwbGljZShndWFyZEluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtLnJlbW92ZUZvcm1EaXJlY3RpdmUodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY29tcG9uZW50KTtcbiAgfVxuXG5cbiAgcHVibGljIGFic3RyYWN0IHRyaWdnZXJTdWJtaXQoKTogdm9pZDtcbiAgcHVibGljIGFic3RyYWN0IHRyaWdnZXJDb25maXJtKCk6IE9ic2VydmFibGU8Q29uZmlybVJlc3VsdD47XG4gIHB1YmxpYyBhYnN0cmFjdCByZXNldCgpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3Qgc3VibWl0JChldmVudD86IFN1Ym1pdEV2ZW50KTogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD47XG59XG4iXX0=
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1iYXNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9mb3JtLWJhc2UvZm9ybS1iYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxXQUFXLEVBQWdCLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsTUFBTSxFQUFF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YUFBYTtzQkFEbkIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBY0UsVUFBVTtzQkFEakIsZUFBZTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFRhYiwgTWF0VGFiR3JvdXAsIE1hdFRhYkhlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuXG5pbXBvcnQgeyBkZWZlciwgZnJvbUV2ZW50LCBpaWYsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29uZmlybVJlc3VsdCB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZvcm1TdGF0dXMgfSBmcm9tICcuLi8uLi9lbnVtcy9mb3JtLXN0YXR1cyc7XG5pbXBvcnQgeyBGb3JtRGVhY3RpdmF0ZUd1YXJkIH0gZnJvbSAnLi4vLi4vZ3VhcmRzL2Zvcm0tZGVhY3RpdmF0ZS5ndWFyZCc7XG5pbXBvcnQgeyBjb25maXJtUmVzdWx0Q29udGludWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldEFjdGl2ZVJvdXRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlJztcbmltcG9ydCB7IGdldFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtcm91dGUtY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1Db25maWcsIENvbmZpcm1UYWJHcm91cCwgU3VibWl0RXZlbnQsIFN1Ym1pdHRlZEV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc0Zvcm0gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mc2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHR5cGUgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcblxuXG4vKipcbiAqIFNoYXJlZCBieSB0aGUgdHdvIHRoaW5ncyB0aGF0IGNhbiBvd24gYSBzZXQgb2YgZm9ybXM6IGFuIGBmc0Zvcm1gIHNpdHRpbmcgYXRcbiAqIHRoZSByb290IG9mIGl0cyBsaW5rZWQgc2V0LCBhbmQgYW4gYGZzRm9ybUNvbnRhaW5lcmAgaG9sZGluZyBmb3JtcyB0aGF0IGFyZVxuICogc2libGluZ3MgcmF0aGVyIHRoYW4gbmVzdGVkLlxuICpcbiAqIEl0IGhvbGRzIHRoZSBzdWJtaXQtYnV0dG9uIHJlZ2lzdHJ5IGJvdGggb2YgdGhlbSBleHBvc2UgdG8gYnV0dG9ucywgYW5kIHRoZVxuICogbGlmZWN5Y2xlIHRoYXQgYmVsb25ncyB0byB0aGUgc2V0IGFzIGEgd2hvbGUgcmF0aGVyIHRoYW4gdG8gYW55IG9uZSBmb3JtIC1cbiAqIHRoZSBkaWFsb2cgYmFja2Ryb3AgYW5kIEVzY2FwZSwgQ3RybCtTLCB0aGUgYnJvd3NlciBjbG9zZSBwcm9tcHQsIHRoZSBkcmF3ZXJcbiAqIGFuZCB0YWItc3dpdGNoIGNvbmZpcm1zLiBFeGFjdGx5IG9uZSBvd25lciByZWdpc3RlcnMgdGhhdCBsaWZlY3ljbGU7IHNlZVxuICogYF9yZWdpc3Rlck93bmVyTGlmZWN5Y2xlYC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRnNGb3JtQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybVRhYnMgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maXJtOiBDb25maXJtQ29uZmlnIHwgYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1EaWFsb2cgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maXJtRHJhd2VyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybUJyb3dzZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG9ydGN1dHMgPSB0cnVlOyAvLyBDdHJsICsgc1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWFjdGl2YXRpb25HdWFyZCA9IHRydWU7XG5cbiAgcHJvdGVjdGVkIF9uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJvdGVjdGVkIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCBfZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJvdGVjdGVkIF9mb3JtID0gaW5qZWN0KEZzRm9ybSk7XG4gIHByb3RlY3RlZCBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcm90ZWN0ZWQgX2RpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8YW55Pj4oTWF0RGlhbG9nUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcm90ZWN0ZWQgX2RyYXdlclJlZiA9IGluamVjdDxEcmF3ZXJSZWY8YW55Pj4oRHJhd2VyUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcm90ZWN0ZWQgX2RpYWxvZ0JhY2tkcm9wRXNjYXBlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGVDb25maWc6IFJvdXRlIHwgbnVsbDtcblxuICBAQ29udGVudENoaWxkcmVuKE1hdFRhYkdyb3VwLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgX3RhYkdyb3VwczogUXVlcnlMaXN0PE1hdFRhYkdyb3VwPiA9IG5ldyBRdWVyeUxpc3QoKTtcblxuICBwcml2YXRlIF9idXR0b25zID0gbmV3IFF1ZXJ5TGlzdDxGc0J1dHRvbkRpcmVjdGl2ZT4oKTtcbiAgcHJpdmF0ZSBfYWN0aXZlU3VibWl0QnV0dG9uOiBGc0J1dHRvbkRpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBfY29uZmlybVRhYkdyb3VwcyA9IG5ldyBXZWFrU2V0PE1hdFRhYkdyb3VwPigpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGFic3RyYWN0IHN1Ym1pdHRpbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBhbnl0aGluZyBpbiB0aGUgb3duZWQgc2V0IGhhcyBhIHN1Ym1pdCBoYW5kbGVyIC0gaS5lLiB0aGVyZSBpc1xuICAgKiBzb21ldGhpbmcgZm9yIGEgU2F2ZSBidXR0b24gdG8gZG8uIEJvdGggYSBmb3JtIGFuZCBhIGNvbnRhaW5lciBhbnN3ZXIgdGhpc1xuICAgKiBvdmVyIHRoZWlyIGxpbmtlZCBzZXQsIHNvIHdoaWNoZXZlciBvbmUgb3ducyBhIGZvb3RlciBjYW4gYmUgYXNrZWQgdGhlIHNhbWVcbiAgICogcXVlc3Rpb24gd2l0aG91dCBrbm93aW5nIHdoaWNoIGl0IGdvdC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzdWJtaXRzOiBib29sZWFuO1xuXG4gIC8qKiBUcnVlIHdoZW4gYW55dGhpbmcgaW4gdGhlIG93bmVkIHNldCBoYXMgdW5zYXZlZCBjaGFuZ2VzLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZGlydHlMaW5rZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEV2ZXJ5IGZvcm0gaW4gdGhlIG93bmVkIHNldCwgYXQgYW55IGRlcHRoLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbGlua2VkRm9ybXM6IEZzRm9ybURpcmVjdGl2ZVtdO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgb3duZWQgc2V0J3MgZGlydHkgc3RhdGUgbWF5IGhhdmUgbW92ZWQuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBkaXJ0eUNoYW5nZSQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgLyoqIEVtaXRzIG9uY2UgYSBzdWJtaXQgb3ZlciB0aGUgb3duZWQgc2V0IGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3VibWl0dGVkJDogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD47XG5cbiAgLyoqIFRyYWNrcyB0aGUgb3duZWQgc2V0J3Mgc3VibWl0IGxpZmVjeWNsZSwgc28gdGhlIGRyYXdlciBjYW4gd2FpdCBvbmUgb3V0LiAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3RhdHVzJDogT2JzZXJ2YWJsZTxGb3JtU3RhdHVzPjtcblxuICAvKipcbiAgICogVGhlIGRpYWxvZyB0aGlzIG93bmVyIGxpdmVzIGluLCBvciBudWxsIG91dHNpZGUgb25lLiBVc2VkIHRvIGtlZXAgYSBmb3JtIHNldFxuICAgKiBmcm9tIHNwYW5uaW5nIGEgZGlhbG9nIGJvdW5kYXJ5IC0gc2VlIGB3aXRoaW5TYW1lRGlhbG9nYC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlhbG9nUmVmKCk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlhbG9nUmVmO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdGVyT3duZXJMaWZlY3ljbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0ZXJPd25lckNvbnRlbnRMaWZlY3ljbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFudXBDYW5EZWFjdGl2YXRlKCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25zKCk6IFF1ZXJ5TGlzdDxGc0J1dHRvbkRpcmVjdGl2ZT4ge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25zO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVTdWJtaXRCdXR0b24oKTogRnNCdXR0b25EaXJlY3RpdmUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdWJtaXRCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjdGl2ZVN1Ym1pdEJ1dHRvbihidXR0b246IEZzQnV0dG9uRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5fYWN0aXZlU3VibWl0QnV0dG9uID0gYnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJyaW5nIGEgdGFiIGdyb3VwIGludG8gdGhpcyBvd25lcidzIHVuc2F2ZWQtY2hhbmdlcyBjb25maXJtLlxuICAgKlxuICAgKiBgX3RhYkdyb3Vwc2Agb25seSByZWFjaGVzIGdyb3VwcyBpbiB0aGlzIG93bmVyJ3MgcHJvamVjdGVkIGNvbnRlbnQsIHNvIGEgZ3JvdXBcbiAgICogZGVjbGFyZWQgaW5zaWRlIGEgY2hpbGQgY29tcG9uZW50J3Mgb3duIHRlbXBsYXRlIGhhcyB0byBhbm5vdW5jZSBpdHNlbGYuXG4gICAqIGBmc0Zvcm1Db25maXJtVGFic2AgY2FsbHMgdGhpcyAtIGNvbnN1bWVycyBuZXZlciBjYWxsIGl0IGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyVGFiR3JvdXAodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtVGFiR3JvdXAodGFiR3JvdXApO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbihidXR0b246IEZzQnV0dG9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgdGhpcy5fYnV0dG9uc1xuICAgICAgLnJlc2V0KFxuICAgICAgICBbXG4gICAgICAgICAgLi4udGhpcy5fYnV0dG9ucy50b0FycmF5KCksXG4gICAgICAgICAgYnV0dG9uLFxuICAgICAgICBdKTtcblxuICAgIC8vIFF1ZXJ5TGlzdC5yZXNldCgpIGRvZXMgbm90IGVtaXQgYGNoYW5nZXNgOyBub3RpZnkgc28gc3Vic2NyaWJlcnMgKGUuZy4gdGhlXG4gICAgLy8gZm9ybSdzIGRpcnR5LXN1Ym1pdC1idXR0b24gdHJhY2tpbmcpIHJlYWN0IHRvIGJ1dHRvbnMgYmVpbmcgcmVnaXN0ZXJlZC5cbiAgICB0aGlzLl9idXR0b25zLm5vdGlmeU9uQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUJ1dHRvbihidXR0b246IEZzQnV0dG9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgaWYodGhpcy5fYWN0aXZlU3VibWl0QnV0dG9uID09PSBidXR0b24pIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ym1pdEJ1dHRvbiA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fYnV0dG9ucy5yZXNldChcbiAgICAgIFtcbiAgICAgICAgLi4udGhpcy5fYnV0dG9ucy50b0FycmF5KClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAoYnV0dG9uICE9PSBpdGVtKSksXG4gICAgICBdKTtcblxuICAgIHRoaXMuX2J1dHRvbnMubm90aWZ5T25DaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogRXZlcnl0aGluZyBoZXJlIGFjdHMgb24gdGhlIGZvcm0gc2V0IGFzIGEgd2hvbGUsIHNvIGV4YWN0bHkgb25lIHRoaW5nIG1heVxuICAgKiByZWdpc3RlciBpdC4gQSBmb3JtIGxpbmtlZCBpbnRvIGEgcGFyZW50IGRlZmVycyB0byB0aGF0IHBhcmVudDsgZXZlcnkgZm9ybVxuICAgKiBpbnNpZGUgYSBjb250YWluZXIgZGVmZXJzIHRvIHRoZSBjb250YWluZXIuIFJlZ2lzdGVyaW5nIHR3aWNlIHdvdWxkIHB1dCB0d29cbiAgICogY29uZmlybXMgb24gdGhlIHNhbWUgYmFja2Ryb3AgY2xpY2sgYW5kIHR3byBoYW5kbGVycyBvbiB0aGUgc2FtZSBDdHJsK1MuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3JlZ2lzdGVyT3duZXJMaWZlY3ljbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGVhY3RpdmF0aW9uR3VhcmQpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyQ2FuRGVhY3RpdmF0ZUd1YXJkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtRGlhbG9nQmFja2Ryb3BFc2NhcGUoKTtcbiAgICB0aGlzLl9saXN0ZW5Ib3RLZXlzKCk7XG4gICAgdGhpcy5fbGlzdGVuV2luZG93Q2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBUaGUgaGFsZiBvZiB0aGUgc2FtZSBvd25lcnNoaXAgdGhhdCBuZWVkcyBwcm9qZWN0ZWQgY29udGVudCByZXNvbHZlZC4gKi9cbiAgcHJvdGVjdGVkIF9yZWdpc3Rlck93bmVyQ29udGVudExpZmVjeWNsZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm1UYWJzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtRHJhd2VyQ2xvc2UoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRyYXdlckNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWxlbWVudCBpcyBpbnNpZGUgd2hhdCB0aGlzIG93bmVyIGNvdmVycy4gT3ZlcnJpZGRlbiBieSB0aGVcbiAgICogY29udGFpbmVyLCB3aG9zZSBvd24gZWxlbWVudCBpcyBhIHBvb3IgcHJveHk6IGl0IG1heSBiZSBhbiBgPG5nLWNvbnRhaW5lcj5gLFxuICAgKiB3aGljaCBpcyBhIGNvbW1lbnQgbm9kZSBhbmQgY29udGFpbnMgbm90aGluZy5cbiAgICovXG4gIHByb3RlY3RlZCBfY29udGFpbnNFbGVtZW50KGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVDb250YWlucyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbm9kZUNvbnRhaW5zKHJvb3Q6IE5vZGUsIGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb290IHx8ICFlbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChlbCA9PT0gcm9vdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsLnBhcmVudEVsZW1lbnQgPyB0aGlzLl9ub2RlQ29udGFpbnMocm9vdCwgZWwucGFyZW50RWxlbWVudCkgOiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZm9ybUNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpcm0gJiYgdGhpcy5jb25maXJtRGlhbG9nKSB7XG4gICAgICB0aGlzLnRyaWdnZXJDb25maXJtKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChyZXN1bHQpID0+IGNvbmZpcm1SZXN1bHRDb250aW51ZShyZXN1bHQpKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gQ29uZmlybVJlc3VsdC5Ob0NoYW5nZXMgfHwgcmVzdWx0ID09PSBDb25maXJtUmVzdWx0LkRpc2NhcmRcbiAgICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgICA6IHRoaXMuc3VibWl0dGVkJDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogU3VibWl0dGVkRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UocmVzdWx0Py5yZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuV2luZG93Q2xvc2UoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JlZm9yZXVubG9hZCcpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25maXJtICYmIHRoaXMuY29uZmlybUJyb3dzZXIgJiYgdGhpcy5kaXJ0eUxpbmtlZCkge1xuICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nKGVsOiBOb2RlLCBkaWFsb2c6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVDb250YWlucyhkaWFsb2csIGVsIGFzIEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuSG90S2V5cygpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fZGlhbG9nQmFja2Ryb3BFc2NhcGUgJiYgZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGNka092ZXJsYXlQYW5lID0gQXJyYXlcbiAgICAgICAgICAgICAgLmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5jZGstb3ZlcmxheS1wYW5lJykpLnBvcCgpO1xuXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVEaWFsb2cgPSB0aGlzXG4gICAgICAgICAgICAgIC5fYWN0aXZlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX2RpYWxvZ1JlZi5pZCksIGNka092ZXJsYXlQYW5lKTtcblxuICAgICAgICAgICAgaWYgKGFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmNvZGUgPT09ICdLZXlTJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvcnRjdXRzKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jb250YWluc0VsZW1lbnQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29uZmlybURpYWxvZ0JhY2tkcm9wRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuX2RpYWxvZ1JlZikge1xuICAgICAgdGhpcy5fZGlhbG9nQmFja2Ryb3BFc2NhcGUgPSAhdGhpcy5fZGlhbG9nUmVmPy5kaXNhYmxlQ2xvc2U7XG5cbiAgICAgIGlmICh0aGlzLl9kaWFsb2dCYWNrZHJvcEVzY2FwZSkge1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1DbG9zZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJEcmF3ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZHJhd2VyUmVmKSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWYuY2xvc2VTdGFydCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc3VibWl0dGluZykge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdHVzKSA9PiBzdGF0dXMgPT09IEZvcm1TdGF0dXMuU3VjY2VzcyB8fCBzdGF0dXMgPT09IEZvcm1TdGF0dXMuRXJyb3IpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gRm9ybVN0YXR1cy5TdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1EcmF3ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZHJhd2VyUmVmKSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWYuY2xvc2VTdGFydCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaWlmKFxuICAgICAgICAgICAgICAoKSA9PiAhIXRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1EcmF3ZXIsXG4gICAgICAgICAgICAgIHRoaXMudHJpZ2dlckNvbmZpcm0oKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IGNvbmZpcm1SZXN1bHRDb250aW51ZShyZXN1bHQpKSxcbiAgICAgICAgICAgICAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29uZmlybVRhYnMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0ZXJDb25maXJtVGFiR3JvdXBzKHRoaXMuX3RhYkdyb3Vwcy50b0FycmF5KCkpO1xuICAgIHRoaXMuX3RhYkdyb3Vwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm1UYWJHcm91cHModGhpcy5fdGFiR3JvdXBzLnRvQXJyYXkoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29uZmlybVRhYkdyb3Vwcyh0YWJHcm91cHM6IE1hdFRhYkdyb3VwW10pOiB2b2lkIHtcbiAgICB0YWJHcm91cHMuZm9yRWFjaCgodGFiR3JvdXA6IE1hdFRhYkdyb3VwKSA9PiB7XG4gICAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm1UYWJHcm91cCh0YWJHcm91cCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1UYWJHcm91cCh0YWJHcm91cDogTWF0VGFiR3JvdXApOiB2b2lkIHtcbiAgICAvLyBgX3RhYkdyb3Vwcy5jaGFuZ2VzYCByZS1lbWl0cyB0aGUgd2hvbGUgbGlzdCwgbm90IGp1c3Qgd2hhdCBhcnJpdmVkLCBhbmQgaXRcbiAgICAvLyBlbWl0cyBldmVyeSB0aW1lIGEgbGF6eSB0YWIgYm9keSBtb3VudHMgYSBuZXN0ZWQgZ3JvdXAuIEdyb3VwcyBhbHJlYWR5XG4gICAgLy8gd2lyZWQgdGhlcmVmb3JlIGNvbWUgYmFjayBhcm91bmQgLSBzbyB3aXRob3V0IHRoaXMgdGhlIG91dGVyIGdyb3VwXG4gICAgLy8gYWNjdW11bGF0ZXMgb25lIHN1YnNjcmlwdGlvbiBwZXIgZW1pc3Npb24sIGFuZCBhIHNpbmdsZSBjbGljayBvbiBpdCBvcGVuc1xuICAgIC8vIHRoYXQgbWFueSBzdGFja2VkIGNvbmZpcm0gZGlhbG9ncy5cbiAgICBpZiAodGhpcy5fY29uZmlybVRhYkdyb3Vwcy5oYXModGFiR3JvdXApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlybVRhYkdyb3Vwcy5hZGQodGFiR3JvdXApO1xuXG4gICAgY29uc3QgY29uZmlybVRhYkdyb3VwID0gdGFiR3JvdXAgYXMgQ29uZmlybVRhYkdyb3VwO1xuICAgIGlmICghY29uZmlybVRhYkdyb3VwLl9vcmlnaW5hbEhhbmRsZUNsaWNrKSB7XG4gICAgICBjb25maXJtVGFiR3JvdXAuX29yaWdpbmFsSGFuZGxlQ2xpY2sgPSB0YWJHcm91cC5faGFuZGxlQ2xpY2s7XG4gICAgICBjb25maXJtVGFiR3JvdXAuX2hhbmRsQ2xpY2skID0gbmV3IFN1YmplY3Q8e1xuICAgICAgICAgdGFiOiBNYXRUYWI7XG4gICAgICAgICB0YWJIZWFkZXI6IE1hdFRhYkhlYWRlcjtcbiAgICAgICAgIGlkeDogbnVtYmVyXG4gICAgICAgIH0+KCk7XG5cbiAgICAgIGNvbmZpcm1UYWJHcm91cC5faGFuZGxlQ2xpY2sgPSAodGFiOiBNYXRUYWIsIHRhYkhlYWRlcjogTWF0VGFiSGVhZGVyLCBpZHg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoY29uZmlybVRhYkdyb3VwLl9oYW5kbENsaWNrJC5vYnNlcnZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uZmlybVRhYkdyb3VwLl9oYW5kbENsaWNrJC5uZXh0KHsgdGFiLCB0YWJIZWFkZXIsIGlkeCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25maXJtVGFiR3JvdXAuX29yaWdpbmFsSGFuZGxlQ2xpY2sodGFiLCB0YWJIZWFkZXIsIGlkeCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uZmlybVRhYkdyb3VwLl9oYW5kbENsaWNrJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5zdWJtaXR0aW5nKSxcbiAgICAgICAgc3dpdGNoTWFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGlmKHRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1UYWJzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmlnZ2VyQ29uZmlybSgpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoY29uZmlybVJlc3VsdENvbnRpbnVlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybVRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBldmVudC5pZHg7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uZmlybVRhYkdyb3VwLl9vcmlnaW5hbEhhbmRsZUNsaWNrKGV2ZW50LnRhYiwgZXZlbnQudGFiSGVhZGVyLCBldmVudC5pZHgpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDYW5EZWFjdGl2YXRlR3VhcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcgPSBnZXRBY3RpdmVSb3V0ZSh0aGlzLl9yb3V0ZSk/LnJvdXRlQ29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm0ucmVnaXN0ZXJGb3JtRGlyZWN0aXZlKGdldFJvdXRlQ29tcG9uZW50KHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnKSwgdGhpcyk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSkpIHtcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5pbmRleE9mKEZvcm1EZWFjdGl2YXRlR3VhcmQpID09PSAtMSkge1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5wdXNoKEZvcm1EZWFjdGl2YXRlR3VhcmQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFudXBDYW5EZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHVUFSREVEIFRIRSBTQU1FIFdBWSBSRUdJU1RSQVRJT04gSVMsIGFuZCBmb3IgdGhlIHNhbWUgcmVhc29uIHRoZVxuICAgIC8vIHJlZ2lzdHJhdGlvbiBhYm92ZSBidWlsZHMgdGhlIGFycmF5IHdoZW4gaXQgaXMgbWlzc2luZy5cbiAgICAvL1xuICAgIC8vIGByb3V0ZUNvbmZpZ2AgaXMgdGhlIHJvdXRlcidzIG93biBvYmplY3QsIHNoYXJlZCBhbmQgY2FjaGVkIGZvciB0aGUgbGlmZVxuICAgIC8vIG9mIHRoZSByb3V0ZS4gQSByb3V0ZSB0aGF0IGRlY2xhcmVzIG5vIGBjYW5EZWFjdGl2YXRlYCBoYXMgbm9uZSB1bnRpbFxuICAgIC8vIHJlZ2lzdHJhdGlvbiBjcmVhdGVzIG9uZSDigJQgc28gdGhpcyBjYW5ub3QgYXNzdW1lIHRoZSBhcnJheSBpcyBoZXJlIGp1c3RcbiAgICAvLyBiZWNhdXNlIHJlZ2lzdHJhdGlvbiByYW4uIGBnZXRBY3RpdmVSb3V0ZSgpYCB3YWxrcyB0byB0aGUgREVFUEVTVCBhY3RpdmVcbiAgICAvLyByb3V0ZSwgYW5kIGRlc3Ryb3kgcmVzb2x2ZXMgaXQgYWdhaW5zdCB3aGF0ZXZlciB0aGUgcm91dGVyIGhvbGRzIGF0XG4gICAgLy8gdGVhcmRvd24sIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGNvbmZpZyByZWdpc3RyYXRpb24gbXV0YXRlZDogYVxuICAgIC8vIG5hdmlnYXRpb24gdGhhdCBhZHZhbmNlcyB0aGUgcm91dGUgdHJlZSBiZWZvcmUgdGhlIGZvcm0ncyBuZ09uRGVzdHJveVxuICAgIC8vIGZpcmVzIGxlYXZlcyB0aGlzIHBvaW50aW5nIGF0IGEgY29uZmlnIHdob3NlIGBjYW5EZWFjdGl2YXRlYCB3YXMgbmV2ZXJcbiAgICAvLyBpbml0aWFsaXplZCwgYW5kIGB1bmRlZmluZWQuaW5kZXhPZmAgdGhyb3dzIG1pZC10ZWFyZG93bi4gVGhlIGZvcm0gdGhlblxuICAgIC8vIG5ldmVyIGZpbmlzaGVzIGNsZWFuaW5nIHVwIGFuZCB0aGUgbmV4dCBzY3JlZW4gcmVuZGVycyBhZ2FpbnN0IGhhbGYtdG9yblxuICAgIC8vIHN0YXRlIOKAlCB1bnN0eWxlZCBuYXRpdmUgaW5wdXRzLCBhIHBhZ2UgdGhhdCBsb29rcyBsaWtlIGl0IGZhaWxlZCB0byBib290LlxuICAgIGNvbnN0IGd1YXJkcyA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGU7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShndWFyZHMpKSB7XG4gICAgICBjb25zdCBndWFyZEluZGV4ID0gZ3VhcmRzLmluZGV4T2YoRm9ybURlYWN0aXZhdGVHdWFyZCk7XG5cbiAgICAgIGlmIChndWFyZEluZGV4ICE9PSAtMSkge1xuICAgICAgICBndWFyZHMuc3BsaWNlKGd1YXJkSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2Zvcm0ucmVtb3ZlRm9ybURpcmVjdGl2ZShnZXRSb3V0ZUNvbXBvbmVudCh0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZykpO1xuICB9XG5cblxuICBwdWJsaWMgYWJzdHJhY3QgdHJpZ2dlclN1Ym1pdCgpOiB2b2lkO1xuICBwdWJsaWMgYWJzdHJhY3QgdHJpZ2dlckNvbmZpcm0oKTogT2JzZXJ2YWJsZTxDb25maXJtUmVzdWx0PjtcbiAgcHVibGljIGFic3RyYWN0IHJlc2V0KCk6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBzdWJtaXQkKGV2ZW50PzogU3VibWl0RXZlbnQpOiBPYnNlcnZhYmxlPFN1Ym1pdHRlZEV2ZW50Pjtcbn1cbiJdfQ==
|
|
@@ -4,6 +4,7 @@ import { of } from 'rxjs';
|
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
5
5
|
import { confirmResultContinue } from '../helpers';
|
|
6
6
|
import { getActiveRoute } from '../helpers/get-active-route';
|
|
7
|
+
import { getRouteComponent } from '../helpers/get-route-component';
|
|
7
8
|
import { FsForm } from '../services/fsform.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class FormDeactivateGuard {
|
|
@@ -16,7 +17,7 @@ export class FormDeactivateGuard {
|
|
|
16
17
|
return of(true);
|
|
17
18
|
}
|
|
18
19
|
const directives = this._form
|
|
19
|
-
.getFormDirectives(route.routeConfig
|
|
20
|
+
.getFormDirectives(getRouteComponent(route.routeConfig));
|
|
20
21
|
if (!Array.isArray(directives) || directives.length === 0) {
|
|
21
22
|
console.error('Can not find a valid FsFormDirective');
|
|
22
23
|
return of(true);
|
|
@@ -35,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
35
36
|
providedIn: 'root',
|
|
36
37
|
}]
|
|
37
38
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kZWFjdGl2YXRlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvZm9ybS1kZWFjdGl2YXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFHakMsYUFBYTtRQUNsQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUVuRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQWtCLElBQUksQ0FBQyxLQUFLO2FBQ3pDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBRXRELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO3VHQTdCVSxtQkFBbUI7MkdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY29uZmlybVJlc3VsdENvbnRpbnVlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBnZXRBY3RpdmVSb3V0ZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWFjdGl2ZS1yb3V0ZSc7XG5pbXBvcnQgeyBnZXRSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LXJvdXRlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0Zvcm1Pd25lciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNGb3JtIH0gZnJvbSAnLi4vc2VydmljZXMvZnNmb3JtLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRGVhY3RpdmF0ZUd1YXJkICB7XG4gIHByaXZhdGUgX2Zvcm0gPSBpbmplY3QoRnNGb3JtKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG5cbiAgcHVibGljIGNhbkRlYWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3Qgcm91dGUgPSBnZXRBY3RpdmVSb3V0ZSh0aGlzLl9yb3V0ZSk7XG5cbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDYW4gbm90IGZpbmQgcm91dGUgZm9yIEZvcm1EZWFjdGl2YXRlR3VhcmQgY2hlY2tzJyk7XG5cbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3RpdmVzOiBGc0Zvcm1Pd25lcltdID0gdGhpcy5fZm9ybVxuICAgICAgLmdldEZvcm1EaXJlY3RpdmVzKGdldFJvdXRlQ29tcG9uZW50KHJvdXRlLnJvdXRlQ29uZmlnKSk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGlyZWN0aXZlcykgfHwgZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbiBub3QgZmluZCBhIHZhbGlkIEZzRm9ybURpcmVjdGl2ZScpO1xuXG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0uY29uZmlybVVuc2F2ZWQoZGlyZWN0aXZlc1swXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The component a route renders, however the route declares it.
|
|
3
|
+
*
|
|
4
|
+
* `component:` and `loadComponent:` do NOT land in the same place. The router
|
|
5
|
+
* resolves a lazy component into `_loadedComponent` on the route CONFIG and
|
|
6
|
+
* assigns `component` only on the ActivatedRouteSnapshot — so a `loadComponent`
|
|
7
|
+
* route's `routeConfig.component` is `undefined` for the life of the route.
|
|
8
|
+
* Angular reads it as `component ?? _loadedComponent ?? null` everywhere it
|
|
9
|
+
* needs the type; this does the same.
|
|
10
|
+
*
|
|
11
|
+
* It matters here because the config's component is the WeakMap key the form
|
|
12
|
+
* store is keyed by. Reading `.component` alone hands `undefined` to
|
|
13
|
+
* `WeakMap.set()`, which throws "Invalid value used as weak map key" out of
|
|
14
|
+
* ngOnInit — aborting the hook and leaving the screen half-rendered. Every
|
|
15
|
+
* route written with `loadComponent` hit that.
|
|
16
|
+
*
|
|
17
|
+
* `_loadedComponent` is Angular-private and absent from the public `Route`
|
|
18
|
+
* type, hence the cast.
|
|
19
|
+
*/
|
|
20
|
+
export function getRouteComponent(route) {
|
|
21
|
+
return route?.component ?? route?._loadedComponent;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJvdXRlLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvaGVscGVycy9nZXQtcm91dGUtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBWTtJQUM1QyxPQUFPLEtBQUssRUFBRSxTQUFTLElBQUssS0FBMEMsRUFBRSxnQkFBZ0IsQ0FBQztBQUMzRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbi8qKlxuICogVGhlIGNvbXBvbmVudCBhIHJvdXRlIHJlbmRlcnMsIGhvd2V2ZXIgdGhlIHJvdXRlIGRlY2xhcmVzIGl0LlxuICpcbiAqIGBjb21wb25lbnQ6YCBhbmQgYGxvYWRDb21wb25lbnQ6YCBkbyBOT1QgbGFuZCBpbiB0aGUgc2FtZSBwbGFjZS4gVGhlIHJvdXRlclxuICogcmVzb2x2ZXMgYSBsYXp5IGNvbXBvbmVudCBpbnRvIGBfbG9hZGVkQ29tcG9uZW50YCBvbiB0aGUgcm91dGUgQ09ORklHIGFuZFxuICogYXNzaWducyBgY29tcG9uZW50YCBvbmx5IG9uIHRoZSBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IOKAlCBzbyBhIGBsb2FkQ29tcG9uZW50YFxuICogcm91dGUncyBgcm91dGVDb25maWcuY29tcG9uZW50YCBpcyBgdW5kZWZpbmVkYCBmb3IgdGhlIGxpZmUgb2YgdGhlIHJvdXRlLlxuICogQW5ndWxhciByZWFkcyBpdCBhcyBgY29tcG9uZW50ID8/IF9sb2FkZWRDb21wb25lbnQgPz8gbnVsbGAgZXZlcnl3aGVyZSBpdFxuICogbmVlZHMgdGhlIHR5cGU7IHRoaXMgZG9lcyB0aGUgc2FtZS5cbiAqXG4gKiBJdCBtYXR0ZXJzIGhlcmUgYmVjYXVzZSB0aGUgY29uZmlnJ3MgY29tcG9uZW50IGlzIHRoZSBXZWFrTWFwIGtleSB0aGUgZm9ybVxuICogc3RvcmUgaXMga2V5ZWQgYnkuIFJlYWRpbmcgYC5jb21wb25lbnRgIGFsb25lIGhhbmRzIGB1bmRlZmluZWRgIHRvXG4gKiBgV2Vha01hcC5zZXQoKWAsIHdoaWNoIHRocm93cyBcIkludmFsaWQgdmFsdWUgdXNlZCBhcyB3ZWFrIG1hcCBrZXlcIiBvdXQgb2ZcbiAqIG5nT25Jbml0IOKAlCBhYm9ydGluZyB0aGUgaG9vayBhbmQgbGVhdmluZyB0aGUgc2NyZWVuIGhhbGYtcmVuZGVyZWQuIEV2ZXJ5XG4gKiByb3V0ZSB3cml0dGVuIHdpdGggYGxvYWRDb21wb25lbnRgIGhpdCB0aGF0LlxuICpcbiAqIGBfbG9hZGVkQ29tcG9uZW50YCBpcyBBbmd1bGFyLXByaXZhdGUgYW5kIGFic2VudCBmcm9tIHRoZSBwdWJsaWMgYFJvdXRlYFxuICogdHlwZSwgaGVuY2UgdGhlIGNhc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZUNvbXBvbmVudChyb3V0ZTogUm91dGUpOiBUeXBlPGFueT4ge1xuICByZXR1cm4gcm91dGU/LmNvbXBvbmVudCA/PyAocm91dGUgYXMgeyBfbG9hZGVkQ29tcG9uZW50PzogVHlwZTxhbnk+IH0pPy5fbG9hZGVkQ29tcG9uZW50O1xufVxuIl19
|
package/esm2022/public_api.mjs
CHANGED
|
@@ -37,4 +37,4 @@ export { FormDeactivateGuard } from './app/guards/form-deactivate.guard';
|
|
|
37
37
|
// Enums
|
|
38
38
|
export { ConfirmResult } from './app/enums/confirm-result';
|
|
39
39
|
export { FormStatus } from './app/enums/form-status';
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsV0FBVztBQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRWhHLGFBQWE7QUFDYixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFTekUsUUFBUTtBQUNSLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNb2R1bGVzXG5leHBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICcuL2FwcC9mcy1mb3JtLm1vZHVsZSc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBGc0Zvcm0gfSBmcm9tICcuL2FwcC9zZXJ2aWNlcy9mc2Zvcm0uc2VydmljZSc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCB7IEZzRm9ybUdyZWF0ZXJEaXJlY3RpdmUsIEZzRm9ybUdyZWF0ZXJFcXVhbERpcmVjdGl2ZSwgRnNGb3JtTGVzc2VyRXF1YWxEaXJlY3RpdmUsIEZzRm9ybVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcyc7XG5leHBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvYnV0dG9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1EaWFsb2dDbG9zZURpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvZm9ybS1kaWFsb2ctY2xvc2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybUNvbmZpcm1UYWJzRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy9jb25maXJtLXRhYnMvY29uZmlybS10YWJzLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL2Zvcm0tY29udGFpbmVyL2Zvcm0tY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRnNTdWJtaXRCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3N1Ym1pdC1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybUNvbXBhcmVEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvY29tcGFyZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRnNDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL2NvbnRyb2wuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybURhdGVSYW5nZURpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9kYXRlcmFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybUVtYWlsRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL2VtYWlsLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1FbWFpbHNEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvZW1haWxzLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1GdW5jdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9mdW5jdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRnNGb3JtSW50ZWdlckRpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9pbnRlZ2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1MZXNzZXJEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbGVzc2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1NYXhEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWF4LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1NYXhMZW5ndGhEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWF4bGVuZ3RoLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1NaW5EaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWluLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1NaW5MZW5ndGhEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvbWlubGVuZ3RoLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1Ob0ZzVmFsaWRhdG9yc0RpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9uby1mcy12YWxpZGF0b3JzLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1OdW1lcmljRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL251bWVyaWMuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybVBhdHRlcm5EaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGF0dGVybi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRnNGb3JtUGhvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvcGhvbmUuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZzRm9ybVJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy92YWxpZGF0b3JzL3JlcXVpcmVkLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1VcmxEaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMvdXJsLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGc0Zvcm1WYWxpZGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy92YWxpZGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRnNGb3JtVGVtcGxhdGVPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuL2FwcC9kaXJlY3RpdmVzL2Zvcm0tdGVtcGxhdGUtb3V0bGV0LmRpcmVjdGl2ZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCB7IEZzRm9ybURpYWxvZ0FjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2FwcC9jb21wb25lbnRzJztcblxuZXhwb3J0IHsgRnNWYWxpZGF0b3JzIH0gZnJvbSAnLi9hcHAvdmFsaWRhdG9ycy92YWxpZGF0b3JzJztcblxuZXhwb3J0IHsgRm9ybURlYWN0aXZhdGVHdWFyZCB9IGZyb20gJy4vYXBwL2d1YXJkcy9mb3JtLWRlYWN0aXZhdGUuZ3VhcmQnO1xuXG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCB7IENvbmZpcm1Db25maWcgfSBmcm9tICcuL2FwcC9pbnRlcmZhY2VzL2NvbmZpcm0tY29uZmlnJztcbmV4cG9ydCB7IEZzRm9ybU93bmVyIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9mb3JtLW93bmVyJztcbmV4cG9ydCB7IFN1Ym1pdEV2ZW50IH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9zdWJtaXQtZXZlbnQnO1xuZXhwb3J0IHsgU3VibWl0dGVkRXZlbnQgfSBmcm9tICcuL2FwcC9pbnRlcmZhY2VzL3N1Ym1pdHRlZC1ldmVudCc7XG5cbi8vIEVudW1zXG5leHBvcnQgeyBDb25maXJtUmVzdWx0IH0gZnJvbSAnLi9hcHAvZW51bXMvY29uZmlybS1yZXN1bHQnO1xuZXhwb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4vYXBwL2VudW1zL2Zvcm0tc3RhdHVzJztcblxuXG4iXX0=
|
|
@@ -136,6 +136,29 @@ function getActiveRoute(route) {
|
|
|
136
136
|
return route;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
/**
|
|
140
|
+
* The component a route renders, however the route declares it.
|
|
141
|
+
*
|
|
142
|
+
* `component:` and `loadComponent:` do NOT land in the same place. The router
|
|
143
|
+
* resolves a lazy component into `_loadedComponent` on the route CONFIG and
|
|
144
|
+
* assigns `component` only on the ActivatedRouteSnapshot — so a `loadComponent`
|
|
145
|
+
* route's `routeConfig.component` is `undefined` for the life of the route.
|
|
146
|
+
* Angular reads it as `component ?? _loadedComponent ?? null` everywhere it
|
|
147
|
+
* needs the type; this does the same.
|
|
148
|
+
*
|
|
149
|
+
* It matters here because the config's component is the WeakMap key the form
|
|
150
|
+
* store is keyed by. Reading `.component` alone hands `undefined` to
|
|
151
|
+
* `WeakMap.set()`, which throws "Invalid value used as weak map key" out of
|
|
152
|
+
* ngOnInit — aborting the hook and leaving the screen half-rendered. Every
|
|
153
|
+
* route written with `loadComponent` hit that.
|
|
154
|
+
*
|
|
155
|
+
* `_loadedComponent` is Angular-private and absent from the public `Route`
|
|
156
|
+
* type, hence the cast.
|
|
157
|
+
*/
|
|
158
|
+
function getRouteComponent(route) {
|
|
159
|
+
return route?.component ?? route?._loadedComponent;
|
|
160
|
+
}
|
|
161
|
+
|
|
139
162
|
class FsForm {
|
|
140
163
|
// value is array for future possibilities of extension
|
|
141
164
|
_formDirectiveStore = new WeakMap();
|
|
@@ -231,7 +254,7 @@ class FormDeactivateGuard {
|
|
|
231
254
|
return of(true);
|
|
232
255
|
}
|
|
233
256
|
const directives = this._form
|
|
234
|
-
.getFormDirectives(route.routeConfig
|
|
257
|
+
.getFormDirectives(getRouteComponent(route.routeConfig));
|
|
235
258
|
if (!Array.isArray(directives) || directives.length === 0) {
|
|
236
259
|
console.error('Can not find a valid FsFormDirective');
|
|
237
260
|
return of(true);
|
|
@@ -554,7 +577,7 @@ class FsFormBaseDirective {
|
|
|
554
577
|
if (!this._activatedRouteConfig) {
|
|
555
578
|
return;
|
|
556
579
|
}
|
|
557
|
-
this._form.registerFormDirective(this._activatedRouteConfig
|
|
580
|
+
this._form.registerFormDirective(getRouteComponent(this._activatedRouteConfig), this);
|
|
558
581
|
if (!Array.isArray(this._activatedRouteConfig.canDeactivate)) {
|
|
559
582
|
this._activatedRouteConfig.canDeactivate = [];
|
|
560
583
|
}
|
|
@@ -587,7 +610,7 @@ class FsFormBaseDirective {
|
|
|
587
610
|
guards.splice(guardIndex, 1);
|
|
588
611
|
}
|
|
589
612
|
}
|
|
590
|
-
this._form.removeFormDirective(this._activatedRouteConfig
|
|
613
|
+
this._form.removeFormDirective(getRouteComponent(this._activatedRouteConfig));
|
|
591
614
|
}
|
|
592
615
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
593
616
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsFormBaseDirective, inputs: { confirmTabs: "confirmTabs", confirm: "confirm", confirmDialog: "confirmDialog", confirmDrawer: "confirmDrawer", confirmBrowser: "confirmBrowser", shortcuts: "shortcuts", deactivationGuard: "deactivationGuard" }, queries: [{ propertyName: "_tabGroups", predicate: MatTabGroup, descendants: true }], ngImport: i0 });
|
|
@@ -1700,7 +1723,7 @@ class FsFormDialogActionsComponent {
|
|
|
1700
1723
|
return withinSameDialog(owner, this._dialogRef) ? owner : null;
|
|
1701
1724
|
}
|
|
1702
1725
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1703
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, host: { properties: { "class.save-create": "showSave || create" }, classAttribute: "form-buttons" }, ngImport: i0, template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}
|
|
1726
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFormDialogActionsComponent, isStandalone: true, selector: "fs-form-dialog-actions", inputs: { save: "save", create: "create", close: "close", done: "done", closeData: "closeData", name: "name" }, host: { properties: { "class.save-create": "showSave || create" }, classAttribute: "form-buttons" }, ngImport: i0, template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "submitDisabled"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FsFormDialogCloseDirective, selector: "[fsFormDialogClose],[fs-form-dialog-close]", inputs: ["closeData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1704
1727
|
}
|
|
1705
1728
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFormDialogActionsComponent, decorators: [{
|
|
1706
1729
|
type: Component,
|
|
@@ -1713,7 +1736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
1713
1736
|
MatDialogClose,
|
|
1714
1737
|
NgTemplateOutlet,
|
|
1715
1738
|
FsFormDialogCloseDirective,
|
|
1716
|
-
], template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}
|
|
1739
|
+
], template: "@if (showSave || create) {\n <button\n mat-button\n type=\"submit\"\n color=\"primary\"\n [name]=\"name\">\n {{ create ? 'Create' : 'Save' }}\n </button>\n <button\n mat-button\n type=\"button\"\n class=\"cancel-button\"\n [disabled]=\"close && !dirty && !create\"\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n}\n@if (showDone) {\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n}\n@if (showSave || create) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n@if (close) {\n <button\n mat-button\n type=\"button\"\n class=\"close-button\"\n fsFormDialogClose\n [closeData]=\"closeData\"\n [color]=\"dirty ? 'basic' : 'primary'\">\n Close\n </button>\n}\n@if (!(showSave || create)) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}div[class*=fs-delimit]:not([class*=\".middot\"])>:not(:last-child):after{content:\",\\a0\"}div[class*=fs-delimit][class*=\".middot\"]>:not(:last-child):after{content:\"\\a0\\b7\\a0\"}div[class*=fs-delimit]>*{display:inline-flex}:host{display:flex;align-items:center;gap:4px;width:100%}:host.save-create .close-button{float:right}:host ::ng-deep>*{margin-inline:0!important}\n"] }]
|
|
1717
1740
|
}], propDecorators: { save: [{
|
|
1718
1741
|
type: Input
|
|
1719
1742
|
}], create: [{
|