@provoly/hypervisor 1.4.32 → 1.4.34
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.
|
@@ -3,8 +3,11 @@ import { SubscriptionnerDirective } from '@provoly/dashboard';
|
|
|
3
3
|
import { DOMAINS } from '../../model/domains.constant';
|
|
4
4
|
import equal from 'fast-deep-equal/es6';
|
|
5
5
|
import { padId } from '../../general/pad-id.function';
|
|
6
|
+
import { ofType } from "@ngrx/effects";
|
|
7
|
+
import { ProcedureActions } from "../../store/procedure/procedure.actions";
|
|
8
|
+
import { delay } from "rxjs";
|
|
6
9
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@ngrx/
|
|
10
|
+
import * as i1 from "@ngrx/effects";
|
|
8
11
|
import * as i2 from "@angular/forms";
|
|
9
12
|
import * as i3 from "@provoly/dashboard";
|
|
10
13
|
import * as i4 from "../../general/procedure-actions/procedure-actions.component";
|
|
@@ -17,11 +20,12 @@ export class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
17
20
|
get modifiedModel() {
|
|
18
21
|
return { ...this.model, ...(this.modifications ?? {}) };
|
|
19
22
|
}
|
|
20
|
-
constructor(
|
|
23
|
+
constructor(actions$) {
|
|
21
24
|
super();
|
|
22
|
-
this.
|
|
25
|
+
this.actions$ = actions$;
|
|
23
26
|
this.username = 'xxx';
|
|
24
27
|
this.modifications = {};
|
|
28
|
+
this.saved = false;
|
|
25
29
|
this.errors = [];
|
|
26
30
|
this.eventErrors = [];
|
|
27
31
|
this.eventErrorsChange = new EventEmitter();
|
|
@@ -30,6 +34,24 @@ export class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
30
34
|
this.readonly = false;
|
|
31
35
|
this.readOnlyComment = false;
|
|
32
36
|
this.padId = padId;
|
|
37
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.save))
|
|
38
|
+
.subscribe({
|
|
39
|
+
next: result => {
|
|
40
|
+
this.saved = true;
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.saveSuccess), delay(1000))
|
|
44
|
+
.subscribe({
|
|
45
|
+
next: result => {
|
|
46
|
+
this.saved = false;
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.saveFailure), delay(1000))
|
|
50
|
+
.subscribe({
|
|
51
|
+
next: result => {
|
|
52
|
+
this.saved = false;
|
|
53
|
+
}
|
|
54
|
+
}));
|
|
33
55
|
}
|
|
34
56
|
hasError(prop) {
|
|
35
57
|
return this.errors.find((err) => err.field === prop) ?? false;
|
|
@@ -50,25 +72,27 @@ export class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
50
72
|
}
|
|
51
73
|
}
|
|
52
74
|
modify(prop, $event) {
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
75
|
+
if (!this.saved) {
|
|
76
|
+
if (prop === 'name') {
|
|
77
|
+
const index = this.errors.findIndex(error => error.field == 'title');
|
|
78
|
+
if (index !== -1) {
|
|
79
|
+
this.errors.splice(index, 1);
|
|
80
|
+
}
|
|
57
81
|
}
|
|
58
|
-
}
|
|
59
|
-
// @ts-ignore
|
|
60
|
-
const newValue = $event instanceof Event ? $event.target?.value : $event;
|
|
61
|
-
if (this.model) {
|
|
62
82
|
// @ts-ignore
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.modifications[prop] = newValue;
|
|
66
|
-
this._outputModifications();
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
83
|
+
const newValue = $event instanceof Event ? $event.target?.value : $event;
|
|
84
|
+
if (this.model) {
|
|
69
85
|
// @ts-ignore
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
if (this.model[prop] !== newValue) {
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
this.modifications[prop] = newValue;
|
|
89
|
+
this._outputModifications();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// @ts-ignore
|
|
93
|
+
delete this.modifications[prop];
|
|
94
|
+
this._outputModifications();
|
|
95
|
+
}
|
|
72
96
|
}
|
|
73
97
|
}
|
|
74
98
|
}
|
|
@@ -85,13 +109,13 @@ export class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
85
109
|
}
|
|
86
110
|
this._outputModifications();
|
|
87
111
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, deps: [{ token: i1.
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
113
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: ProcedureModelDetailComponent, selector: "hvy-procedure-model-detail", inputs: { model: "model", username: "username", title: "title", eventErrors: "eventErrors", readonly: "readonly", readOnlyComment: "readOnlyComment", cancelModifications: "cancelModifications" }, outputs: { eventErrorsChange: "eventErrorsChange", modified: "modified" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: i4.ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "readOnlyComment", "enableEditActions", "events", "actions"], outputs: ["modified", "commented"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
|
|
90
114
|
}
|
|
91
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, decorators: [{
|
|
92
116
|
type: Component,
|
|
93
117
|
args: [{ selector: 'hvy-procedure-model-detail', template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
|
|
94
|
-
}], ctorParameters: () => [{ type: i1.
|
|
118
|
+
}], ctorParameters: () => [{ type: i1.Actions }], propDecorators: { model: [{
|
|
95
119
|
type: Input
|
|
96
120
|
}], username: [{
|
|
97
121
|
type: Input
|
|
@@ -110,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
110
134
|
}], cancelModifications: [{
|
|
111
135
|
type: Input
|
|
112
136
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2VkdXJlLW1vZGVsLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2h5cGVydmlzb3Ivc3JjL2xpYi9wcm9jZWR1cmUvbW9kZWwtZGV0YWlsL3Byb2NlZHVyZS1tb2RlbC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvcHJvY2VkdXJlL21vZGVsLWRldGFpbC9wcm9jZWR1cmUtbW9kZWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXZELE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQU10RCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsd0JBQXdCO0lBYXpFLElBQWEsbUJBQW1CLENBQUMsR0FBUTtRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBdUIsQ0FBQztJQUMvRSxDQUFDO0lBRUQsWUFBb0IsS0FBWTtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUss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ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEh5cFByb2NlZHVyZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUtbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IERPTUFJTlMgfSBmcm9tICcuLi8uLi9tb2RlbC9kb21haW5zLmNvbnN0YW50JztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgSHlwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IHBhZElkIH0gZnJvbSAnLi4vLi4vZ2VuZXJhbC9wYWQtaWQuZnVuY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdodnktcHJvY2VkdXJlLW1vZGVsLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZWR1cmUtbW9kZWwtZGV0YWlsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcm9jZWR1cmVNb2RlbERldGFpbENvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIG1vZGVsPzogSHlwUHJvY2VkdXJlTW9kZWw7XG4gIEBJbnB1dCgpIHVzZXJuYW1lOiBzdHJpbmcgPSAneHh4JztcbiAgbW9kaWZpY2F0aW9uczogUGFydGlhbDxIeXBQcm9jZWR1cmVNb2RlbD4gPSB7fTtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfVtdID0gW107XG4gIEBJbnB1dCgpIGV2ZW50RXJyb3JzICA6IHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXSA9IFtdO1xuICBAT3V0cHV0KCkgZXZlbnRFcnJvcnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXT4oKTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmVNb2RlbD4sIEh5cFByb2NlZHVyZU1vZGVsXT4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERPTUFJTlMgPSBET01BSU5TLnZhbHVlcztcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZE9ubHlDb21tZW50ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGNhbmNlbE1vZGlmaWNhdGlvbnMoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLm1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gIH1cblxuICBnZXQgbW9kaWZpZWRNb2RlbCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLm1vZGVsLCAuLi4odGhpcy5tb2RpZmljYXRpb25zID8/IHt9KSB9IGFzIEh5cFByb2NlZHVyZU1vZGVsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgaGFzRXJyb3IocHJvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmZpbmQoKGVycikgPT4gZXJyLmZpZWxkID09PSBwcm9wKSA/PyBmYWxzZTtcbiAgfVxuXG4gIHZhbGlkYXRlKG1vZGVsOiBIeXBQcm9jZWR1cmVNb2RlbCkge1xuICAgIGlmICghIW1vZGVsKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgaWYgKCFtb2RlbC5uYW1lIHx8IG1vZGVsLm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goeyBmaWVsZDogJ25hbWUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFtb2RlbC5kb21haW4gfHwgbW9kZWwuZG9tYWluLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKHsgZmllbGQ6ICdkb21haW4nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFtb2RlbC5kZXNjcmlwdGlvbiB8fCBtb2RlbC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudEVycm9yc0NoYW5nZS5uZXh0KHRoaXMuZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBtb2RpZnkocHJvcDogc3RyaW5nLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYocHJvcCA9PT0gJ25hbWUnKXtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lcnJvcnMuZmluZEluZGV4KGVycm9yID0+IGVycm9yLmZpZWxkID09ICd0aXRsZScpO1xuICAgICAgaWYoaW5kZXggIT09IC0xKXtcbiAgICAgICAgdGhpcy5lcnJvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG5ld1ZhbHVlID0gJGV2ZW50IGluc3RhbmNlb2YgRXZlbnQgPyAkZXZlbnQudGFyZ2V0Py52YWx1ZSA6ICRldmVudDtcblxuICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodGhpcy5tb2RlbFtwcm9wXSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLm1vZGlmaWNhdGlvbnNbcHJvcF0gPSBuZXdWYWx1ZTtcblxuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRlbGV0ZSB0aGlzLm1vZGlmaWNhdGlvbnNbcHJvcF07XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vdXRwdXRNb2RpZmljYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGUodGhpcy5tb2RpZmllZE1vZGVsKTtcbiAgICB0aGlzLm1vZGlmaWVkLm5leHQoW3RoaXMubW9kaWZpY2F0aW9ucywgdGhpcy5tb2RpZmllZE1vZGVsXSk7XG4gIH1cblxuICB1cGRhdGVBY3Rpb25zKCRldmVudDogSHlwQWN0aW9uW10pIHtcbiAgICBpZiAoZXF1YWwoJGV2ZW50LCB0aGlzLm1vZGVsPy5hY3Rpb25zKSkge1xuICAgICAgZGVsZXRlIHRoaXMubW9kaWZpY2F0aW9ucy5hY3Rpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGlmaWNhdGlvbnMuYWN0aW9ucyA9ICRldmVudDtcbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZElkID0gcGFkSWQ7XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1odnktcHJvY2VkdXJlLWRldGFpbFwiPlxuICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkucHJvY2VkdXJlLmRldGFpbCcgfCBpMThuIH19PC9oMT5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LXByb2NlZHVyZS1kZXRhaWxfX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1wcm9jZWR1cmUtZGV0YWlsX19jb250YWluZXJfX3Njcm9sbGFibGVcIj5cbiAgICAgIEBpZiAobW9kaWZpZWRNb2RlbDsgYXMgbW9kZWwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LXByb2NlZHVyZS1kZXRhaWxfX2Zvcm1cIj5cbiAgICAgICAgICA8aDM+e3sgJ0BodnkucHJvY2VkdXJlLmZvcm1UaXRsZScgfCBpMThuIH19PC9oMz5cbiAgICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkucHJvY2VkdXJlLnRpdGxlJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCduYW1lJylcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibW9kZWwubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5KCduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaGFzRXJyb3IoJ3RpdGxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWZvcm0tZmllbGQgLWVycm9yXCI+e3sgJ0BodnkucHJvY2VkdXJlLmFscmVhZHlFeGlzdHMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAobW9kZWwuaWQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuaWQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cInBhZElkLmZuKG1vZGVsLmlkKVwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5wcm9jZWR1cmUuZGVzY3JpcHRpb24nIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWwuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2Rlc2NyaXB0aW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnkoJ2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZG9tYWluLm5hbWUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiRE9NQUlOU1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsLmRvbWFpblwiXG4gICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmRvbWFpbi5cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkb21haW4nKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeSgnZG9tYWluJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkucHJvY2VkdXJlLmNyZWF0b3InIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJtb2RlbC5jcmVhdG9yXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcmVhdGlvbkRhdGUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1vZGVsLmNyZWF0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50Lmxhc3RNb2RpZmljYXRpb25EYXRlJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJtb2RlbC5sYXN0TW9kaWZpY2F0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktcHJvY2VkdXJlLWRldGFpbF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxoMz57eyAnQGh2eS5wcm9jZWR1cmUuYWN0aW9ucycgfCBpMThuIH19ICh7eyBtb2RlbC5hY3Rpb25zPy5sZW5ndGggfX0pPC9oMz5cbiAgICAgICAgICA8aHZ5LXByb2NlZHVyZS1hY3Rpb25zXG4gICAgICAgICAgICBbYWN0aW9uc109XCJtb2RlbC5hY3Rpb25zXCJcbiAgICAgICAgICAgIChtb2RpZmllZCk9XCJ1cGRhdGVBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZWFkT25seUNvbW1lbnRdPVwicmVhZE9ubHlDb21tZW50XCJcbiAgICAgICAgICAgIG1vZGU9XCJtb2RlbFwiXG4gICAgICAgICAgICBbZW5hYmxlRWRpdEFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgPjwvaHZ5LXByb2NlZHVyZS1hY3Rpb25zPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2VkdXJlLW1vZGVsLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2h5cGVydmlzb3Ivc3JjL2xpYi9wcm9jZWR1cmUvbW9kZWwtZGV0YWlsL3Byb2NlZHVyZS1tb2RlbC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvcHJvY2VkdXJlL21vZGVsLWRldGFpbC9wcm9jZWR1cmUtbW9kZWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXZELE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RCxPQUFPLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFNM0IsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHdCQUF3QjtJQWN6RSxJQUFhLG1CQUFtQixDQUFDLEdBQVE7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLEVBQXVCLENBQUM7SUFDL0UsQ0FBQztJQUVELFlBQW9CLFFBQWlCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQXJCNUIsYUFBUSxHQUFXLEtBQUssQ0FBQztRQUNsQyxrQkFBYSxHQUErQixFQUFFLENBQUM7UUFFL0MsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFdBQU0sR0FBc0MsRUFBRSxDQUFDO1FBQ3RDLGdCQUFXLEdBQXdDLEVBQUUsQ0FBQztRQUNyRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUMxRSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW1ELENBQUM7UUFDdEUsWUFBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQTZHZCxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBaEcvQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FDOUI7YUFDRSxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDcEIsQ0FBQztTQUNGLENBQUMsQ0FDTCxDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDWjthQUNFLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQyxDQUNMLENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNaO2FBQ0UsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQ0wsQ0FBQTtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNoRSxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXdCO1FBQy9CLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLE1BQWE7UUFDaEMsSUFBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNkLElBQUcsSUFBSSxLQUFLLE1BQU0sRUFBQyxDQUFDO2dCQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUM7Z0JBQ3JFLElBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztZQUNELGFBQWE7WUFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXpFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLGFBQWE7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNsQyxhQUFhO29CQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO29CQUVwQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGFBQWE7b0JBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBRUgsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFtQjtRQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBdkhVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLHdXQ2hCMUMsaTBJQTBHQTs7MkZEMUZhLDZCQUE2QjtrQkFKekMsU0FBUzsrQkFDRSw0QkFBNEI7NEVBSTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFTyxtQkFBbUI7c0JBQS9CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEh5cFByb2NlZHVyZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUtbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IERPTUFJTlMgfSBmcm9tICcuLi8uLi9tb2RlbC9kb21haW5zLmNvbnN0YW50JztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgSHlwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IHBhZElkIH0gZnJvbSAnLi4vLi4vZ2VuZXJhbC9wYWQtaWQuZnVuY3Rpb24nO1xuaW1wb3J0IHtBY3Rpb25zLCBvZlR5cGV9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XG5pbXBvcnQge1Byb2NlZHVyZUFjdGlvbnN9IGZyb20gXCIuLi8uLi9zdG9yZS9wcm9jZWR1cmUvcHJvY2VkdXJlLmFjdGlvbnNcIjtcbmltcG9ydCB7ZGVsYXl9IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2h2eS1wcm9jZWR1cmUtbW9kZWwtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2NlZHVyZS1tb2RlbC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByb2NlZHVyZU1vZGVsRGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgbW9kZWw/OiBIeXBQcm9jZWR1cmVNb2RlbDtcbiAgQElucHV0KCkgdXNlcm5hbWU6IHN0cmluZyA9ICd4eHgnO1xuICBtb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZU1vZGVsPiA9IHt9O1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgc2F2ZWQgPSBmYWxzZTtcbiAgZXJyb3JzOiB7IGZpZWxkOiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9W10gPSBbXTtcbiAgQElucHV0KCkgZXZlbnRFcnJvcnMgIDogeyBmaWVsZDogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfVtdID0gW107XG4gIEBPdXRwdXQoKSBldmVudEVycm9yc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfVtdPigpO1xuICBAT3V0cHV0KCkgbW9kaWZpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFtQYXJ0aWFsPEh5cFByb2NlZHVyZU1vZGVsPiwgSHlwUHJvY2VkdXJlTW9kZWxdPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkT25seUNvbW1lbnQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgY2FuY2VsTW9kaWZpY2F0aW9ucyhldnQ6IGFueSkge1xuICAgIHRoaXMubW9kaWZpY2F0aW9ucyA9IHt9O1xuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBtb2RpZmllZE1vZGVsKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMubW9kZWwsIC4uLih0aGlzLm1vZGlmaWNhdGlvbnMgPz8ge30pIH0gYXMgSHlwUHJvY2VkdXJlTW9kZWw7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUHJvY2VkdXJlQWN0aW9ucy5zYXZlKVxuICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIClcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUHJvY2VkdXJlQWN0aW9ucy5zYXZlU3VjY2VzcyksXG4gICAgICAgIGRlbGF5KDEwMDApLFxuICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFByb2NlZHVyZUFjdGlvbnMuc2F2ZUZhaWx1cmUpLFxuICAgICAgICBkZWxheSgxMDAwKSxcbiAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgaGFzRXJyb3IocHJvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmZpbmQoKGVycikgPT4gZXJyLmZpZWxkID09PSBwcm9wKSA/PyBmYWxzZTtcbiAgfVxuXG4gIHZhbGlkYXRlKG1vZGVsOiBIeXBQcm9jZWR1cmVNb2RlbCkge1xuICAgIGlmICghIW1vZGVsKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgaWYgKCFtb2RlbC5uYW1lIHx8IG1vZGVsLm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLnB1c2goeyBmaWVsZDogJ25hbWUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFtb2RlbC5kb21haW4gfHwgbW9kZWwuZG9tYWluLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKHsgZmllbGQ6ICdkb21haW4nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFtb2RlbC5kZXNjcmlwdGlvbiB8fCBtb2RlbC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudEVycm9yc0NoYW5nZS5uZXh0KHRoaXMuZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBtb2RpZnkocHJvcDogc3RyaW5nLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYoIXRoaXMuc2F2ZWQpe1xuICAgICAgaWYocHJvcCA9PT0gJ25hbWUnKXtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmVycm9ycy5maW5kSW5kZXgoZXJyb3IgPT4gZXJyb3IuZmllbGQgPT0gJ3RpdGxlJyk7XG4gICAgICAgIGlmKGluZGV4ICE9PSAtMSl7XG4gICAgICAgICAgdGhpcy5lcnJvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbmV3VmFsdWUgPSAkZXZlbnQgaW5zdGFuY2VvZiBFdmVudCA/ICRldmVudC50YXJnZXQ/LnZhbHVlIDogJGV2ZW50O1xuXG4gICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICh0aGlzLm1vZGVsW3Byb3BdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLm1vZGlmaWNhdGlvbnNbcHJvcF0gPSBuZXdWYWx1ZTtcblxuICAgICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZGVsZXRlIHRoaXMubW9kaWZpY2F0aW9uc1twcm9wXTtcbiAgICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgX291dHB1dE1vZGlmaWNhdGlvbnMoKSB7XG4gICAgdGhpcy52YWxpZGF0ZSh0aGlzLm1vZGlmaWVkTW9kZWwpO1xuICAgIHRoaXMubW9kaWZpZWQubmV4dChbdGhpcy5tb2RpZmljYXRpb25zLCB0aGlzLm1vZGlmaWVkTW9kZWxdKTtcbiAgfVxuXG4gIHVwZGF0ZUFjdGlvbnMoJGV2ZW50OiBIeXBBY3Rpb25bXSkge1xuICAgIGlmIChlcXVhbCgkZXZlbnQsIHRoaXMubW9kZWw/LmFjdGlvbnMpKSB7XG4gICAgICBkZWxldGUgdGhpcy5tb2RpZmljYXRpb25zLmFjdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kaWZpY2F0aW9ucy5hY3Rpb25zID0gJGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFkSWQgPSBwYWRJZDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJvLWh2eS1wcm9jZWR1cmUtZGV0YWlsXCI+XG4gIDxoMT57eyB0aXRsZSA/PyAnQGh2eS5wcm9jZWR1cmUuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICA8ZGl2IGNsYXNzPVwiby1odnktcHJvY2VkdXJlLWRldGFpbF9fY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LXByb2NlZHVyZS1kZXRhaWxfX2NvbnRhaW5lcl9fc2Nyb2xsYWJsZVwiPlxuICAgICAgQGlmIChtb2RpZmllZE1vZGVsOyBhcyBtb2RlbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktcHJvY2VkdXJlLWRldGFpbF9fZm9ybVwiPlxuICAgICAgICAgIDxoMz57eyAnQGh2eS5wcm9jZWR1cmUuZm9ybVRpdGxlJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5wcm9jZWR1cmUudGl0bGUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJtb2RlbC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnkoJ25hbWUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgQGlmIChoYXNFcnJvcigndGl0bGUnKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtZm9ybS1maWVsZCAtZXJyb3JcIj57eyAnQGh2eS5wcm9jZWR1cmUuYWxyZWFkeUV4aXN0cycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgQGlmIChtb2RlbC5pZCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5pZCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwicGFkSWQuZm4obW9kZWwuaWQpXCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LnByb2NlZHVyZS5kZXNjcmlwdGlvbicgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJtb2RlbC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZGVzY3JpcHRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeSgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIyNTZcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5kb21haW4ubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJET01BSU5TXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWwuZG9tYWluXCJcbiAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuZG9tYWluLlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2RvbWFpbicpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5KCdkb21haW4nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5wcm9jZWR1cmUuY3JlYXRvcicgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cIm1vZGVsLmNyZWF0b3JcIiByZWFkb25seSAvPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibW9kZWwuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1vZGVsLmxhc3RNb2RpZmljYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1wcm9jZWR1cmUtZGV0YWlsX19hY3Rpb25zXCI+XG4gICAgICAgICAgPGgzPnt7ICdAaHZ5LnByb2NlZHVyZS5hY3Rpb25zJyB8IGkxOG4gfX0gKHt7IG1vZGVsLmFjdGlvbnM/Lmxlbmd0aCB9fSk8L2gzPlxuICAgICAgICAgIDxodnktcHJvY2VkdXJlLWFjdGlvbnNcbiAgICAgICAgICAgIFthY3Rpb25zXT1cIm1vZGVsLmFjdGlvbnNcIlxuICAgICAgICAgICAgKG1vZGlmaWVkKT1cInVwZGF0ZUFjdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5Q29tbWVudF09XCJyZWFkT25seUNvbW1lbnRcIlxuICAgICAgICAgICAgbW9kZT1cIm1vZGVsXCJcbiAgICAgICAgICAgIFtlbmFibGVFZGl0QWN0aW9uc109XCJ0cnVlXCJcbiAgICAgICAgICA+PC9odnktcHJvY2VkdXJlLWFjdGlvbnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -2866,11 +2866,12 @@ class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
2866
2866
|
get modifiedModel() {
|
|
2867
2867
|
return { ...this.model, ...(this.modifications ?? {}) };
|
|
2868
2868
|
}
|
|
2869
|
-
constructor(
|
|
2869
|
+
constructor(actions$) {
|
|
2870
2870
|
super();
|
|
2871
|
-
this.
|
|
2871
|
+
this.actions$ = actions$;
|
|
2872
2872
|
this.username = 'xxx';
|
|
2873
2873
|
this.modifications = {};
|
|
2874
|
+
this.saved = false;
|
|
2874
2875
|
this.errors = [];
|
|
2875
2876
|
this.eventErrors = [];
|
|
2876
2877
|
this.eventErrorsChange = new EventEmitter();
|
|
@@ -2879,6 +2880,24 @@ class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
2879
2880
|
this.readonly = false;
|
|
2880
2881
|
this.readOnlyComment = false;
|
|
2881
2882
|
this.padId = padId;
|
|
2883
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.save))
|
|
2884
|
+
.subscribe({
|
|
2885
|
+
next: result => {
|
|
2886
|
+
this.saved = true;
|
|
2887
|
+
}
|
|
2888
|
+
}));
|
|
2889
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.saveSuccess), delay(1000))
|
|
2890
|
+
.subscribe({
|
|
2891
|
+
next: result => {
|
|
2892
|
+
this.saved = false;
|
|
2893
|
+
}
|
|
2894
|
+
}));
|
|
2895
|
+
this.subscriptions.add(this.actions$.pipe(ofType(ProcedureActions.saveFailure), delay(1000))
|
|
2896
|
+
.subscribe({
|
|
2897
|
+
next: result => {
|
|
2898
|
+
this.saved = false;
|
|
2899
|
+
}
|
|
2900
|
+
}));
|
|
2882
2901
|
}
|
|
2883
2902
|
hasError(prop) {
|
|
2884
2903
|
return this.errors.find((err) => err.field === prop) ?? false;
|
|
@@ -2899,25 +2918,27 @@ class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
2899
2918
|
}
|
|
2900
2919
|
}
|
|
2901
2920
|
modify(prop, $event) {
|
|
2902
|
-
if (
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2921
|
+
if (!this.saved) {
|
|
2922
|
+
if (prop === 'name') {
|
|
2923
|
+
const index = this.errors.findIndex(error => error.field == 'title');
|
|
2924
|
+
if (index !== -1) {
|
|
2925
|
+
this.errors.splice(index, 1);
|
|
2926
|
+
}
|
|
2906
2927
|
}
|
|
2907
|
-
}
|
|
2908
|
-
// @ts-ignore
|
|
2909
|
-
const newValue = $event instanceof Event ? $event.target?.value : $event;
|
|
2910
|
-
if (this.model) {
|
|
2911
2928
|
// @ts-ignore
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
this.modifications[prop] = newValue;
|
|
2915
|
-
this._outputModifications();
|
|
2916
|
-
}
|
|
2917
|
-
else {
|
|
2929
|
+
const newValue = $event instanceof Event ? $event.target?.value : $event;
|
|
2930
|
+
if (this.model) {
|
|
2918
2931
|
// @ts-ignore
|
|
2919
|
-
|
|
2920
|
-
|
|
2932
|
+
if (this.model[prop] !== newValue) {
|
|
2933
|
+
// @ts-ignore
|
|
2934
|
+
this.modifications[prop] = newValue;
|
|
2935
|
+
this._outputModifications();
|
|
2936
|
+
}
|
|
2937
|
+
else {
|
|
2938
|
+
// @ts-ignore
|
|
2939
|
+
delete this.modifications[prop];
|
|
2940
|
+
this._outputModifications();
|
|
2941
|
+
}
|
|
2921
2942
|
}
|
|
2922
2943
|
}
|
|
2923
2944
|
}
|
|
@@ -2934,13 +2955,13 @@ class ProcedureModelDetailComponent extends SubscriptionnerDirective {
|
|
|
2934
2955
|
}
|
|
2935
2956
|
this._outputModifications();
|
|
2936
2957
|
}
|
|
2937
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, deps: [{ token: i1$
|
|
2958
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, deps: [{ token: i1$5.Actions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2938
2959
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: ProcedureModelDetailComponent, selector: "hvy-procedure-model-detail", inputs: { model: "model", username: "username", title: "title", eventErrors: "eventErrors", readonly: "readonly", readOnlyComment: "readOnlyComment", cancelModifications: "cancelModifications" }, outputs: { eventErrorsChange: "eventErrorsChange", modified: "modified" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "readOnlyComment", "enableEditActions", "events", "actions"], outputs: ["modified", "commented"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }, { kind: "pipe", type: ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
|
|
2939
2960
|
}
|
|
2940
2961
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ProcedureModelDetailComponent, decorators: [{
|
|
2941
2962
|
type: Component,
|
|
2942
2963
|
args: [{ selector: 'hvy-procedure-model-detail', template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n @if (hasError('title')) {\n <span class=\"a-form-field -error\">{{ '@hvy.procedure.alreadyExists' | i18n }}</span>\n }\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions?.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n [readOnlyComment]=\"readOnlyComment\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
|
|
2943
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2964
|
+
}], ctorParameters: () => [{ type: i1$5.Actions }], propDecorators: { model: [{
|
|
2944
2965
|
type: Input
|
|
2945
2966
|
}], username: [{
|
|
2946
2967
|
type: Input
|