@eqproject/eqp-dynamic-module 2.8.38 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.mjs +3 -9
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +42 -43
- package/esm2020/lib/components/private/action-button-creator/action-button-creator.component.mjs +204 -0
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +38 -78
- package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +12 -3
- package/esm2020/lib/components/private/field-templates/action-button-field-template/action-button-field-template.component.mjs +52 -0
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +19 -17
- package/esm2020/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.mjs +2 -9
- package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +2 -8
- package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +45 -17
- package/esm2020/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.mjs +3 -9
- package/esm2020/lib/components/private/form-records/view-form-record/view-form-record.component.mjs +2 -8
- package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +4 -7
- package/esm2020/lib/components/private/graphs/graphs.component.mjs +4 -7
- package/esm2020/lib/components/private/trigger-creator/trigger-creator.component.mjs +1 -1
- package/esm2020/lib/eqp-dynamic-module.module.mjs +9 -3
- package/esm2020/lib/models/baseField.model.mjs +2 -1
- package/esm2020/lib/models/fields/actionButton.model.mjs +6 -0
- package/esm2020/lib/models/trigger.model.mjs +5 -7
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +408 -209
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +408 -209
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component.d.ts +2 -4
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +8 -5
- package/lib/components/private/action-button-creator/action-button-creator.component.d.ts +42 -0
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +5 -12
- package/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.d.ts +4 -1
- package/lib/components/private/field-templates/action-button-field-template/action-button-field-template.component.d.ts +19 -0
- package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +3 -4
- package/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.d.ts +2 -4
- package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +2 -4
- package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +2 -4
- package/lib/components/private/form-records/list-view-form-record/single-record/single-record.component.d.ts +2 -4
- package/lib/components/private/form-records/view-form-record/view-form-record.component.d.ts +2 -4
- package/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.d.ts +3 -4
- package/lib/components/private/graphs/graphs.component.d.ts +3 -4
- package/lib/eqp-dynamic-module.module.d.ts +16 -14
- package/lib/models/baseField.model.d.ts +2 -1
- package/lib/models/fields/actionButton.model.d.ts +17 -0
- package/lib/models/trigger.model.d.ts +7 -14
- package/package.json +1 -1
package/esm2020/lib/components/private/action-button-creator/action-button-creator.component.mjs
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { Component, Input, EventEmitter, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { ActionButton, ActionFlagEnum, TriggerPropertyTypeEnum } from '../../../models/trigger.model';
|
|
3
|
+
import { ParamTypeEnum } from '../../../models/endPointConfiguration.model';
|
|
4
|
+
import { FieldTypeEnum } from '../../../models/baseField.model';
|
|
5
|
+
import { GlobalService } from '../../../services/global.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/dialog";
|
|
8
|
+
import * as i2 from "../../../services/utilityHelper.services";
|
|
9
|
+
import * as i3 from "@angular/material/button";
|
|
10
|
+
import * as i4 from "@angular/material/input";
|
|
11
|
+
import * as i5 from "@angular/material/form-field";
|
|
12
|
+
import * as i6 from "@angular/material/card";
|
|
13
|
+
import * as i7 from "@angular/material/tooltip";
|
|
14
|
+
import * as i8 from "@angular/forms";
|
|
15
|
+
import * as i9 from "@angular/common";
|
|
16
|
+
import * as i10 from "@eqproject/eqp-select";
|
|
17
|
+
import * as i11 from "../add-formula-field/add-formula-field.component";
|
|
18
|
+
export class ActionButtonCreatorComponent {
|
|
19
|
+
constructor(dialog, utilityHelperService) {
|
|
20
|
+
this.dialog = dialog;
|
|
21
|
+
this.utilityHelperService = utilityHelperService;
|
|
22
|
+
this.actionButton = null;
|
|
23
|
+
this.actionButtonField = null;
|
|
24
|
+
this.formulas = null;
|
|
25
|
+
this.InField = false;
|
|
26
|
+
this.onSaveRecord = new EventEmitter();
|
|
27
|
+
this.onChangeSomething = new EventEmitter();
|
|
28
|
+
this.FieldTypeEnum = FieldTypeEnum;
|
|
29
|
+
this.isSaving = false;
|
|
30
|
+
this.formulaKeys = new Array();
|
|
31
|
+
this.formulaFieldsStructure = new Array();
|
|
32
|
+
this.actionsFlag = ActionFlagEnum;
|
|
33
|
+
this.triggerPropertyType = TriggerPropertyTypeEnum;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
///
|
|
37
|
+
/// Questo componente funziona sia per i bottoni dei fields sia per i bottoni sugli header (addrecord, listview eccetera)
|
|
38
|
+
/// Se si sta lavorando sui fields è popolato 'this.actionButtonField' altrimenti è null.
|
|
39
|
+
///
|
|
40
|
+
if (this.actionButtonField != null) {
|
|
41
|
+
this.actionButton = this.actionButtonField;
|
|
42
|
+
}
|
|
43
|
+
if (this.actionButton != null && this.actionButton.execution != null) {
|
|
44
|
+
this.selectedFormula = {};
|
|
45
|
+
this.selectedFormula.key = this.actionButton.execution;
|
|
46
|
+
if (this.actionButtonField == null) {
|
|
47
|
+
this.formulaFieldsStructure = new Array();
|
|
48
|
+
Object.keys(this.formulas[this.selectedFormula.key]).forEach((res) => {
|
|
49
|
+
this.formulaFieldsStructure.push({ "key": res, "type": this.formulas[this.selectedFormula.key][res].type, "tooltip": this.formulas[this.selectedFormula.key][res].tooltip });
|
|
50
|
+
});
|
|
51
|
+
Object.keys(this.actionButton.formulasTemp).forEach((res) => {
|
|
52
|
+
this.formulaFieldsStructure.find(x => x.key == res).value = this.actionButton.formulasTemp[res].value;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.formulaFieldsStructure.push(this.actionButton.formulas);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (this.actionButton == null) {
|
|
60
|
+
this.actionButton = new ActionButton();
|
|
61
|
+
}
|
|
62
|
+
var executeGetModules = false;
|
|
63
|
+
Object.keys(this.formulas).forEach((res) => {
|
|
64
|
+
this.formulaKeys.push({ "key": res });
|
|
65
|
+
Object.keys(this.formulas[res]).forEach((property) => {
|
|
66
|
+
if (this.formulas[res][property].type == TriggerPropertyTypeEnum.DMMODULE) {
|
|
67
|
+
executeGetModules = true;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
if (executeGetModules) {
|
|
72
|
+
this.getAllModules();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
openFormulaDialog(formulaField) {
|
|
76
|
+
this.dialogFormulaRef = this.dialog.open(this.dialogFormula, {
|
|
77
|
+
disableClose: true,
|
|
78
|
+
hasBackdrop: true,
|
|
79
|
+
width: "75%",
|
|
80
|
+
data: {
|
|
81
|
+
formula: this.formulaFieldsStructure.find(x => x.key == formulaField.key).value,
|
|
82
|
+
fields: this.form.Fields
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
this.dialogFormulaRef.afterClosed().subscribe((result) => {
|
|
86
|
+
var formulaToChange = this.formulaFieldsStructure.find(x => x.key == formulaField.key);
|
|
87
|
+
formulaToChange.value = result.formula.toString() == "" ? null : result.formula.toString();
|
|
88
|
+
this.onFormulaFieldChange(formulaToChange);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
onFormulaFieldChange(formulaField) {
|
|
92
|
+
this.changeSomething();
|
|
93
|
+
}
|
|
94
|
+
onEqpSelectModule(ev, formulaField) {
|
|
95
|
+
formulaField.value = ev.ID;
|
|
96
|
+
this.changeSomething();
|
|
97
|
+
}
|
|
98
|
+
saveOrExitForm(exit) {
|
|
99
|
+
GlobalService.debugLog('add-form-record saveRecordEvent');
|
|
100
|
+
if (exit) {
|
|
101
|
+
this.onSaveRecord.emit(null);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.actionButton.ButtonCode = this.selectedFormula.key;
|
|
105
|
+
this.formulaFieldsStructure.forEach((formulaField) => {
|
|
106
|
+
if (typeof this.actionButton.formulas == "undefined") {
|
|
107
|
+
this.actionButton.formulas = {};
|
|
108
|
+
}
|
|
109
|
+
this.actionButton.formulasTemp[formulaField.key] = formulaField;
|
|
110
|
+
this.actionButton.execution = this.selectedFormula.key;
|
|
111
|
+
});
|
|
112
|
+
this.isSaving = true;
|
|
113
|
+
this.onSaveRecord.emit(this.actionButton);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
changeSomething() {
|
|
117
|
+
this.actionButton.ButtonCode = this.selectedFormula.key;
|
|
118
|
+
if (!this.actionButton.formulasTemp) {
|
|
119
|
+
this.actionButton.formulasTemp = {};
|
|
120
|
+
}
|
|
121
|
+
console.log("CHANGE SOMETHING", this.actionButton, this.formulaFieldsStructure);
|
|
122
|
+
this.formulaFieldsStructure.forEach((formulaField) => {
|
|
123
|
+
if (typeof this.actionButton.formulas == "undefined") {
|
|
124
|
+
this.actionButton.formulas = {};
|
|
125
|
+
}
|
|
126
|
+
this.actionButton.formulasTemp[formulaField.key] = formulaField;
|
|
127
|
+
this.actionButton.execution = this.selectedFormula.key;
|
|
128
|
+
});
|
|
129
|
+
this.onChangeSomething.emit(this.actionButton);
|
|
130
|
+
}
|
|
131
|
+
getAllModules() {
|
|
132
|
+
const dynamicModuleParams = new Array();
|
|
133
|
+
dynamicModuleParams.push({
|
|
134
|
+
ParamName: "orgaid",
|
|
135
|
+
ParamValue: this.form.OrgaID,
|
|
136
|
+
ParamType: ParamTypeEnum["Query param"],
|
|
137
|
+
});
|
|
138
|
+
this.utilityHelperService.RunEndPointCall(this.endPointConfiguration.Forms.GetAllFormEndPoint, dynamicModuleParams, (res) => {
|
|
139
|
+
this.forms = res;
|
|
140
|
+
this.forms = this.forms.sort((uno, due) => uno.Name.localeCompare(due.Name));
|
|
141
|
+
this.formulaFieldsStructure.forEach((res) => {
|
|
142
|
+
if (res.type == TriggerPropertyTypeEnum.DMMODULE) {
|
|
143
|
+
res.object = this.forms.find(x => x.ID == res.value);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}, (err) => { });
|
|
147
|
+
}
|
|
148
|
+
onChangeFormula(formula) {
|
|
149
|
+
if (formula == null) {
|
|
150
|
+
this.changeSomething();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
GlobalService.debugLog('@@trigger-creator:onChangeFormula selected formula', formula);
|
|
154
|
+
GlobalService.debugLog('@@trigger-creator:onChangeFormula formulas', this.formulas);
|
|
155
|
+
this.formulaFieldsStructure = new Array();
|
|
156
|
+
console.log("onChangeFormula", this.formulas, formula.key);
|
|
157
|
+
//------------
|
|
158
|
+
Object.keys(this.formulas[formula.key]).forEach((res) => {
|
|
159
|
+
this.formulaFieldsStructure.push({ "key": res, "type": this.formulas[formula.key][res].type,
|
|
160
|
+
"tooltip": this.formulas[formula.key][res].tooltip });
|
|
161
|
+
});
|
|
162
|
+
//------------
|
|
163
|
+
/* *** originale ***
|
|
164
|
+
Object.keys(this.formulas[formula.key]).forEach((res) => {
|
|
165
|
+
this.formulaFieldsStructure.push({"key": res, "type": this.formulas[formula.key][res].type
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
*** */
|
|
169
|
+
GlobalService.debugLog('@@trigger-creator:onChangeFormula formulaFieldsStructure', this.formulaFieldsStructure);
|
|
170
|
+
this.changeSomething();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
ActionButtonCreatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ActionButtonCreatorComponent, deps: [{ token: i1.MatDialog }, { token: i2.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
+
ActionButtonCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ActionButtonCreatorComponent, selector: "action-button-creator", inputs: { form: "form", actionButton: "actionButton", actionButtonField: "actionButtonField", formulas: "formulas", endPointConfiguration: "endPointConfiguration", InField: "InField" }, outputs: { onSaveRecord: "onSaveRecord", onChangeSomething: "onChangeSomething" }, viewQueries: [{ propertyName: "dialogFormula", first: true, predicate: ["dialogFormula"], descendants: true, static: true }], ngImport: i0, template: "\r\n<mat-card class=\"add-form-field\">\r\n <mat-card-header *ngIf=\"!InField\">\r\n <mat-card-title>\r\n {{actionButton != null ? \"Modifica\" : \"Aggiungi\"}} actionButton\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"container-fluid containerContent padder\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Action Button</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"true\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-3\">Etichetta</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Etichetta </mat-label>\r\n <input matInput [(ngModel)]=\"actionButton.ButtonLabel\" [readonly]=\"false\" [required]=\"true\" (keyup)=\"changeSomething()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-3\">Icona (<a href='https://www.angularjswiki.com/angular/angular-material-icons-list-mat-icon-list' target=\"_blank\">lista</a>)</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Icona Material (<a href='https://www.angularjswiki.com/angular/angular-material-icons-list-mat-icon-list' target=\"_blank\">lista</a>) </mat-label>\r\n <input matInput [(ngModel)]=\"actionButton.Icon\" [readonly]=\"false\" [required]=\"true\" (keyup)=\"changeSomething()\">\r\n </mat-form-field>\r\n </div>\r\n </div> \r\n \r\n <div class=\"row\" *ngIf=\"!InField\">\r\n <div class=\"col-3\">Sezioni</div>\r\n <div class=\"col-9\">\r\n <mat-label class=\"pt-1\"> Sezioni </mat-label>\r\n <eqp-select\r\n [enumData]=\"actionsFlag\"\r\n [isSearchable]=\"true\"\r\n [isMultiSelect] = \"true\"\r\n [(ngModelInput)]=\"actionButton.ShowIn\" \r\n (ngModelInputChange)=\"changeSomething()\" \r\n >\r\n </eqp-select>\r\n </div>\r\n </div> \r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\" *ngIf=\"formulaField.type == triggerPropertyType.STRING\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}}</mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" [matTooltip]=\"formulaField.tooltip\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-9\" *ngIf=\"formulaField.type == triggerPropertyType.DMMODULE\">\r\n <eqp-select [placeholder]=\"'Seleziona modulo'\" [arrayData]=\"forms\" [(ngModelInput)]=\"formulaField.object\" [isSearchable]=\"true\"\r\n [arrayKeyProperty]=\"'ID'\" [arrayValueProperty]=\"'Name'\" [ngModelOptions]=\"{ standalone: true }\" (ngModelInputChange)=\"onEqpSelectModule($event, formulaField)\">\r\n </eqp-select>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n <mat-card-footer *ngIf=\"!InField\">\r\n <div class=\"d-flex justify-content-end mt-2 mb-1 me-3\"> \r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </mat-card-footer>\r\n\r\n</mat-card>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i6.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i6.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i6.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i11.AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component" }] });
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ActionButtonCreatorComponent, decorators: [{
|
|
176
|
+
type: Component,
|
|
177
|
+
args: [{ selector: 'action-button-creator', template: "\r\n<mat-card class=\"add-form-field\">\r\n <mat-card-header *ngIf=\"!InField\">\r\n <mat-card-title>\r\n {{actionButton != null ? \"Modifica\" : \"Aggiungi\"}} actionButton\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"container-fluid containerContent padder\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Action Button</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"true\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-3\">Etichetta</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Etichetta </mat-label>\r\n <input matInput [(ngModel)]=\"actionButton.ButtonLabel\" [readonly]=\"false\" [required]=\"true\" (keyup)=\"changeSomething()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-3\">Icona (<a href='https://www.angularjswiki.com/angular/angular-material-icons-list-mat-icon-list' target=\"_blank\">lista</a>)</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Icona Material (<a href='https://www.angularjswiki.com/angular/angular-material-icons-list-mat-icon-list' target=\"_blank\">lista</a>) </mat-label>\r\n <input matInput [(ngModel)]=\"actionButton.Icon\" [readonly]=\"false\" [required]=\"true\" (keyup)=\"changeSomething()\">\r\n </mat-form-field>\r\n </div>\r\n </div> \r\n \r\n <div class=\"row\" *ngIf=\"!InField\">\r\n <div class=\"col-3\">Sezioni</div>\r\n <div class=\"col-9\">\r\n <mat-label class=\"pt-1\"> Sezioni </mat-label>\r\n <eqp-select\r\n [enumData]=\"actionsFlag\"\r\n [isSearchable]=\"true\"\r\n [isMultiSelect] = \"true\"\r\n [(ngModelInput)]=\"actionButton.ShowIn\" \r\n (ngModelInputChange)=\"changeSomething()\" \r\n >\r\n </eqp-select>\r\n </div>\r\n </div> \r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\" *ngIf=\"formulaField.type == triggerPropertyType.STRING\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}}</mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" [matTooltip]=\"formulaField.tooltip\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-9\" *ngIf=\"formulaField.type == triggerPropertyType.DMMODULE\">\r\n <eqp-select [placeholder]=\"'Seleziona modulo'\" [arrayData]=\"forms\" [(ngModelInput)]=\"formulaField.object\" [isSearchable]=\"true\"\r\n [arrayKeyProperty]=\"'ID'\" [arrayValueProperty]=\"'Name'\" [ngModelOptions]=\"{ standalone: true }\" (ngModelInputChange)=\"onEqpSelectModule($event, formulaField)\">\r\n </eqp-select>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n <mat-card-footer *ngIf=\"!InField\">\r\n <div class=\"d-flex justify-content-end mt-2 mb-1 me-3\"> \r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </mat-card-footer>\r\n\r\n</mat-card>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>" }]
|
|
178
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.UtilityHelperService }]; }, propDecorators: { form: [{
|
|
179
|
+
type: Input,
|
|
180
|
+
args: ["form"]
|
|
181
|
+
}], actionButton: [{
|
|
182
|
+
type: Input,
|
|
183
|
+
args: ["actionButton"]
|
|
184
|
+
}], actionButtonField: [{
|
|
185
|
+
type: Input,
|
|
186
|
+
args: ["actionButtonField"]
|
|
187
|
+
}], formulas: [{
|
|
188
|
+
type: Input,
|
|
189
|
+
args: ["formulas"]
|
|
190
|
+
}], endPointConfiguration: [{
|
|
191
|
+
type: Input,
|
|
192
|
+
args: ["endPointConfiguration"]
|
|
193
|
+
}], InField: [{
|
|
194
|
+
type: Input,
|
|
195
|
+
args: ["InField"]
|
|
196
|
+
}], onSaveRecord: [{
|
|
197
|
+
type: Output
|
|
198
|
+
}], onChangeSomething: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], dialogFormula: [{
|
|
201
|
+
type: ViewChild,
|
|
202
|
+
args: ["dialogFormula", { static: true }]
|
|
203
|
+
}] } });
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hY3Rpb24tYnV0dG9uLWNyZWF0b3IvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEcsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnJDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdEJwRSxpQkFBWSxHQUFpQixJQUFJLENBQUM7UUFDN0Isc0JBQWlCLEdBQXNCLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRXRCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFakMsaUJBQVks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Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQVd5QyxhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b24sIEFjdGlvbkZsYWdFbnVtLCBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b25GaWVsZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWVsZHMvYWN0aW9uQnV0dG9uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWN0aW9uLWJ1dHRvbi1jcmVhdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWJ1dHRvbi1jcmVhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tYnV0dG9uLWNyZWF0b3IuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uQnV0dG9uQ3JlYXRvckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dChcImZvcm1cIikgZm9ybTogRm9ybTtcclxuICBASW5wdXQoXCJhY3Rpb25CdXR0b25cIikgYWN0aW9uQnV0dG9uOiBBY3Rpb25CdXR0b24gPSBudWxsO1xyXG4gIEBJbnB1dChcImFjdGlvbkJ1dHRvbkZpZWxkXCIpIGFjdGlvbkJ1dHRvbkZpZWxkOiBBY3Rpb25CdXR0b25GaWVsZCA9IG51bGw7XHJcbiAgQElucHV0KFwiZm9ybXVsYXNcIikgZm9ybXVsYXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KFwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dChcIkluRmllbGRcIikgSW5GaWVsZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25TYXZlUmVjb3JkOiBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZVNvbWV0aGluZzogRXZlbnRFbWl0dGVyPEFjdGlvbkJ1dHRvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkJ1dHRvbj4oKTtcclxuXHJcbiAgICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuICAgIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEZvcm11bGE6IGFueTtcclxuICAgIGZvcm11bGFLZXlzOiBBcnJheTxhbnk+ID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmU6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgYWN0aW9uc0ZsYWcgPSBBY3Rpb25GbGFnRW51bTtcclxuICAgIHRyaWdnZXJQcm9wZXJ0eVR5cGUgPSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bTtcclxuICBcclxuICAgIGRpYWxvZ0Zvcm11bGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAgIEBWaWV3Q2hpbGQoXCJkaWFsb2dGb3JtdWxhXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0Zvcm11bGE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgICBmb3JtczogQXJyYXk8Rm9ybT47XHJcbiAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSl7fVxyXG4gICAgXHJcbiAgICBuZ09uSW5pdCgpe1xyXG5cclxuICAgICAgLy8vXHJcbiAgICAgIC8vLyBRdWVzdG8gY29tcG9uZW50ZSBmdW56aW9uYSBzaWEgcGVyIGkgYm90dG9uaSBkZWkgZmllbGRzIHNpYSBwZXIgaSBib3R0b25pIHN1Z2xpIGhlYWRlciAoYWRkcmVjb3JkLCBsaXN0dmlldyBlY2NldGVyYSlcclxuICAgICAgLy8vIFNlIHNpIHN0YSBsYXZvcmFuZG8gc3VpIGZpZWxkcyDDqCBwb3BvbGF0byAndGhpcy5hY3Rpb25CdXR0b25GaWVsZCcgYWx0cmltZW50aSDDqCBudWxsLlxyXG4gICAgICAvLy9cclxuXHJcbiAgICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbkZpZWxkICE9IG51bGwpe1xyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uID0gPEFjdGlvbkJ1dHRvbj50aGlzLmFjdGlvbkJ1dHRvbkZpZWxkO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gIT0gbnVsbCAmJiB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb24gIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhID0ge307XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5ID0gdGhpcy5hY3Rpb25CdXR0b24uZXhlY3V0aW9uO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b25GaWVsZCA9PSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzLCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldW3Jlc10udHlwZSwgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnRvb2x0aXB9KTtcclxuICAgICAgICAgIH0pOyAgIFxyXG5cclxuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcCkuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gcmVzKS52YWx1ZSA9IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcFtyZXNdLnZhbHVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3Rpb25CdXR0b24gPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25CdXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBleGVjdXRlR2V0TW9kdWxlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFLZXlzLnB1c2goe1wia2V5XCI6IHJlc30pO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbcmVzXSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm11bGFzW3Jlc11bcHJvcGVydHldLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRE1NT0RVTEUpe1xyXG4gICAgICAgICAgICBleGVjdXRlR2V0TW9kdWxlcyA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGV4ZWN1dGVHZXRNb2R1bGVzKXtcclxuICAgICAgICB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvcGVuRm9ybXVsYURpYWxvZyhmb3JtdWxhRmllbGQ6IGFueSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBmb3JtdWxhOiB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IGZvcm11bGFGaWVsZC5rZXkpLnZhbHVlLFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmZvcm0uRmllbGRzXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdmFyIGZvcm11bGFUb0NoYW5nZSA9IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSk7XHJcbiAgICAgICAgZm9ybXVsYVRvQ2hhbmdlLnZhbHVlID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5vbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhVG9DaGFuZ2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhRmllbGQ6IGFueSl7XHJcbiAgICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gICAgfSAgICBcclxuXHJcbiAgICBvbkVxcFNlbGVjdE1vZHVsZShldiwgZm9ybXVsYUZpZWxkKXtcclxuICAgICAgZm9ybXVsYUZpZWxkLnZhbHVlID0gZXYuSUQ7ICAgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gICAgfSAgICBcclxuXHJcbiAgc2F2ZU9yRXhpdEZvcm0oZXhpdDogYm9vbGVhbikge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnYWRkLWZvcm0tcmVjb3JkIHNhdmVSZWNvcmRFdmVudCcpXHJcbiAgICBpZiAoZXhpdCkge1xyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZC5lbWl0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLkJ1dHRvbkNvZGUgPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcblxyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZm9yRWFjaCgoZm9ybXVsYUZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy5hY3Rpb25CdXR0b24uZm9ybXVsYXMgPSB7fTsgfVxyXG4gICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcFtmb3JtdWxhRmllbGQua2V5XSA9IGZvcm11bGFGaWVsZDtcclxuICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbi5leGVjdXRpb24gPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQodGhpcy5hY3Rpb25CdXR0b24pO1xyXG4gICAgfVxyXG4gIH0gICAgXHJcblxyXG4gIGNoYW5nZVNvbWV0aGluZygpe1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b24uQnV0dG9uQ29kZSA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcCl7IHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcCA9IHt9OyB9XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJDSEFOR0UgU09NRVRISU5HXCIsIHRoaXMuYWN0aW9uQnV0dG9uLCB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpO1xyXG4gICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKGZvcm11bGFGaWVsZCkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzID09IFwidW5kZWZpbmVkXCIpeyB0aGlzLmFjdGlvbkJ1dHRvbi5mb3JtdWxhcyA9IHt9OyB9XHJcbiAgICAgIHRoaXMuYWN0aW9uQnV0dG9uLmZvcm11bGFzVGVtcFtmb3JtdWxhRmllbGQua2V5XSA9IGZvcm11bGFGaWVsZDtcclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b24uZXhlY3V0aW9uID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZVNvbWV0aGluZy5lbWl0KHRoaXMuYWN0aW9uQnV0dG9uKTtcclxuICB9XHJcblxyXG4gIGdldEFsbE1vZHVsZXMoKXtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJvcmdhaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk9yZ2FJRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRBbGxGb3JtRW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IEFycmF5PEZvcm0+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHJlcztcclxuICAgICAgICB0aGlzLmZvcm1zID0gdGhpcy5mb3Jtcy5zb3J0KCh1bm8sIGR1ZSkgPT4gdW5vLk5hbWUubG9jYWxlQ29tcGFyZShkdWUuTmFtZSkpO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRE1NT0RVTEUpe1xyXG4gICAgICAgICAgICByZXMub2JqZWN0ID0gdGhpcy5mb3Jtcy5maW5kKHggPT4geC5JRCA9PSByZXMudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4geyB9XHJcbiAgICApOyAgICBcclxuICB9ICBcclxuXHJcbiAgb25DaGFuZ2VGb3JtdWxhKGZvcm11bGE6IGFueSl7XHJcblxyXG4gICAgXHJcbiAgICBpZiAoZm9ybXVsYSA9PSBudWxsKXsgIFxyXG4gICAgICB0aGlzLmNoYW5nZVNvbWV0aGluZygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIHNlbGVjdGVkIGZvcm11bGEnLGZvcm11bGEpXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgZm9ybXVsYXMnLHRoaXMuZm9ybXVsYXMpXHJcblxyXG4gICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlRm9ybXVsYVwiLCB0aGlzLmZvcm11bGFzLCBmb3JtdWxhLmtleSk7XHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS1cclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlcywgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udHlwZSwgXHJcbiAgICAgICAgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udG9vbHRpcH0pO1xyXG4gICAgfSk7ICBcclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICAvKiAqKiogb3JpZ2luYWxlICoqKlxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzLCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICAqKiogKi9cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhRmllbGRzU3RydWN0dXJlJyx0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpXHJcblxyXG5cclxuICAgIHRoaXMuY2hhbmdlU29tZXRoaW5nKCk7XHJcbiAgfSAgXHJcblxyXG59XHJcbiIsIlxyXG48bWF0LWNhcmQgY2xhc3M9XCJhZGQtZm9ybS1maWVsZFwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cIiFJbkZpZWxkXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICB7e2FjdGlvbkJ1dHRvbiAhPSBudWxsID8gXCJNb2RpZmljYVwiIDogXCJBZ2dpdW5naVwifX0gYWN0aW9uQnV0dG9uXHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgY29udGFpbmVyQ29udGVudCBwYWRkZXJcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5UaXBvIEFjdGlvbiBCdXR0b248L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm11bGFLZXlzXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkRm9ybXVsYVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2tleSdcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZUZvcm11bGEoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+RXRpY2hldHRhPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBFdGljaGV0dGEgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiYWN0aW9uQnV0dG9uLkJ1dHRvbkxhYmVsXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cInRydWVcIiAoa2V5dXApPVwiY2hhbmdlU29tZXRoaW5nKClcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkljb25hICg8YSBocmVmPSdodHRwczovL3d3dy5hbmd1bGFyanN3aWtpLmNvbS9hbmd1bGFyL2FuZ3VsYXItbWF0ZXJpYWwtaWNvbnMtbGlzdC1tYXQtaWNvbi1saXN0JyB0YXJnZXQ9XCJfYmxhbmtcIj5saXN0YTwvYT4pPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBJY29uYSBNYXRlcmlhbCAoPGEgaHJlZj0naHR0cHM6Ly93d3cuYW5ndWxhcmpzd2lraS5jb20vYW5ndWxhci9hbmd1bGFyLW1hdGVyaWFsLWljb25zLWxpc3QtbWF0LWljb24tbGlzdCcgdGFyZ2V0PVwiX2JsYW5rXCI+bGlzdGE8L2E+KSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJhY3Rpb25CdXR0b24uSWNvblwiIFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgKGtleXVwKT1cImNoYW5nZVNvbWV0aGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhSW5GaWVsZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5TZXppb25pPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IFNlemlvbmkgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWN0aW9uc0ZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF0gPSBcInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiYWN0aW9uQnV0dG9uLlNob3dJblwiICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJjaGFuZ2VTb21ldGhpbmcoKVwiICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGZvcm11bGFGaWVsZCBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7Zm9ybXVsYUZpZWxkLmtleX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5TVFJJTkdcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4ge3tmb3JtdWxhRmllbGQua2V5fX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW21hdFRvb2x0aXBdPVwiZm9ybXVsYUZpZWxkLnRvb2x0aXBcIiAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkKVwiIFsobmdNb2RlbCldPVwiZm9ybXVsYUZpZWxkLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5ETU1PRFVMRVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgbW9kdWxvJ1wiIFthcnJheURhdGFdPVwiZm9ybXNcIiBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybXVsYUZpZWxkLm9iamVjdFwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInSUQnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRXFwU2VsZWN0TW9kdWxlKCRldmVudCwgZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyICpuZ0lmPVwiIUluRmllbGRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMiBtYi0xIG1lLTNcIj4gXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybSh0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybShmYWxzZSlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2F2aW5nXCI+U2FsdmE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCI+U2FsdmF0YWdnaW8gaW4gQ29yc28uLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcblxyXG48L21hdC1jYXJkPlxyXG5cclxuPCEtLURJQUxPRyBQRVIgU0VNUExJRklDQVJFIExBIFNDUklUVFVSQSBERUwgQ0FNUE8gRk9STVVMQS0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0Zvcm11bGE+XHJcbiAgICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuICAgIDwvZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|