@valtimo/form-management 11.3.2 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/esm2022/lib/form-management-create/form-management-create.component.mjs +8 -8
  2. package/esm2022/lib/form-management-duplicate/form-management-duplicate.component.mjs +9 -9
  3. package/esm2022/lib/form-management-edit/form-management-edit.component.mjs +123 -87
  4. package/esm2022/lib/form-management-routing.module.mjs +8 -12
  5. package/esm2022/lib/form-management-upload/form-management-upload.component.mjs +8 -8
  6. package/esm2022/lib/form-management.component.mjs +61 -13
  7. package/esm2022/lib/form-management.module.mjs +37 -13
  8. package/esm2022/lib/models/form-definition.model.mjs +2 -2
  9. package/esm2022/lib/models/form-edit-tabs.enum.mjs +22 -0
  10. package/esm2022/lib/models/index.mjs +3 -2
  11. package/esm2022/lib/services/form-management-state.service.mjs +59 -0
  12. package/esm2022/lib/services/form-management.service.mjs +56 -0
  13. package/esm2022/lib/services/index.mjs +18 -0
  14. package/esm2022/lib/validators/no-duplicate-form.validator.mjs +2 -2
  15. package/esm2022/public-api.mjs +3 -3
  16. package/fesm2022/valtimo-form-management.mjs +358 -224
  17. package/fesm2022/valtimo-form-management.mjs.map +1 -1
  18. package/lib/form-management-create/form-management-create.component.d.ts +1 -1
  19. package/lib/form-management-create/form-management-create.component.d.ts.map +1 -1
  20. package/lib/form-management-duplicate/form-management-duplicate.component.d.ts +1 -1
  21. package/lib/form-management-duplicate/form-management-duplicate.component.d.ts.map +1 -1
  22. package/lib/form-management-edit/form-management-edit.component.d.ts +34 -13
  23. package/lib/form-management-edit/form-management-edit.component.d.ts.map +1 -1
  24. package/lib/form-management-routing.module.d.ts +0 -3
  25. package/lib/form-management-routing.module.d.ts.map +1 -1
  26. package/lib/form-management.component.d.ts +18 -4
  27. package/lib/form-management.component.d.ts.map +1 -1
  28. package/lib/form-management.module.d.ts +11 -12
  29. package/lib/form-management.module.d.ts.map +1 -1
  30. package/lib/models/form-edit-tabs.enum.d.ts +6 -0
  31. package/lib/models/form-edit-tabs.enum.d.ts.map +1 -0
  32. package/lib/models/index.d.ts +1 -0
  33. package/lib/models/index.d.ts.map +1 -1
  34. package/lib/services/form-management-state.service.d.ts +19 -0
  35. package/lib/services/form-management-state.service.d.ts.map +1 -0
  36. package/lib/{form-management.service.d.ts → services/form-management.service.d.ts} +1 -1
  37. package/lib/services/form-management.service.d.ts.map +1 -0
  38. package/lib/services/index.d.ts +3 -0
  39. package/lib/services/index.d.ts.map +1 -0
  40. package/lib/validators/no-duplicate-form.validator.d.ts +1 -1
  41. package/lib/validators/no-duplicate-form.validator.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/public-api.d.ts +1 -1
  44. package/public-api.d.ts.map +1 -1
  45. package/esm2022/lib/form-management-list/form-management-list.component.mjs +0 -69
  46. package/esm2022/lib/form-management.service.mjs +0 -56
  47. package/lib/form-management-list/form-management-list.component.d.ts +0 -27
  48. package/lib/form-management-list/form-management-list.component.d.ts.map +0 -1
  49. package/lib/form-management.service.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2015-2023 Ritense BV, the Netherlands.
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
3
  *
4
4
  * Licensed under EUPL, Version 1.2 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -13,21 +13,24 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Component, ViewEncapsulation } from '@angular/core';
17
- import { PendingChangesComponent } from '@valtimo/components';
18
- import { BehaviorSubject, Subscription } from 'rxjs';
19
- import { first, take } from 'rxjs/operators';
16
+ import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
17
+ import { PendingChangesComponent, } from '@valtimo/components';
18
+ import { BehaviorSubject, distinctUntilChanged, filter, Subscription, switchMap, take, tap, } from 'rxjs';
20
19
  import { FormManagementDuplicateComponent } from '../form-management-duplicate/form-management-duplicate.component';
20
+ import { EDIT_TABS } from '../models';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "@valtimo/components";
23
- import * as i2 from "../form-management.service";
23
+ import * as i2 from "../services";
24
24
  import * as i3 from "carbon-components-angular";
25
25
  import * as i4 from "@angular/router";
26
26
  import * as i5 from "@angular/common";
27
27
  import * as i6 from "../form-management-upload/form-management-upload.component";
28
28
  import * as i7 from "@ngx-translate/core";
29
29
  export class FormManagementEditComponent extends PendingChangesComponent {
30
- constructor(alertService, formManagementService, modalService, pageTitleService, route, router) {
30
+ get _formDefinition() {
31
+ return this._formDefinition$.getValue();
32
+ }
33
+ constructor(alertService, formManagementService, modalService, pageTitleService, route, router, shellService, pageHeaderService) {
31
34
  super();
32
35
  this.alertService = alertService;
33
36
  this.formManagementService = formManagementService;
@@ -35,12 +38,32 @@ export class FormManagementEditComponent extends PendingChangesComponent {
35
38
  this.pageTitleService = pageTitleService;
36
39
  this.route = route;
37
40
  this.router = router;
41
+ this.shellService = shellService;
42
+ this.pageHeaderService = pageHeaderService;
43
+ this.class = 'valtimo-form-management-edit';
38
44
  this.modifiedFormDefinition = null;
39
- this.formDefinition = null;
40
- this.showModal$ = new BehaviorSubject(false);
45
+ this.validJsonChange = null;
46
+ this.CARBON_THEME = 'g10';
47
+ this.TABS = EDIT_TABS;
48
+ this.activeTab = EDIT_TABS.BUILDER;
49
+ this._formDefinition$ = new BehaviorSubject(null);
50
+ this.formDefinition$ = this._formDefinition$.pipe(filter((definition) => !!definition), distinctUntilChanged((prevFormDefinition, currFormDefinition) => JSON.stringify(prevFormDefinition?.formDefinition?.components) ===
51
+ JSON.stringify(currFormDefinition?.formDefinition?.components)), tap(() => {
52
+ if (!this._editorInitialized) {
53
+ this._editorInitialized = true;
54
+ return;
55
+ }
56
+ this.pendingChanges = true;
57
+ }));
58
+ this.jsonFormDefinition$ = new BehaviorSubject(null);
59
+ this.jsonOutput$ = new BehaviorSubject(null);
41
60
  this.reloading$ = new BehaviorSubject(false);
61
+ this.showDeleteModal$ = new BehaviorSubject(false);
62
+ this.showModal$ = new BehaviorSubject(false);
63
+ this.compactMode$ = this.pageHeaderService.compactMode$;
42
64
  this._alertSub = Subscription.EMPTY;
43
- this._formDefinitionId = null;
65
+ this._changeActive = false;
66
+ this._editorInitialized = false;
44
67
  }
45
68
  ngOnInit() {
46
69
  this.pageTitleService.disableReset();
@@ -49,30 +72,50 @@ export class FormManagementEditComponent extends PendingChangesComponent {
49
72
  }
50
73
  ngOnDestroy() {
51
74
  this._alertSub.unsubscribe();
75
+ this.pageTitleService.enableReset();
52
76
  }
53
- loadFormDefinition() {
54
- this._formDefinitionId = this.route.snapshot.paramMap.get('id');
55
- this.formManagementService.getFormDefinition(this._formDefinitionId ?? '').subscribe({
56
- next: formDefinition => {
57
- this.formDefinition = formDefinition;
58
- this.pageTitleService.setCustomPageTitle(formDefinition.name);
77
+ formBuilderChanged(event, definition) {
78
+ if (event.type === 'updateComponent') {
79
+ return;
80
+ }
81
+ this._changeActive = true;
82
+ this.modifiedFormDefinition = event.form;
83
+ this._formDefinition$.next({ ...this._formDefinition, formDefinition: event.form });
84
+ this.jsonFormDefinition$.next({ ...definition, value: JSON.stringify(event.form) });
85
+ this._changeActive = false;
86
+ }
87
+ delete() {
88
+ this.showDeleteModal$.next(true);
89
+ }
90
+ deleteFormDefinition(definition) {
91
+ this.pendingChanges = false;
92
+ this.formManagementService.deleteFormDefinition(definition.id).subscribe({
93
+ next: () => {
94
+ this.router.navigate(['/form-management']);
95
+ this.alertService.success('Form deleted');
59
96
  },
60
97
  error: () => {
61
- this.alertService.error('Error retrieving Form Definition');
98
+ this.alertService.error('Error deleting Form');
62
99
  },
63
100
  });
64
101
  }
65
- modifyFormDefinition() {
66
- if (!this.formDefinition) {
67
- return;
68
- }
102
+ downloadFormDefinition(definition) {
103
+ const file = new Blob([JSON.stringify(definition.formDefinition)], {
104
+ type: 'text/json',
105
+ });
106
+ const link = document.createElement('a');
107
+ link.download = `form_${definition.name}.json`;
108
+ link.href = window.URL.createObjectURL(file);
109
+ link.click();
110
+ window.URL.revokeObjectURL(link.href);
111
+ link.remove();
112
+ }
113
+ modifyFormDefinition(definition) {
69
114
  this.pendingChanges = false;
70
- const form = JSON.stringify(this.modifiedFormDefinition !== null
71
- ? this.modifiedFormDefinition
72
- : this.formDefinition.formDefinition);
115
+ const form = JSON.stringify(this.modifiedFormDefinition !== null ? this.modifiedFormDefinition : definition.formDefinition);
73
116
  const request = {
74
- id: this.formDefinition.id,
75
- name: this.formDefinition.name,
117
+ id: definition.id,
118
+ name: definition.name,
76
119
  formDefinition: form,
77
120
  };
78
121
  this.formManagementService.modifyFormDefinition(request).subscribe({
@@ -85,73 +128,50 @@ export class FormManagementEditComponent extends PendingChangesComponent {
85
128
  },
86
129
  });
87
130
  }
88
- formBuilderChanged(event) {
89
- this.pendingChanges = true;
90
- this.modifiedFormDefinition = event.form;
91
- }
92
- delete() {
93
- if (!this._alertSub.closed) {
131
+ onSelectedTab(tab) {
132
+ this.activeTab = tab;
133
+ if (tab === EDIT_TABS.BUILDER) {
94
134
  return;
95
135
  }
96
- const mssg = 'Delete Form?';
97
- const confirmations = [
98
- {
99
- label: 'Cancel',
100
- class: 'btn btn-default',
101
- value: false,
102
- },
103
- {
104
- label: 'Delete',
105
- class: 'btn btn-primary',
106
- value: true,
107
- },
108
- ];
109
- this.alertService.notification(mssg, confirmations);
110
- this._alertSub = this.alertService
111
- .getAlertConfirmChangeEmitter()
112
- .pipe(first())
113
- .subscribe(alert => {
114
- if (alert.confirm === true) {
115
- this.deleteFormDefinition();
116
- }
136
+ setTimeout(() => {
137
+ this.shellService.onMainContentResize();
117
138
  });
118
139
  }
119
- deleteFormDefinition() {
120
- if (!this.formDefinition) {
140
+ onOutputChange(event) {
141
+ if (!event.data) {
121
142
  return;
122
143
  }
123
- this.formManagementService.deleteFormDefinition(this.formDefinition.id).subscribe({
124
- next: () => {
125
- this.router.navigate(['/form-management']);
126
- this.alertService.success('Form deleted');
127
- },
128
- error: () => {
129
- this.alertService.error('Error deleting Form');
130
- },
131
- });
144
+ else if (JSON.stringify(event.data) === this._activeOuput) {
145
+ return;
146
+ }
147
+ this._activeOuput = JSON.stringify(event.data);
148
+ this.jsonOutput$.next({ value: this._activeOuput, language: 'json' });
132
149
  }
133
- downloadFormDefinition() {
134
- if (!this.formDefinition) {
150
+ onValueChangeEvent(value, definition, disabled) {
151
+ if (this._changeActive || this.validJsonChange === false || disabled) {
135
152
  return;
136
153
  }
137
- const file = new Blob([JSON.stringify(this.formDefinition.formDefinition)], {
138
- type: 'text/json',
154
+ const parsedDefinition = JSON.parse(value);
155
+ this.modifiedFormDefinition = parsedDefinition;
156
+ this._formDefinition$.next({
157
+ ...definition,
158
+ formDefinition: parsedDefinition,
139
159
  });
140
- const link = document.createElement('a');
141
- link.download = `form_${this.formDefinition.name}.json`;
142
- link.href = window.URL.createObjectURL(file);
143
- link.click();
144
- window.URL.revokeObjectURL(link.href);
145
- link.remove();
160
+ }
161
+ onValidEvent(value, disabled) {
162
+ if (this._changeActive || disabled) {
163
+ return;
164
+ }
165
+ this.validJsonChange = value;
146
166
  }
147
167
  showUploadModal() {
148
168
  this.showModal$.next(true);
149
169
  }
150
- showDuplicateModal() {
170
+ showDuplicateModal(definition) {
151
171
  this.modalService.create({
152
172
  component: FormManagementDuplicateComponent,
153
173
  inputs: {
154
- formToDuplicate: this.formDefinition,
174
+ formToDuplicate: definition,
155
175
  },
156
176
  });
157
177
  }
@@ -163,14 +183,15 @@ export class FormManagementEditComponent extends PendingChangesComponent {
163
183
  this.alertService.error('Invalid form.io. Missing JSON field "components".');
164
184
  return;
165
185
  }
166
- if (!this.formDefinition) {
167
- return;
168
- }
169
186
  const components = definition.components;
170
- const currentDefinition = this.modifiedFormDefinition || this.formDefinition.formDefinition;
187
+ const currentDefinition = this.modifiedFormDefinition || definition.formDefinition;
171
188
  const newDefinition = { ...currentDefinition, ...(components && { components }) };
172
189
  this.modifiedFormDefinition = newDefinition;
173
- this.formDefinition.formDefinition = newDefinition;
190
+ definition.formDefinition = newDefinition;
191
+ this.jsonFormDefinition$.next({
192
+ value: JSON.stringify(newDefinition),
193
+ language: 'json',
194
+ });
174
195
  this.reloading$.next(false);
175
196
  }
176
197
  onConfirmRedirect() {
@@ -187,11 +208,26 @@ export class FormManagementEditComponent extends PendingChangesComponent {
187
208
  }
188
209
  });
189
210
  }
190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormManagementEditComponent, deps: [{ token: i1.AlertService }, { token: i2.FormManagementService }, { token: i3.ModalService }, { token: i1.PageTitleService }, { token: i4.ActivatedRoute }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
191
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormManagementEditComponent, selector: "valtimo-form-management-edit", usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\">\n <div class=\"container-fluid\" *ngIf=\"formDefinition\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-primary btn-space\" (click)=\"downloadFormDefinition()\">\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'Download' | translate }}\n </button>\n <button\n class=\"btn btn-secondary btn-space\"\n (click)=\"showUploadModal()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n <button\n class=\"btn btn-danger btn-space\"\n (click)=\"delete()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-delete mr-1\"></i>{{ 'formManagement.delete' | translate }}\n </button>\n <button\n class=\"btn btn-success btn-space\"\n (click)=\"modifyFormDefinition()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>{{ 'formManagement.deploy' | translate }}\n </button>\n <button class=\"btn btn-secondary btn-space\" (click)=\"showDuplicateModal()\">\n <i class=\"icon mdi mdi-content-duplicate mr-1\"></i\n >{{ 'formManagement.duplicate' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"bg-light formbuilder-header overflow-auto\">\n <h3 class=\"formbuilder-title\">\n <div *ngIf=\"formDefinition.readOnly\" class=\"pull-right\">\n <span class=\"badge badge-pill badge-info increase-size\">{{\n 'formManagement.readOnly' | translate\n }}</span>\n </div>\n </h3>\n </div>\n <ng-container *ngIf=\"(reloading$ | async) === false\">\n <valtimo-form-io-builder\n [form]=\"formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event)\"\n ></valtimo-form-io-builder>\n </ng-container>\n </div>\n</div>\n\n<valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n></valtimo-form-management-upload>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.formbuilder .btn.formcomponent.drag-copy,.btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.formbuilder .btn.formcomponent.drag-copy:hover,.formbuilder .btn.formcomponent.drag-copy:active,.btn.formcomponent.gu-mirror:hover,.btn.formcomponent.gu-mirror:active{box-shadow:none}.formbuilder .btn.formcomponent.drag-copy:active,.btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.formbuilder .drag-and-drop-alert{display:none}.formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.increase-size{font-size:1rem}\n"], dependencies: [{ kind: "component", type: i1.FormioBuilderComponent, selector: "valtimo-form-io-builder", inputs: ["form"], outputs: ["change"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FormManagementUploadComponent, selector: "valtimo-form-management-upload", inputs: ["show$"], outputs: ["definitionUploaded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
211
+ loadFormDefinition() {
212
+ this.route.paramMap
213
+ .pipe(take(1), switchMap((paramMap) => this.formManagementService.getFormDefinition(paramMap.get('id') ?? '')))
214
+ .subscribe((definition) => {
215
+ this._formDefinition$.next(definition);
216
+ this.pageTitleService.setCustomPageTitle(definition.name);
217
+ this.jsonFormDefinition$.next({
218
+ value: JSON.stringify(definition.formDefinition),
219
+ language: 'json',
220
+ });
221
+ });
222
+ }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormManagementEditComponent, deps: [{ token: i1.AlertService }, { token: i2.FormManagementService }, { token: i3.ModalService }, { token: i1.PageTitleService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i1.ShellService }, { token: i1.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: FormManagementEditComponent, selector: "valtimo-form-management-edit", host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n jsonFormDefinition: jsonFormDefinition$ | async,\n jsonOutput: jsonOutput$ | async,\n compactMode: compactMode$ | async\n } as obs\"\n>\n @if (obs.formDefinition) {\n <ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"valtimo-form-management-edit__header-container\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n >\n @if (obs.formDefinition.readOnly) {\n <cds-tag size=\"sm\" type=\"blue\">{{ 'formManagement.readOnly' | translate }}</cds-tag>\n }\n\n <div class=\"valtimo-form-management-edit__header\">\n <cds-overflow-menu>\n <cds-overflow-menu-option (selected)=\"downloadFormDefinition(obs.formDefinition)\">\n {{ 'Download' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"showUploadModal()\"\n >\n {{ 'Upload' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"delete(obs.formDefinition)\"\n >\n {{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option (selected)=\"showDuplicateModal(obs.formDefinition)\">\n {{ 'formManagement.duplicate' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.formDefinition.readOnly || !validJsonChange\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"modifyFormDefinition(obs.formDefinition)\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <cds-tabs type=\"contained\">\n <cds-tab [heading]=\"TABS.BUILDER | translate\" (selected)=\"onSelectedTab(TABS.BUILDER)\">\n <valtimo-form-io-builder\n *ngIf=\"(reloading$ | async) === false && activeTab === TABS.BUILDER\"\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event, obs.jsonFormDefinition)\"\n ></valtimo-form-io-builder>\n </cds-tab>\n\n <cds-tab [heading]=\"TABS.EDITOR | translate\" (selected)=\"onSelectedTab(TABS.EDITOR)\">\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {\n disabled: obs.formDefinition.readOnly,\n formDefinition: obs.formDefinition,\n model: obs.jsonFormDefinition\n }\n }\n \"\n ></ng-container>\n </cds-tab>\n\n <cds-tab\n [heading]=\"TABS.OUTPUT | translate\"\n (selected)=\"onSelectedTab(TABS.OUTPUT)\"\n class=\"valtimo-form-management-edit__output\"\n >\n <valtimo-form-io\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"onOutputChange($event)\"\n ></valtimo-form-io>\n\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {disabled: true, formDefinition: obs.formDefinition, model: obs.jsonOutput}\n }\n \"\n ></ng-container>\n </cds-tab>\n </cds-tabs>\n } @else {\n <valtimo-spinner></valtimo-spinner>\n }\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.deleteConfirmation\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [outputOnConfirm]=\"obs.formDefinition\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"deleteFormDefinition($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n ></valtimo-form-management-upload>\n\n <ng-template #jsonEditor let-data=\"data\">\n <valtimo-editor\n [model]=\"data.model\"\n [disabled]=\"data.disabled\"\n (validEvent)=\"onValidEvent($event, data.disabled)\"\n (valueChangeEvent)=\"onValueChangeEvent($event, data.formDefinition, data.disabled)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-form-management-edit__header{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-left:auto}.valtimo-form-management-edit__header-container{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.valtimo-form-management-edit__header-container .cds--tag{margin:0;height:var(--cds-layout-size-height-md)}.valtimo-form-management-edit__header-container.--compact{align-items:flex-start;padding-bottom:0}.valtimo-form-management-edit__output .cds--tab-content{display:grid;grid-template-columns:1fr 1fr}.valtimo-form-management-edit__output .cds--tab-content>*{min-width:100%!important}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy,.valtimo-form-management-edit .btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:hover,.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:hover,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{box-shadow:none}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.valtimo-form-management-edit .formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.valtimo-form-management-edit .formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.valtimo-form-management-edit .formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.valtimo-form-management-edit .formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.valtimo-form-management-edit .formbuilder .drag-and-drop-alert{display:none}.valtimo-form-management-edit .formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.valtimo-form-management-edit .increase-size{font-size:1rem}.valtimo-form-management-edit .cds--tab-content{background:#fff!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i1.FormioBuilderComponent, selector: "valtimo-form-io-builder", inputs: ["form"], outputs: ["change"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i3.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i3.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i3.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive"], outputs: ["selected"] }, { kind: "component", type: i1.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "component", type: i1.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "component", type: i6.FormManagementUploadComponent, selector: "valtimo-form-management-upload", inputs: ["show$"], outputs: ["definitionUploaded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
192
225
  }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormManagementEditComponent, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormManagementEditComponent, decorators: [{
194
227
  type: Component,
195
- args: [{ selector: 'valtimo-form-management-edit', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\">\n <div class=\"container-fluid\" *ngIf=\"formDefinition\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-primary btn-space\" (click)=\"downloadFormDefinition()\">\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'Download' | translate }}\n </button>\n <button\n class=\"btn btn-secondary btn-space\"\n (click)=\"showUploadModal()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload' | translate }}\n </button>\n <button\n class=\"btn btn-danger btn-space\"\n (click)=\"delete()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-delete mr-1\"></i>{{ 'formManagement.delete' | translate }}\n </button>\n <button\n class=\"btn btn-success btn-space\"\n (click)=\"modifyFormDefinition()\"\n [disabled]=\"formDefinition.readOnly\"\n >\n <i class=\"icon mdi mdi-upload mr-1\"></i>{{ 'formManagement.deploy' | translate }}\n </button>\n <button class=\"btn btn-secondary btn-space\" (click)=\"showDuplicateModal()\">\n <i class=\"icon mdi mdi-content-duplicate mr-1\"></i\n >{{ 'formManagement.duplicate' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <div class=\"bg-light formbuilder-header overflow-auto\">\n <h3 class=\"formbuilder-title\">\n <div *ngIf=\"formDefinition.readOnly\" class=\"pull-right\">\n <span class=\"badge badge-pill badge-info increase-size\">{{\n 'formManagement.readOnly' | translate\n }}</span>\n </div>\n </h3>\n </div>\n <ng-container *ngIf=\"(reloading$ | async) === false\">\n <valtimo-form-io-builder\n [form]=\"formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event)\"\n ></valtimo-form-io-builder>\n </ng-container>\n </div>\n</div>\n\n<valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n></valtimo-form-management-upload>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.formbuilder .btn.formcomponent.drag-copy,.btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.formbuilder .btn.formcomponent.drag-copy:hover,.formbuilder .btn.formcomponent.drag-copy:active,.btn.formcomponent.gu-mirror:hover,.btn.formcomponent.gu-mirror:active{box-shadow:none}.formbuilder .btn.formcomponent.drag-copy:active,.btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.formbuilder .drag-and-drop-alert{display:none}.formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.increase-size{font-size:1rem}\n"] }]
196
- }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.FormManagementService }, { type: i3.ModalService }, { type: i1.PageTitleService }, { type: i4.ActivatedRoute }, { type: i4.Router }]; } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mb3JtLW1hbmFnZW1lbnQtZWRpdC9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1lZGl0L2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHOUUsT0FBTyxFQUFpQyx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTVGLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7Ozs7Ozs7OztBQVVsSCxNQUFNLE9BQU8sMkJBQ1gsU0FBUSx1QkFBdUI7SUFZL0IsWUFDbUIsWUFBMEIsRUFDMUIscUJBQTRDLEVBQzVDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixNQUFjO1FBRS9CLEtBQUssRUFBRSxDQUFDO1FBUFMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FB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O1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpNVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiwyRkNoQ3hDLHl4RkF5RUE7OzRGRHpDYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsOEJBQThCLGlCQUd6QixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGb3JtaW9Gb3JtfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHtBbGVydFNlcnZpY2UsIFBhZ2VUaXRsZVNlcnZpY2UsIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50fSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudER1cGxpY2F0ZUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS9mb3JtLW1hbmFnZW1lbnQtZHVwbGljYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vZm9ybS1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtRGVmaW5pdGlvbiwgTW9kaWZ5Rm9ybURlZmluaXRpb25SZXF1ZXN0fSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tbWFuYWdlbWVudC1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1tYW5hZ2VtZW50LWVkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybU1hbmFnZW1lbnRFZGl0Q29tcG9uZW50XG4gIGV4dGVuZHMgUGVuZGluZ0NoYW5nZXNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBwdWJsaWMgbW9kaWZpZWRGb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1EZWZpbml0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIF9hbGVydFN1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9mb3JtRGVmaW5pdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1hbmFnZW1lbnRTZXJ2aWNlOiBGb3JtTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5kaXNhYmxlUmVzZXQoKTtcbiAgICB0aGlzLmxvYWRGb3JtRGVmaW5pdGlvbigpO1xuICAgIHRoaXMuY2hlY2tUb09wZW5VcGxvYWRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsZXJ0U3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEZvcm1EZWZpbml0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1EZWZpbml0aW9uSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKTtcbiAgICB0aGlzLmZvcm1NYW5hZ2VtZW50U2VydmljZS5nZXRGb3JtRGVmaW5pdGlvbih0aGlzLl9mb3JtRGVmaW5pdGlvbklkID8/ICcnKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogZm9ybURlZmluaXRpb24gPT4ge1xuICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZm9ybURlZmluaXRpb247XG4gICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlVGl0bGUoZm9ybURlZmluaXRpb24ubmFtZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0Vycm9yIHJldHJpZXZpbmcgRm9ybSBEZWZpbml0aW9uJyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1vZGlmeUZvcm1EZWZpbml0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZvcm0gPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiAhPT0gbnVsbFxuICAgICAgICA/IHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvblxuICAgICAgICA6IHRoaXMuZm9ybURlZmluaXRpb24uZm9ybURlZmluaXRpb25cbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3Q6IE1vZGlmeUZvcm1EZWZpbml0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGlkOiB0aGlzLmZvcm1EZWZpbml0aW9uLmlkLFxuICAgICAgbmFtZTogdGhpcy5mb3JtRGVmaW5pdGlvbi5uYW1lLFxuICAgICAgZm9ybURlZmluaXRpb246IGZvcm0sXG4gICAgfTtcbiAgICB0aGlzLmZvcm1NYW5hZ2VtZW50U2VydmljZS5tb2RpZnlGb3JtRGVmaW5pdGlvbihyZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9mb3JtLW1hbmFnZW1lbnQnXSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoJ0Zvcm0gZGVwbG95ZWQnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRXJyb3IgZGVwbG95aW5nIEZvcm0nKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUJ1aWxkZXJDaGFuZ2VkKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcyA9IHRydWU7XG4gICAgdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uID0gZXZlbnQuZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGVydFN1Yi5jbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbXNzZyA9ICdEZWxldGUgRm9ybT8nO1xuICAgIGNvbnN0IGNvbmZpcm1hdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnQ2FuY2VsJyxcbiAgICAgICAgY2xhc3M6ICdidG4gYnRuLWRlZmF1bHQnLFxuICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ0RlbGV0ZScsXG4gICAgICAgIGNsYXNzOiAnYnRuIGJ0bi1wcmltYXJ5JyxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICB9LFxuICAgIF07XG4gICAgdGhpcy5hbGVydFNlcnZpY2Uubm90aWZpY2F0aW9uKG1zc2csIGNvbmZpcm1hdGlvbnMpO1xuXG4gICAgdGhpcy5fYWxlcnRTdWIgPSB0aGlzLmFsZXJ0U2VydmljZVxuICAgICAgLmdldEFsZXJ0Q29uZmlybUNoYW5nZUVtaXR0ZXIoKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoYWxlcnQgPT4ge1xuICAgICAgICBpZiAoYWxlcnQuY29uZmlybSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuZGVsZXRlRm9ybURlZmluaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRm9ybURlZmluaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZvcm1EZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtTWFuYWdlbWVudFNlcnZpY2UuZGVsZXRlRm9ybURlZmluaXRpb24odGhpcy5mb3JtRGVmaW5pdGlvbi5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZm9ybS1tYW5hZ2VtZW50J10pO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdGb3JtIGRlbGV0ZWQnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgRm9ybScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZvcm1EZWZpbml0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvbildLCB7XG4gICAgICB0eXBlOiAndGV4dC9qc29uJyxcbiAgICB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuZG93bmxvYWQgPSBgZm9ybV8ke3RoaXMuZm9ybURlZmluaXRpb24ubmFtZX0uanNvbmA7XG4gICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG4gICAgbGluay5jbGljaygpO1xuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGxpbmsuaHJlZik7XG4gICAgbGluay5yZW1vdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VXBsb2FkTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0R1cGxpY2F0ZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50RHVwbGljYXRlQ29tcG9uZW50LFxuICAgICAgaW5wdXRzOiB7XG4gICAgICAgIGZvcm1Ub0R1cGxpY2F0ZTogdGhpcy5mb3JtRGVmaW5pdGlvbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybURlZmluaXRpb24oZm9ybURlZmluaXRpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IEpTT04ucGFyc2UoZm9ybURlZmluaXRpb24pO1xuICAgIGlmICghZGVmaW5pdGlvbj8uY29tcG9uZW50cykge1xuICAgICAgdGhpcy5yZWxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0ludmFsaWQgZm9ybS5pby4gTWlzc2luZyBKU09OIGZpZWxkIFwiY29tcG9uZW50c1wiLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5mb3JtRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBkZWZpbml0aW9uLmNvbXBvbmVudHM7XG4gICAgY29uc3QgY3VycmVudERlZmluaXRpb24gPSB0aGlzLm1vZGlmaWVkRm9ybURlZmluaXRpb24gfHwgdGhpcy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvbjtcbiAgICBjb25zdCBuZXdEZWZpbml0aW9uID0gey4uLmN1cnJlbnREZWZpbml0aW9uLCAuLi4oY29tcG9uZW50cyAmJiB7Y29tcG9uZW50c30pfTtcblxuICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiA9IG5ld0RlZmluaXRpb247XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvbiA9IG5ld0RlZmluaXRpb247XG5cbiAgICB0aGlzLnJlbG9hZGluZyQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Db25maXJtUmVkaXJlY3QoKTogdm9pZCB7XG4gICAgY29uc3QgY2FuY2VsQnV0dG9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b25bcmVmPVwiY2FuY2VsQnV0dG9uXCJdJyk7XG4gICAgaWYgKCFjYW5jZWxCdXR0b24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYW5jZWxCdXR0b24uY2xpY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tUb09wZW5VcGxvYWRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zPy51cGxvYWQgPT09ICd0cnVlJykge1xuICAgICAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQgcHQtMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJmb3JtRGVmaW5pdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbXQtbTNweCBtYi0zIGZsb2F0LXJpZ2h0XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zcGFjZVwiIChjbGljayk9XCJkb3dubG9hZEZvcm1EZWZpbml0aW9uKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktZG93bmxvYWQgbXItMVwiPjwvaT5cbiAgICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgKGNsaWNrKT1cInNob3dVcGxvYWRNb2RhbCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1EZWZpbml0aW9uLnJlYWRPbmx5XCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdXBsb2FkIG1yLTFcIj48L2k+XG4gICAgICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc3BhY2VcIlxuICAgICAgICAoY2xpY2spPVwiZGVsZXRlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybURlZmluaXRpb24ucmVhZE9ubHlcIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1kZWxldGUgbXItMVwiPjwvaT57eyAnZm9ybU1hbmFnZW1lbnQuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zcGFjZVwiXG4gICAgICAgIChjbGljayk9XCJtb2RpZnlGb3JtRGVmaW5pdGlvbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1EZWZpbml0aW9uLnJlYWRPbmx5XCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdXBsb2FkIG1yLTFcIj48L2k+e3sgJ2Zvcm1NYW5hZ2VtZW50LmRlcGxveScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zcGFjZVwiIChjbGljayk9XCJzaG93RHVwbGljYXRlTW9kYWwoKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1jb250ZW50LWR1cGxpY2F0ZSBtci0xXCI+PC9pXG4gICAgICAgID57eyAnZm9ybU1hbmFnZW1lbnQuZHVwbGljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJnLWxpZ2h0IGZvcm1idWlsZGVyLWhlYWRlciBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICA8aDMgY2xhc3M9XCJmb3JtYnVpbGRlci10aXRsZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybURlZmluaXRpb24ucmVhZE9ubHlcIiBjbGFzcz1cInB1bGwtcmlnaHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtaW5mbyBpbmNyZWFzZS1zaXplXCI+e3tcbiAgICAgICAgICAgICdmb3JtTWFuYWdlbWVudC5yZWFkT25seScgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocmVsb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICAgIDx2YWx0aW1vLWZvcm0taW8tYnVpbGRlclxuICAgICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblwiXG4gICAgICAgIChjaGFuZ2UpPVwiZm9ybUJ1aWxkZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPjwvdmFsdGltby1mb3JtLWlvLWJ1aWxkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjx2YWx0aW1vLWZvcm0tbWFuYWdlbWVudC11cGxvYWRcbiAgW3Nob3ckXT1cInNob3dNb2RhbCRcIlxuICAoZGVmaW5pdGlvblVwbG9hZGVkKT1cInNldEZvcm1EZWZpbml0aW9uKCRldmVudClcIlxuPjwvdmFsdGltby1mb3JtLW1hbmFnZW1lbnQtdXBsb2FkPlxuIl19
228
+ args: [{ selector: 'valtimo-form-management-edit', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n jsonFormDefinition: jsonFormDefinition$ | async,\n jsonOutput: jsonOutput$ | async,\n compactMode: compactMode$ | async\n } as obs\"\n>\n @if (obs.formDefinition) {\n <ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"valtimo-form-management-edit__header-container\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n >\n @if (obs.formDefinition.readOnly) {\n <cds-tag size=\"sm\" type=\"blue\">{{ 'formManagement.readOnly' | translate }}</cds-tag>\n }\n\n <div class=\"valtimo-form-management-edit__header\">\n <cds-overflow-menu>\n <cds-overflow-menu-option (selected)=\"downloadFormDefinition(obs.formDefinition)\">\n {{ 'Download' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"showUploadModal()\"\n >\n {{ 'Upload' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"delete(obs.formDefinition)\"\n >\n {{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option (selected)=\"showDuplicateModal(obs.formDefinition)\">\n {{ 'formManagement.duplicate' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.formDefinition.readOnly || !validJsonChange\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"modifyFormDefinition(obs.formDefinition)\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <cds-tabs type=\"contained\">\n <cds-tab [heading]=\"TABS.BUILDER | translate\" (selected)=\"onSelectedTab(TABS.BUILDER)\">\n <valtimo-form-io-builder\n *ngIf=\"(reloading$ | async) === false && activeTab === TABS.BUILDER\"\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event, obs.jsonFormDefinition)\"\n ></valtimo-form-io-builder>\n </cds-tab>\n\n <cds-tab [heading]=\"TABS.EDITOR | translate\" (selected)=\"onSelectedTab(TABS.EDITOR)\">\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {\n disabled: obs.formDefinition.readOnly,\n formDefinition: obs.formDefinition,\n model: obs.jsonFormDefinition\n }\n }\n \"\n ></ng-container>\n </cds-tab>\n\n <cds-tab\n [heading]=\"TABS.OUTPUT | translate\"\n (selected)=\"onSelectedTab(TABS.OUTPUT)\"\n class=\"valtimo-form-management-edit__output\"\n >\n <valtimo-form-io\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"onOutputChange($event)\"\n ></valtimo-form-io>\n\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {disabled: true, formDefinition: obs.formDefinition, model: obs.jsonOutput}\n }\n \"\n ></ng-container>\n </cds-tab>\n </cds-tabs>\n } @else {\n <valtimo-spinner></valtimo-spinner>\n }\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.deleteConfirmation\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [outputOnConfirm]=\"obs.formDefinition\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"deleteFormDefinition($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n ></valtimo-form-management-upload>\n\n <ng-template #jsonEditor let-data=\"data\">\n <valtimo-editor\n [model]=\"data.model\"\n [disabled]=\"data.disabled\"\n (validEvent)=\"onValidEvent($event, data.disabled)\"\n (valueChangeEvent)=\"onValueChangeEvent($event, data.formDefinition, data.disabled)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-form-management-edit__header{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-left:auto}.valtimo-form-management-edit__header-container{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.valtimo-form-management-edit__header-container .cds--tag{margin:0;height:var(--cds-layout-size-height-md)}.valtimo-form-management-edit__header-container.--compact{align-items:flex-start;padding-bottom:0}.valtimo-form-management-edit__output .cds--tab-content{display:grid;grid-template-columns:1fr 1fr}.valtimo-form-management-edit__output .cds--tab-content>*{min-width:100%!important}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy,.valtimo-form-management-edit .btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:hover,.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:hover,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{box-shadow:none}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.valtimo-form-management-edit .formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.valtimo-form-management-edit .formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.valtimo-form-management-edit .formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.valtimo-form-management-edit .formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.valtimo-form-management-edit .formbuilder .drag-and-drop-alert{display:none}.valtimo-form-management-edit .formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.valtimo-form-management-edit .increase-size{font-size:1rem}.valtimo-form-management-edit .cds--tab-content{background:#fff!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
229
+ }], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.FormManagementService }, { type: i3.ModalService }, { type: i1.PageTitleService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i1.ShellService }, { type: i1.PageHeaderService }], propDecorators: { class: [{
230
+ type: HostBinding,
231
+ args: ['class']
232
+ }] } });
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mb3JtLW1hbmFnZW1lbnQtZWRpdC9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1lZGl0L2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQXFCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFLTCx1QkFBdUIsR0FFeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFDLFNBQVMsRUFBOEMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7OztBQVNqRixNQUFNLE9BQU8sMkJBQ1gsU0FBUSx1QkFBdUI7SUFjL0IsSUFBWSxlQUFlO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUE0QkQsWUFDbUIsWUFBMEIsRUFDMUIscUJBQTRDLEVBQzVDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsaUJBQW9DO1FBRXJELEtBQUssRUFBRSxD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QUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBQ2hELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F4UFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsNElDOUN4Qyx5NEtBcUpBOzsyRkR2R2EsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDhCQUE4QixpQkFHekIsaUJBQWlCLENBQUMsSUFBSTs0UkFNQyxLQUFLO3NCQUExQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgRWRpdG9yTW9kZWwsXG4gIFBhZ2VIZWFkZXJTZXJ2aWNlLFxuICBQYWdlVGl0bGVTZXJ2aWNlLFxuICBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudCxcbiAgU2hlbGxTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50RHVwbGljYXRlQ29tcG9uZW50fSBmcm9tICcuLi9mb3JtLW1hbmFnZW1lbnQtZHVwbGljYXRlL2Zvcm0tbWFuYWdlbWVudC1kdXBsaWNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7RURJVF9UQUJTLCBGb3JtRGVmaW5pdGlvbiwgTW9kaWZ5Rm9ybURlZmluaXRpb25SZXF1ZXN0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLW1hbmFnZW1lbnQtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudFxuICBleHRlbmRzIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyByZWFkb25seSBjbGFzcyA9ICd2YWx0aW1vLWZvcm0tbWFuYWdlbWVudC1lZGl0JztcblxuICBwdWJsaWMgbW9kaWZpZWRGb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgdmFsaWRKc29uQ2hhbmdlOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IENBUkJPTl9USEVNRSA9ICdnMTAnO1xuICBwdWJsaWMgcmVhZG9ubHkgVEFCUyA9IEVESVRfVEFCUztcblxuICBwdWJsaWMgYWN0aXZlVGFiID0gRURJVF9UQUJTLkJVSUxERVI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGdldCBfZm9ybURlZmluaXRpb24oKTogRm9ybURlZmluaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRGVmaW5pdGlvbiQuZ2V0VmFsdWUoKTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybURlZmluaXRpb24kID0gdGhpcy5fZm9ybURlZmluaXRpb24kLnBpcGUoXG4gICAgZmlsdGVyKChkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbiB8IG51bGwpID0+ICEhZGVmaW5pdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAocHJldkZvcm1EZWZpbml0aW9uLCBjdXJyRm9ybURlZmluaXRpb24pID0+XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZGb3JtRGVmaW5pdGlvbj8uZm9ybURlZmluaXRpb24/LmNvbXBvbmVudHMpID09PVxuICAgICAgICBKU09OLnN0cmluZ2lmeShjdXJyRm9ybURlZmluaXRpb24/LmZvcm1EZWZpbml0aW9uPy5jb21wb25lbnRzKVxuICAgICksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fZWRpdG9ySW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5fZWRpdG9ySW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkganNvbkZvcm1EZWZpbml0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWRpdG9yTW9kZWwgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGpzb25PdXRwdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFZGl0b3JNb2RlbCB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZU1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd01vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGFjdE1vZGUkID0gdGhpcy5wYWdlSGVhZGVyU2VydmljZS5jb21wYWN0TW9kZSQ7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlT3VwdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWxlcnRTdWI6IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfY2hhbmdlQWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgX2VkaXRvckluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1NYW5hZ2VtZW50U2VydmljZTogRm9ybU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGVsbFNlcnZpY2U6IFNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VIZWFkZXJTZXJ2aWNlOiBQYWdlSGVhZGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5kaXNhYmxlUmVzZXQoKTtcbiAgICB0aGlzLmxvYWRGb3JtRGVmaW5pdGlvbigpO1xuICAgIHRoaXMuY2hlY2tUb09wZW5VcGxvYWRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsZXJ0U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUJ1aWxkZXJDaGFuZ2VkKGV2ZW50LCBkZWZpbml0aW9uOiBFZGl0b3JNb2RlbCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXBkYXRlQ29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiA9IGV2ZW50LmZvcm07XG4gICAgdGhpcy5fZm9ybURlZmluaXRpb24kLm5leHQoey4uLnRoaXMuX2Zvcm1EZWZpbml0aW9uLCBmb3JtRGVmaW5pdGlvbjogZXZlbnQuZm9ybX0pO1xuICAgIHRoaXMuanNvbkZvcm1EZWZpbml0aW9uJC5uZXh0KHsuLi5kZWZpbml0aW9uLCB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoZXZlbnQuZm9ybSl9KTtcbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGVsZXRlTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRm9ybURlZmluaXRpb24oZGVmaW5pdGlvbjogRm9ybURlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtTWFuYWdlbWVudFNlcnZpY2UuZGVsZXRlRm9ybURlZmluaXRpb24oZGVmaW5pdGlvbi5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZm9ybS1tYW5hZ2VtZW50J10pO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdGb3JtIGRlbGV0ZWQnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgRm9ybScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZvcm1EZWZpbml0aW9uKGRlZmluaXRpb246IEZvcm1EZWZpbml0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkZWZpbml0aW9uLmZvcm1EZWZpbml0aW9uKV0sIHtcbiAgICAgIHR5cGU6ICd0ZXh0L2pzb24nLFxuICAgIH0pO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5kb3dubG9hZCA9IGBmb3JtXyR7ZGVmaW5pdGlvbi5uYW1lfS5qc29uYDtcbiAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwobGluay5ocmVmKTtcbiAgICBsaW5rLnJlbW92ZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGlmeUZvcm1EZWZpbml0aW9uKGRlZmluaXRpb246IEZvcm1EZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZm9ybSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uICE9PSBudWxsID8gdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uIDogZGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblxuICAgICk7XG4gICAgY29uc3QgcmVxdWVzdDogTW9kaWZ5Rm9ybURlZmluaXRpb25SZXF1ZXN0ID0ge1xuICAgICAgaWQ6IGRlZmluaXRpb24uaWQsXG4gICAgICBuYW1lOiBkZWZpbml0aW9uLm5hbWUsXG4gICAgICBmb3JtRGVmaW5pdGlvbjogZm9ybSxcbiAgICB9O1xuICAgIHRoaXMuZm9ybU1hbmFnZW1lbnRTZXJ2aWNlLm1vZGlmeUZvcm1EZWZpbml0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Zvcm0tbWFuYWdlbWVudCddKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnRm9ybSBkZXBsb3llZCcpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdFcnJvciBkZXBsb3lpbmcgRm9ybScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiKHRhYjogRURJVF9UQUJTKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG5cbiAgICBpZiAodGFiID09PSBFRElUX1RBQlMuQlVJTERFUikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaGVsbFNlcnZpY2Uub25NYWluQ29udGVudFJlc2l6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uT3V0cHV0Q2hhbmdlKGV2ZW50OiB7ZGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkfSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQuZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkoZXZlbnQuZGF0YSkgPT09IHRoaXMuX2FjdGl2ZU91cHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlT3VwdXQgPSBKU09OLnN0cmluZ2lmeShldmVudC5kYXRhKTtcbiAgICB0aGlzLmpzb25PdXRwdXQkLm5leHQoe3ZhbHVlOiB0aGlzLl9hY3RpdmVPdXB1dCwgbGFuZ3VhZ2U6ICdqc29uJ30pO1xuICB9XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2VFdmVudCh2YWx1ZTogc3RyaW5nLCBkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbiwgZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbmdlQWN0aXZlIHx8IHRoaXMudmFsaWRKc29uQ2hhbmdlID09PSBmYWxzZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZERlZmluaXRpb24gPSBKU09OLnBhcnNlKHZhbHVlKTtcblxuICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiA9IHBhcnNlZERlZmluaXRpb247XG5cbiAgICB0aGlzLl9mb3JtRGVmaW5pdGlvbiQubmV4dCh7XG4gICAgICAuLi5kZWZpbml0aW9uLFxuICAgICAgZm9ybURlZmluaXRpb246IHBhcnNlZERlZmluaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25WYWxpZEV2ZW50KHZhbHVlOiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFuZ2VBY3RpdmUgfHwgZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkSnNvbkNoYW5nZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNob3dVcGxvYWRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RHVwbGljYXRlTW9kYWwoZGVmaW5pdGlvbjogRm9ybURlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBGb3JtTWFuYWdlbWVudER1cGxpY2F0ZUNvbXBvbmVudCxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBmb3JtVG9EdXBsaWNhdGU6IGRlZmluaXRpb24sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1EZWZpbml0aW9uKGZvcm1EZWZpbml0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBKU09OLnBhcnNlKGZvcm1EZWZpbml0aW9uKTtcbiAgICBpZiAoIWRlZmluaXRpb24/LmNvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMucmVsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdJbnZhbGlkIGZvcm0uaW8uIE1pc3NpbmcgSlNPTiBmaWVsZCBcImNvbXBvbmVudHNcIi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gZGVmaW5pdGlvbi5jb21wb25lbnRzO1xuICAgIGNvbnN0IGN1cnJlbnREZWZpbml0aW9uID0gdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uIHx8IGRlZmluaXRpb24uZm9ybURlZmluaXRpb247XG4gICAgY29uc3QgbmV3RGVmaW5pdGlvbiA9IHsuLi5jdXJyZW50RGVmaW5pdGlvbiwgLi4uKGNvbXBvbmVudHMgJiYge2NvbXBvbmVudHN9KX07XG5cbiAgICB0aGlzLm1vZGlmaWVkRm9ybURlZmluaXRpb24gPSBuZXdEZWZpbml0aW9uO1xuICAgIGRlZmluaXRpb24uZm9ybURlZmluaXRpb24gPSBuZXdEZWZpbml0aW9uO1xuXG4gICAgdGhpcy5qc29uRm9ybURlZmluaXRpb24kLm5leHQoe1xuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KG5ld0RlZmluaXRpb24pLFxuICAgICAgbGFuZ3VhZ2U6ICdqc29uJyxcbiAgICB9KTtcblxuICAgIHRoaXMucmVsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNvbmZpcm1SZWRpcmVjdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjYW5jZWxCdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbltyZWY9XCJjYW5jZWxCdXR0b25cIl0nKTtcbiAgICBpZiAoIWNhbmNlbEJ1dHRvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbmNlbEJ1dHRvbi5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1RvT3BlblVwbG9hZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGlmIChwYXJhbXM/LnVwbG9hZCA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGb3JtRGVmaW5pdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKChwYXJhbU1hcDogUGFyYW1NYXApID0+XG4gICAgICAgICAgdGhpcy5mb3JtTWFuYWdlbWVudFNlcnZpY2UuZ2V0Rm9ybURlZmluaXRpb24ocGFyYW1NYXAuZ2V0KCdpZCcpID8/ICcnKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtRGVmaW5pdGlvbiQubmV4dChkZWZpbml0aW9uKTtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZShkZWZpbml0aW9uLm5hbWUpO1xuICAgICAgICB0aGlzLmpzb25Gb3JtRGVmaW5pdGlvbiQubmV4dCh7XG4gICAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmluaXRpb24uZm9ybURlZmluaXRpb24pLFxuICAgICAgICAgIGxhbmd1YWdlOiAnanNvbicsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZm9ybURlZmluaXRpb246IGZvcm1EZWZpbml0aW9uJCB8IGFzeW5jLFxuICAgIGpzb25Gb3JtRGVmaW5pdGlvbjoganNvbkZvcm1EZWZpbml0aW9uJCB8IGFzeW5jLFxuICAgIGpzb25PdXRwdXQ6IGpzb25PdXRwdXQkIHwgYXN5bmMsXG4gICAgY29tcGFjdE1vZGU6IGNvbXBhY3RNb2RlJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgQGlmIChvYnMuZm9ybURlZmluaXRpb24pIHtcbiAgICA8bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlciBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidmFsdGltby1mb3JtLW1hbmFnZW1lbnQtZWRpdF9faGVhZGVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyctLWNvbXBhY3QnOiBvYnMuY29tcGFjdE1vZGV9XCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAob2JzLmZvcm1EZWZpbml0aW9uLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICA8Y2RzLXRhZyBzaXplPVwic21cIiB0eXBlPVwiYmx1ZVwiPnt7ICdmb3JtTWFuYWdlbWVudC5yZWFkT25seScgfCB0cmFuc2xhdGUgfX08L2Nkcy10YWc+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tZm9ybS1tYW5hZ2VtZW50LWVkaXRfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51PlxuICAgICAgICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uIChzZWxlY3RlZCk9XCJkb3dubG9hZEZvcm1EZWZpbml0aW9uKG9icy5mb3JtRGVmaW5pdGlvbilcIj5cbiAgICAgICAgICAgICAgICB7eyAnRG93bmxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuXG4gICAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmZvcm1EZWZpbml0aW9uLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2hvd1VwbG9hZE1vZGFsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ1VwbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG5cbiAgICAgICAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZm9ybURlZmluaXRpb24ucmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJkZWxldGUob2JzLmZvcm1EZWZpbml0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJmYWNlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG5cbiAgICAgICAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvbiAoc2VsZWN0ZWQpPVwic2hvd0R1cGxpY2F0ZU1vZGFsKG9icy5mb3JtRGVmaW5pdGlvbilcIj5cbiAgICAgICAgICAgICAgICB7eyAnZm9ybU1hbmFnZW1lbnQuZHVwbGljYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvbj5cbiAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnU+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZm9ybURlZmluaXRpb24ucmVhZE9ubHkgfHwgIXZhbGlkSnNvbkNoYW5nZVwiXG4gICAgICAgICAgICAgIFtzaXplXT1cIm9icy5jb21wYWN0TW9kZSA/ICdzbScgOiAnbWQnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGlmeUZvcm1EZWZpbml0aW9uKG9icy5mb3JtRGVmaW5pdGlvbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnaW50ZXJmYWNlLnNhdmUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInNhdmVcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Y2RzLXRhYnMgdHlwZT1cImNvbnRhaW5lZFwiPlxuICAgICAgPGNkcy10YWIgW2hlYWRpbmddPVwiVEFCUy5CVUlMREVSIHwgdHJhbnNsYXRlXCIgKHNlbGVjdGVkKT1cIm9uU2VsZWN0ZWRUYWIoVEFCUy5CVUlMREVSKVwiPlxuICAgICAgICA8dmFsdGltby1mb3JtLWlvLWJ1aWxkZXJcbiAgICAgICAgICAqbmdJZj1cIihyZWxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJiBhY3RpdmVUYWIgPT09IFRBQlMuQlVJTERFUlwiXG4gICAgICAgICAgW2Zvcm1dPVwib2JzLmZvcm1EZWZpbml0aW9uLmZvcm1EZWZpbml0aW9uXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImZvcm1CdWlsZGVyQ2hhbmdlZCgkZXZlbnQsIG9icy5qc29uRm9ybURlZmluaXRpb24pXCJcbiAgICAgICAgPjwvdmFsdGltby1mb3JtLWlvLWJ1aWxkZXI+XG4gICAgICA8L2Nkcy10YWI+XG5cbiAgICAgIDxjZHMtdGFiIFtoZWFkaW5nXT1cIlRBQlMuRURJVE9SIHwgdHJhbnNsYXRlXCIgKHNlbGVjdGVkKT1cIm9uU2VsZWN0ZWRUYWIoVEFCUy5FRElUT1IpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAganNvbkVkaXRvcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBvYnMuZm9ybURlZmluaXRpb24ucmVhZE9ubHksXG4gICAgICAgICAgICAgICAgZm9ybURlZmluaXRpb246IG9icy5mb3JtRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbDogb2JzLmpzb25Gb3JtRGVmaW5pdGlvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICA8Y2RzLXRhYlxuICAgICAgICBbaGVhZGluZ109XCJUQUJTLk9VVFBVVCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiKFRBQlMuT1VUUFVUKVwiXG4gICAgICAgIGNsYXNzPVwidmFsdGltby1mb3JtLW1hbmFnZW1lbnQtZWRpdF9fb3V0cHV0XCJcbiAgICAgID5cbiAgICAgICAgPHZhbHRpbW8tZm9ybS1pb1xuICAgICAgICAgIFtmb3JtXT1cIm9icy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbk91dHB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdmFsdGltby1mb3JtLWlvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAganNvbkVkaXRvcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgZGF0YToge2Rpc2FibGVkOiB0cnVlLCBmb3JtRGVmaW5pdGlvbjogb2JzLmZvcm1EZWZpbml0aW9uLCBtb2RlbDogb2JzLmpzb25PdXRwdXR9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZHMtdGFiPlxuICAgIDwvY2RzLXRhYnM+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLXNwaW5uZXI+PC92YWx0aW1vLXNwaW5uZXI+XG4gIH1cblxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiaW50ZXJmYWNlLmRlbGV0ZVwiXG4gICAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICAgIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVDb25maXJtYXRpb25cIlxuICAgIGNhbmNlbEJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5jYW5jZWxcIlxuICAgIFtvdXRwdXRPbkNvbmZpcm1dPVwib2JzLmZvcm1EZWZpbml0aW9uXCJcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlXCJcbiAgICAoY29uZmlybUV2ZW50KT1cImRlbGV0ZUZvcm1EZWZpbml0aW9uKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cblxuICA8dmFsdGltby1mb3JtLW1hbmFnZW1lbnQtdXBsb2FkXG4gICAgW3Nob3ckXT1cInNob3dNb2RhbCRcIlxuICAgIChkZWZpbml0aW9uVXBsb2FkZWQpPVwic2V0Rm9ybURlZmluaXRpb24oJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZm9ybS1tYW5hZ2VtZW50LXVwbG9hZD5cblxuICA8bmctdGVtcGxhdGUgI2pzb25FZGl0b3IgbGV0LWRhdGE9XCJkYXRhXCI+XG4gICAgPHZhbHRpbW8tZWRpdG9yXG4gICAgICBbbW9kZWxdPVwiZGF0YS5tb2RlbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGF0YS5kaXNhYmxlZFwiXG4gICAgICAodmFsaWRFdmVudCk9XCJvblZhbGlkRXZlbnQoJGV2ZW50LCBkYXRhLmRpc2FibGVkKVwiXG4gICAgICAodmFsdWVDaGFuZ2VFdmVudCk9XCJvblZhbHVlQ2hhbmdlRXZlbnQoJGV2ZW50LCBkYXRhLmZvcm1EZWZpbml0aW9uLCBkYXRhLmRpc2FibGVkKVwiXG4gICAgICBbZml0UGFnZV09XCJ0cnVlXCJcbiAgICAgIFtmaXRQYWdlRXh0cmFTcGFjZV09XCI4MFwiXG4gICAgPjwvdmFsdGltby1lZGl0b3I+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2015-2023 Ritense BV, the Netherlands.
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
3
  *
4
4
  * Licensed under EUPL, Version 1.2 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -45,19 +45,15 @@ const routes = [
45
45
  },
46
46
  ];
47
47
  export class FormManagementRoutingModule {
48
- constructor(router) {
49
- this.router = router;
50
- RouterUtils.configureRouter(this.router);
51
- }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormManagementRoutingModule, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.NgModule }); }
53
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FormManagementRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
54
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormManagementRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
49
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FormManagementRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
50
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormManagementRoutingModule, imports: [RouterModule.forRoot(routes, RouterUtils.getRouterExtraOptions()), RouterModule] }); }
55
51
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormManagementRoutingModule, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormManagementRoutingModule, decorators: [{
57
53
  type: NgModule,
58
54
  args: [{
59
- imports: [RouterModule.forChild(routes)],
55
+ imports: [RouterModule.forRoot(routes, RouterUtils.getRouterExtraOptions())],
60
56
  exports: [RouterModule],
61
57
  }]
62
- }], ctorParameters: function () { return [{ type: i1.Router }]; } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mb3JtLW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBUyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ3hHLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7QUFFcEUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFNBQVMsRUFBRSx1QkFBdUI7UUFDbEMsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUM1QztJQUNEO1FBQ0UsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixTQUFTLEVBQUUsNkJBQTZCO1FBQ3hDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUN0RDtJQUNEO1FBQ0UsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLGFBQWEsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1FBQ3BDLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBQztLQUMxRTtDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBSFUsMkJBQTJCO2dIQUEzQiwyQkFBMkIsd0NBRjVCLFlBQVk7Z0hBRVgsMkJBQTJCLFlBSDVCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7OzRGQUVYLDJCQUEyQjtrQkFKdkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXIsIFJvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtwZW5kaW5nQ2hhbmdlc0d1YXJkfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Uk9MRV9BRE1JTiwgUm91dGVyVXRpbHN9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0F1dGhHdWFyZFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7Rm9ybU1hbmFnZW1lbnRDcmVhdGVDb21wb25lbnR9IGZyb20gJy4vZm9ybS1tYW5hZ2VtZW50LWNyZWF0ZS9mb3JtLW1hbmFnZW1lbnQtY3JlYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudH0gZnJvbSAnLi9mb3JtLW1hbmFnZW1lbnQtZWRpdC9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudENvbXBvbmVudH0gZnJvbSAnLi9mb3JtLW1hbmFnZW1lbnQuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnZm9ybS1tYW5hZ2VtZW50JyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50Q29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge3RpdGxlOiAnRm9ybXMnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdmb3JtLW1hbmFnZW1lbnQvY3JlYXRlJyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50Q3JlYXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge3RpdGxlOiAnQ3JlYXRlIG5ldyBGb3JtJywgcm9sZXM6IFtST0xFX0FETUlOXX0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZm9ybS1tYW5hZ2VtZW50L2VkaXQvOmlkJyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGNhbkRlYWN0aXZhdGU6IFtwZW5kaW5nQ2hhbmdlc0d1YXJkXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdGb3JtIEJ1aWxkZXInLCByb2xlczogW1JPTEVfQURNSU5dLCBjdXN0b21QYWdlVGl0bGU6IHRydWV9LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1NYW5hZ2VtZW50Um91dGluZ01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICBSb3V0ZXJVdGlscy5jb25maWd1cmVSb3V0ZXIodGhpcy5yb3V0ZXIpO1xuICB9XG59XG4iXX0=
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mb3JtLW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ3hHLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7QUFFcEUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFNBQVMsRUFBRSx1QkFBdUI7UUFDbEMsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUM1QztJQUNEO1FBQ0UsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixTQUFTLEVBQUUsNkJBQTZCO1FBQ3hDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQztLQUN0RDtJQUNEO1FBQ0UsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLGFBQWEsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1FBQ3BDLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBQztLQUMxRTtDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sMkJBQTJCOzhHQUEzQiwyQkFBMkI7K0dBQTNCLDJCQUEyQix3Q0FGNUIsWUFBWTsrR0FFWCwyQkFBMkIsWUFINUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsRUFDakUsWUFBWTs7MkZBRVgsMkJBQTJCO2tCQUp2QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7b0JBQzVFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtwZW5kaW5nQ2hhbmdlc0d1YXJkfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Uk9MRV9BRE1JTiwgUm91dGVyVXRpbHN9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0F1dGhHdWFyZFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7Rm9ybU1hbmFnZW1lbnRDcmVhdGVDb21wb25lbnR9IGZyb20gJy4vZm9ybS1tYW5hZ2VtZW50LWNyZWF0ZS9mb3JtLW1hbmFnZW1lbnQtY3JlYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudH0gZnJvbSAnLi9mb3JtLW1hbmFnZW1lbnQtZWRpdC9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudENvbXBvbmVudH0gZnJvbSAnLi9mb3JtLW1hbmFnZW1lbnQuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnZm9ybS1tYW5hZ2VtZW50JyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50Q29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge3RpdGxlOiAnRm9ybXMnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdmb3JtLW1hbmFnZW1lbnQvY3JlYXRlJyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50Q3JlYXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge3RpdGxlOiAnQ3JlYXRlIG5ldyBGb3JtJywgcm9sZXM6IFtST0xFX0FETUlOXX0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZm9ybS1tYW5hZ2VtZW50L2VkaXQvOmlkJyxcbiAgICBjb21wb25lbnQ6IEZvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGNhbkRlYWN0aXZhdGU6IFtwZW5kaW5nQ2hhbmdlc0d1YXJkXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdGb3JtIEJ1aWxkZXInLCByb2xlczogW1JPTEVfQURNSU5dLCBjdXN0b21QYWdlVGl0bGU6IHRydWV9LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JSb290KHJvdXRlcywgUm91dGVyVXRpbHMuZ2V0Um91dGVyRXh0cmFPcHRpb25zKCkpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1NYW5hZ2VtZW50Um91dGluZ01vZHVsZSB7fVxuIl19