@eqproject/eqp-dynamic-module 2.9.25 → 2.9.27
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/private/add-form-field/add-form-field.component.mjs +24 -3
- package/esm2020/lib/components/private/field-templates/boolean-field-template/boolean-field-template.component.mjs +4 -1
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +4 -1
- package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +4 -1
- package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +4 -1
- package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +4 -1
- package/esm2020/lib/components/private/trigger-creator/trigger-creator.component.mjs +74 -38
- package/esm2020/lib/models/baseField.model.mjs +1 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +111 -40
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +111 -39
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +2 -0
- package/lib/components/private/trigger-creator/trigger-creator.component.d.ts +7 -0
- package/lib/models/baseField.model.d.ts +1 -0
- package/package.json +1 -1
|
@@ -55,44 +55,12 @@ export class TriggerCreatorComponent {
|
|
|
55
55
|
Object.keys(this.trigger.formulas).forEach((res) => {
|
|
56
56
|
/**qui devono essere messi i campi con valori da visualizzare nei campi dentro il popup
|
|
57
57
|
* (?) altrimenti se si entra in modifica non si vedono anche se presenti */
|
|
58
|
-
const myFormula = this.formulaFieldsStructure.find(x => x.key == res);
|
|
58
|
+
const myFormula = this.formulaFieldsStructure.find((x) => x.key == res);
|
|
59
59
|
myFormula.value = this.trigger.formulas[res].value; // inizializzo valore allo stesso modo per tutti i trigger
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
if (!myFormula.allowedValues) { // se non è presente una lista di valori di default la creo per inserirci il nuovo elemento che sarà mostrato come selezionato
|
|
65
|
-
myFormula.allowedValues = new Array;
|
|
66
|
-
}
|
|
67
|
-
// controllo se il valore ha una corrispondenza nella lista dei valori ammissibili
|
|
68
|
-
// toglo gli apici perché le formule per come sono configurate li contengono
|
|
69
|
-
let cleanValue;
|
|
70
|
-
if ((myFormula.value.startsWith("'") && myFormula.value.endsWith("'")) ||
|
|
71
|
-
(myFormula.value.startsWith('"') && myFormula.value.endsWith('"'))) {
|
|
72
|
-
cleanValue = myFormula.value.slice(1, -1);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
cleanValue = myFormula.value;
|
|
76
|
-
}
|
|
77
|
-
let newValueToShow = new KeyValue;
|
|
78
|
-
newValueToShow.key = myFormula.value;
|
|
79
|
-
newValueToShow.value = myFormula.value;
|
|
80
|
-
const alreadyExist = myFormula.allowedValues.find(item => item.key == cleanValue || item.key == myFormula.value);
|
|
81
|
-
// - se value è presente e diverso dal selettore nella dropdown lo ricerco tra i valori ammissibili; se non lo trovo lo aggiungo come nuova voce nella select
|
|
82
|
-
if (alreadyExist) {
|
|
83
|
-
GlobalService.debugLog("@@ IS found alreadyExist", alreadyExist);
|
|
84
|
-
myFormula.selectedAllowedValue = alreadyExist;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
GlobalService.debugLog("@@ NOT found alreadyExist", alreadyExist);
|
|
88
|
-
let newValueToShow = new KeyValue;
|
|
89
|
-
newValueToShow.key = newValueToShow.value = cleanValue;
|
|
90
|
-
myFormula.allowedValues.push(newValueToShow);
|
|
91
|
-
myFormula.selectedAllowedValue = newValueToShow;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
myFormula.selectedAllowedValue = this.trigger.formulas[res].selectedAllowedValue;
|
|
60
|
+
if (myFormula.type == this.triggerPropertyType.DROPDOWN_LIST) {
|
|
61
|
+
this.stringToDropDownHandler(myFormula, this.trigger.formulas[res]);
|
|
62
|
+
// se si toglie l'handler aggiungere
|
|
63
|
+
// myFormula.selectedAllowedValue = this.trigger.formulas[res].selectedAllowedValue;
|
|
96
64
|
}
|
|
97
65
|
});
|
|
98
66
|
}
|
|
@@ -231,6 +199,74 @@ export class TriggerCreatorComponent {
|
|
|
231
199
|
formulaField.value = "";
|
|
232
200
|
}
|
|
233
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* adatta la compatibilità di proprietà di tipo dropdown dichiarate nel configurator ma create in precedenza come string
|
|
204
|
+
* nel caso di myFormula.value non presenti negli allowedValues queste saranno aggiunte come selezioni temporanee fino a quando modificate con una scelta ammissibile
|
|
205
|
+
* @param myFormula elem of formulaFieldsStructure
|
|
206
|
+
* @param triggerFormula this.trigger.formulas[res]
|
|
207
|
+
*/
|
|
208
|
+
stringToDropDownHandler(myFormula, triggerFormula) {
|
|
209
|
+
// 1. se è una dropdown partono i controlli di compatibilità
|
|
210
|
+
if (myFormula.type == TriggerPropertyTypeEnum.DROPDOWN_LIST) {
|
|
211
|
+
// inizializzo gli allowedValues se non esistono
|
|
212
|
+
if (!myFormula.allowedValues) {
|
|
213
|
+
myFormula.allowedValues = new Array();
|
|
214
|
+
}
|
|
215
|
+
// per il controllo sui valori dichiarati in precedenza come string devo escludere gli apici
|
|
216
|
+
const selectedCleanValue = new KeyValue();
|
|
217
|
+
if (myFormula.value != null &&
|
|
218
|
+
((myFormula.value.startsWith("'") &&
|
|
219
|
+
myFormula.value.endsWith("'")) ||
|
|
220
|
+
(myFormula.value.startsWith('"') &&
|
|
221
|
+
myFormula.value.endsWith('"')))) {
|
|
222
|
+
selectedCleanValue.key = selectedCleanValue.value = myFormula.value.slice(1, -1);
|
|
223
|
+
}
|
|
224
|
+
else if (myFormula.value != null) {
|
|
225
|
+
selectedCleanValue.key = selectedCleanValue.value = myFormula.value;
|
|
226
|
+
}
|
|
227
|
+
// true se esiste una corrispondenza di value in allowedValues
|
|
228
|
+
const isValueInAllowed = selectedCleanValue != null && myFormula.allowedValues.some(item => item.key === selectedCleanValue.key);
|
|
229
|
+
/*if (myFormula.key == "destinatario_trigger") {
|
|
230
|
+
GlobalService.debugLog("@@ -out cycle- myFormula.value",myFormula);
|
|
231
|
+
GlobalService.debugLog("@@ -out cycle- myFormula?.selectedAllowedValue?.key != myFormula.value",myFormula?.selectedAllowedValue?.key != selectedCleanValue);
|
|
232
|
+
GlobalService.debugLog("@@ -out cycle- isSelected",selectedCleanValue);
|
|
233
|
+
GlobalService.debugLog("@@ -out cycle- isValueInAllowed",isValueInAllowed);
|
|
234
|
+
}*/
|
|
235
|
+
// nelle dropdown value è nullo, se non lo è significa che la proprietà in precedenza è stata dichiarata diversa da dropdown
|
|
236
|
+
if (myFormula.value != null) {
|
|
237
|
+
// se value è presente nella lista dei valori ammessi imposto il corrispondente come selezionato e svuoto value perché gestito da selectedAllowedValue
|
|
238
|
+
if (isValueInAllowed) {
|
|
239
|
+
myFormula.selectedAllowedValue = selectedCleanValue;
|
|
240
|
+
myFormula.value = null;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// se non è stato trovato un elemento compatibile con value negli allowed, creo un nuovo elemento nella lista e lo seleziono
|
|
244
|
+
myFormula.allowedValues.push(selectedCleanValue);
|
|
245
|
+
myFormula.selectedAllowedValue = selectedCleanValue;
|
|
246
|
+
myFormula.value = null;
|
|
247
|
+
/*if (myFormula.key == "destinatario_trigger") {
|
|
248
|
+
GlobalService.debugLog("@@ il selected non è disponibile nei predisposti allowedValues",myFormula.allowedValues);
|
|
249
|
+
GlobalService.debugLog("@@ il selected non è disponibile nei predisposti selectedAllowedValue",myFormula.selectedAllowedValue);
|
|
250
|
+
}*/
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
/*
|
|
255
|
+
if (myFormula.key == "destinatario_trigger") {
|
|
256
|
+
GlobalService.debugLog("@@ default: my formula",myFormula);
|
|
257
|
+
GlobalService.debugLog("@@ default: this.trigger.formulas[res]",this.trigger.formulas[res]);
|
|
258
|
+
GlobalService.debugLog("@@ default: è resente? in allowedValues?", myFormula.allowedValues.some(item => item.key == myFormula.selectedAllowedValue.key));
|
|
259
|
+
}
|
|
260
|
+
*/
|
|
261
|
+
// Comportamento di default: se myFormula.value ==null verifico che il selected è presente nella lista degli allowed; in caso negativo lo aggiungo
|
|
262
|
+
myFormula.selectedAllowedValue = triggerFormula.selectedAllowedValue; // aggiorno la selezione corrente
|
|
263
|
+
if (!myFormula.allowedValues.some(item => item.key == myFormula.selectedAllowedValue.key)) {
|
|
264
|
+
//GlobalService.debugLog("@@ default: my formula",myFormula);
|
|
265
|
+
myFormula.allowedValues.push(myFormula.selectedAllowedValue);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
234
270
|
}
|
|
235
271
|
TriggerCreatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TriggerCreatorComponent, deps: [{ token: i1.MatDialog }, { token: i2.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
236
272
|
TriggerCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TriggerCreatorComponent, selector: "trigger-creator", inputs: { form: "form", trigger: "trigger", formulas: "formulas", endPointConfiguration: "endPointConfiguration" }, outputs: { onSaveRecord: "onSaveRecord" }, 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>\r\n <mat-card-title>\r\n {{trigger != null ? \"Modifica\" : \"Aggiungi\"}} trigger\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\" *ngIf=\"trigger.conditions != null\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Descrizione Trigger</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Descrizione </mat-label>\r\n <input matInput [(ngModel)]=\"trigger.description\" [readonly]=\"false\" [required]=\"false\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Trigger</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onChangeFormula($event)\">\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\r\n <!-- campi con valori vincolati li mostro in una select-->\r\n <div class=\"col-9\" *ngIf=\"formulaField.type == triggerPropertyType.DROPDOWN_LIST\">\r\n <eqp-select\r\n [placeholder]=\"'Seleziona valore'\"\r\n [arrayData]=\"formulaField.allowedValues\"\r\n (ngModelInputChange)=\"onDropDownSelection($event,formulaField)\"\r\n [(ngModelInput)]=\"formulaField.selectedAllowedValue\"\r\n [arrayKeyProperty]=\"'key'\"\r\n [arrayValueProperty]=\"'value'\"\r\n [isRequired]=\"false\"\r\n class=\"eqp-form-field eqp-coloured\">\r\n </eqp-select>\r\n </div>\r\n\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" (click)=\"addCondition()\">Aggiungi condizione</button>\r\n\r\n <div class=\"padder\" *ngFor=\"let condition of trigger.conditions\">\r\n <div class=\"row\" *ngIf=\"condition.Field != null\">\r\n <div class=\"col-1\"><button class=\"btn btn-danger\"><mat-icon (click)=\"deleteCondition(condition)\">delete</mat-icon></button></div>\r\n <div class=\"col-2\">\r\n <eqp-select [arrayData]=\"form.Fields\" [(ngModelInput)]=\"condition.Field\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\"\r\n [showCancelButton]=\"false\" (ngModelInputChange)=\"onFieldTypeChange($event, condition)\"\r\n [includeFullObject]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-9\" *ngIf=\"condition.Field != null\">\r\n <dynamic-module-trigger-fix #fieldTemplate [condition]=\"condition\" [form]=\"form\" (triggerChange)=\"onTriggerChange($event, condition)\"></dynamic-module-trigger-fix>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\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: [".padder{padding:15px}\n"], 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: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i11.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: i12.AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component" }, { kind: "component", type: i13.DynamicModuleTriggerFixComponent, selector: "dynamic-module-trigger-fix", inputs: ["condition", "form"], outputs: ["triggerChange"] }] });
|
|
@@ -255,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
255
291
|
type: ViewChild,
|
|
256
292
|
args: ["dialogFormula", { static: true }]
|
|
257
293
|
}] } });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBYSxRQUFRLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEosT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxPQUFPLEVBQXNCLGFBQWEsRUFBeUIsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU3ZILE1BQU0sT0FBTyx1QkFBdUI7SUFzQmxDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBbkJ2RSxZQUFPLEdBQVksSUFBSSxDQUFDO1FB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QUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQUUsRUFBRSxZQUFZO1FBQ2hDLElBQUksRUFBRSxJQUFJLElBQUksRUFBQztZQUNiLFlBQVksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUM1QjthQUFNO1lBQ0wsWUFBWSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDOztxSEEvUVUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsb1ZDakJwQyxxdktBc0djOzRGRHJGRCx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsaUJBQWlCO21JQU1aLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFDSyxPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0csUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUNlLHFCQUFxQjtzQkFBcEQsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBRXBCLFlBQVk7c0JBQXJCLE1BQU07Z0JBV3VDLGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZSwgQ29uZGl0aW9uLCBLZXlWYWx1ZSwgVHJpZ2dlciwgVHJpZ2dlckNvbmRpdGlvbiwgVHJpZ2dlclByb3BlcnR5VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJpZ2dlci5tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGlja2VyTW9kZUVudW0gfSBmcm9tICdAZXFwcm9qZWN0L2VxcC1kYXRldGltZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtLCBFbmRQb2ludENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RyaWdnZXItY3JlYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyaWdnZXItY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyaWdnZXJDcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcInRyaWdnZXJcIikgdHJpZ2dlcjogVHJpZ2dlciA9IG51bGw7XHJcbiAgQElucHV0KFwiZm9ybXVsYXNcIikgZm9ybXVsYXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KFwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG5cclxuICBAT3V0cHV0KCkgb25TYXZlUmVjb3JkOiBFdmVudEVtaXR0ZXI8VHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyaWdnZXI+KCk7XHJcblxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRGb3JtdWxhOiBhbnk7XHJcbiAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmU6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIHBpY2tlck1vZGVFbnVtID0gUGlja2VyTW9kZUVudW07XHJcbiAgdHJpZ2dlclByb3BlcnR5VHlwZSA9IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtO1xyXG5cclxuICBkaWFsb2dGb3JtdWxhUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgZm9ybXM6IEFycmF5PEZvcm0+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSl7fVxyXG4gIFxyXG4gIG5nT25Jbml0KCl7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMudHJpZ2dlciA9IG5ldyBUcmlnZ2VyKCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zID0gbmV3IEFycmF5PFRyaWdnZXJDb25kaXRpb24+KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYSA9IHt9O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLnRyaWdnZXIuZXhlY3V0aW9uO1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XHJcbiAgICAgICAgICBcImtleVwiOiByZXMsIFxyXG4gICAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnR5cGUsIFxyXG4gICAgICAgICAgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnRvb2x0aXAsXHJcbiAgICAgICAgICBcInZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS52YWx1ZSxcclxuICAgICAgICAgIFwic2VsZWN0ZWRBbGxvd2VkVmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnNlbGVjdGVkQWxsb3dlZFZhbHVlLFxyXG4gICAgICAgICAgXCJhbGxvd2VkVmFsdWVzXCIgOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS5hbGxvd2VkVmFsdWVzXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgT2JqZWN0LmtleXModGhpcy50cmlnZ2VyLmZvcm11bGFzKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAvKipxdWkgZGV2b25vIGVzc2VyZSBtZXNzaSBpIGNhbXBpIGNvbiB2YWxvcmkgZGEgdmlzdWFsaXp6YXJlIG5laSBjYW1waSBkZW50cm8gaWwgcG9wdXAgXHJcbiAgICAgICAgICogKD8pIGFsdHJpbWVudGkgc2Ugc2kgZW50cmEgaW4gbW9kaWZpY2Egbm9uIHNpIHZlZG9ubyBhbmNoZSBzZSBwcmVzZW50aSAqL1xyXG5cclxuICAgICAgICBjb25zdCBteUZvcm11bGEgPSB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IHJlcyk7XHJcbiAgICAgICAgbXlGb3JtdWxhLnZhbHVlID0gdGhpcy50cmlnZ2VyLmZvcm11bGFzW3Jlc10udmFsdWUgIC8vIGluaXppYWxpenpvIHZhbG9yZSBhbGxvIHN0ZXNzbyBtb2RvIHBlciB0dXR0aSBpIHRyaWdnZXJcclxuICAgICAgXHJcbiAgICAgICAgLy8gc2UgaWwgdmFsb3JlIMOoIGRpdmVyc28gZGFsbGEgY2hpYXZlLCBpbCB0cmlnZ2VyIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGluIHByZWNlZGVuemEgY29tZSBzdHJpbmdcclxuICAgICAgICBpZihteUZvcm11bGEudHlwZSA9PSB0aGlzLnRyaWdnZXJQcm9wZXJ0eVR5cGUuRFJPUERPV05fTElTVCAmJiBteUZvcm11bGEudmFsdWUgJiYgbXlGb3JtdWxhPy5zZWxlY3RlZEFsbG93ZWRWYWx1ZT8ua2V5ICE9IG15Rm9ybXVsYS52YWx1ZSApeyAgXHJcbiAgICAgICAgLy8gcXVlc3RvIGNhc28gc2kgcHJlc2VudGEgcXVhbmRvIHNpIGxlZ2dlIGxhIGNvbmZpZ3VyYXppb25lIGRpIHVuIHRyaWdnZXIgY29uIHRyaWdnZXJQcm9wZXJ0eVR5cGUgbW9kaWZpY2F0YSAoc3RyaW5nLT5saXN0KVxyXG4gICAgICAgIC8vIHNlIMOoIHVuYSBkcm9wZG93biBtYSBub24gw6ggbWFpIHN0YXRhIGNvbmZpZ3VyYXRhIGNvbWUgdGFsZSAoZXMuIGRpY2hpYXJhdGEgY29tZSBzdHJpbmcpIHNlbGVjdGVkQWxsb3dlZFZhbHVlIGhhIGlsIHZhbG9yZSBkaSBkZWZhdWx0IG8gw6ggbnVsbCwgcXVpbmRpIHZhIGluaXppYWxpenphdG9cclxuXHJcbiAgICAgICAgaWYoIW15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzKXsgLy8gc2Ugbm9uIMOoIHByZXNlbnRlIHVuYSBsaXN0YSBkaSB2YWxvcmkgZGkgZGVmYXVsdCBsYSBjcmVvIHBlciBpbnNlcmlyY2kgaWwgbnVvdm8gZWxlbWVudG8gY2hlIHNhcsOgIG1vc3RyYXRvIGNvbWUgc2VsZXppb25hdG9cclxuXHJcbiAgICAgICAgICBteUZvcm11bGEuYWxsb3dlZFZhbHVlcyA9IG5ldyBBcnJheTxLZXlWYWx1ZT47XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY29udHJvbGxvIHNlIGlsIHZhbG9yZSBoYSB1bmEgY29ycmlzcG9uZGVuemEgbmVsbGEgbGlzdGEgZGVpIHZhbG9yaSBhbW1pc3NpYmlsaVxyXG4gICAgICAgIC8vIHRvZ2xvIGdsaSBhcGljaSBwZXJjaMOpIGxlIGZvcm11bGUgcGVyIGNvbWUgc29ubyBjb25maWd1cmF0ZSBsaSBjb250ZW5nb25vXHJcbiAgICAgICAgbGV0IGNsZWFuVmFsdWU7XHJcbiAgICAgICAgaWYgKChteUZvcm11bGEudmFsdWUuc3RhcnRzV2l0aChcIidcIikgJiYgbXlGb3JtdWxhLnZhbHVlLmVuZHNXaXRoKFwiJ1wiKSkgfHxcclxuICAgICAgICAgIChteUZvcm11bGEudmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiBteUZvcm11bGEudmFsdWUuZW5kc1dpdGgoJ1wiJykpKSB7XHJcbiAgICAgICAgICAgIGNsZWFuVmFsdWUgPSBteUZvcm11bGEudmFsdWUuc2xpY2UoMSwgLTEpO1xyXG4gICAgICB9ZWxzZXtcclxuXHJcbiAgICAgICAgY2xlYW5WYWx1ZSA9IG15Rm9ybXVsYS52YWx1ZTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGxldCBuZXdWYWx1ZVRvU2hvdyA9IG5ldyBLZXlWYWx1ZTtcclxuICAgICAgICBcclxuICAgICAgICBuZXdWYWx1ZVRvU2hvdy5rZXkgPSBteUZvcm11bGEudmFsdWU7XHJcbiAgICAgICAgbmV3VmFsdWVUb1Nob3cudmFsdWUgPSBteUZvcm11bGEudmFsdWU7XHJcblxyXG5cclxuICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3QgPSBteUZvcm11bGEuYWxsb3dlZFZhbHVlcy5maW5kKGl0ZW0gPT4gaXRlbS5rZXkgPT0gY2xlYW5WYWx1ZSB8fCBpdGVtLmtleSA9PSBteUZvcm11bGEudmFsdWUpO1xyXG5cclxuICAgICAgICAvLyAtIHNlIHZhbHVlIMOoIHByZXNlbnRlIGUgZGl2ZXJzbyBkYWwgc2VsZXR0b3JlIG5lbGxhIGRyb3Bkb3duIGxvIHJpY2VyY28gdHJhIGkgdmFsb3JpIGFtbWlzc2liaWxpOyBzZSBub24gbG8gdHJvdm8gbG8gYWdnaXVuZ28gY29tZSBudW92YSB2b2NlIG5lbGxhIHNlbGVjdFxyXG4gICAgICAgIGlmKGFscmVhZHlFeGlzdCl7IFxyXG5cclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBJUyBmb3VuZCBhbHJlYWR5RXhpc3RcIixhbHJlYWR5RXhpc3QpO1xyXG4gICAgICAgICAgbXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gYWxyZWFkeUV4aXN0O1xyXG5cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBOT1QgZm91bmQgYWxyZWFkeUV4aXN0XCIsYWxyZWFkeUV4aXN0KTtcclxuXHJcbiAgICAgICAgICBsZXQgbmV3VmFsdWVUb1Nob3cgPSBuZXcgS2V5VmFsdWU7XHJcblxyXG4gICAgICAgICAgbmV3VmFsdWVUb1Nob3cua2V5ID0gbmV3VmFsdWVUb1Nob3cudmFsdWUgPSBjbGVhblZhbHVlO1xyXG5cclxuICAgICAgICAgIG15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzLnB1c2gobmV3VmFsdWVUb1Nob3cpO1xyXG4gICAgICAgICAgbXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gbmV3VmFsdWVUb1Nob3c7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgfWVsc2V7IFxyXG4gICAgICAgICAgbXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gdGhpcy50cmlnZ2VyLmZvcm11bGFzW3Jlc10uc2VsZWN0ZWRBbGxvd2VkVmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB2YXIgZXhlY3V0ZUdldE1vZHVsZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFLZXlzLnB1c2goe1wia2V5XCI6IHJlc30pO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW3Jlc10pLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybXVsYXNbcmVzXVtwcm9wZXJ0eV0udHlwZSA9PSBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bS5ETU1PRFVMRSl7XHJcbiAgICAgICAgICBleGVjdXRlR2V0TW9kdWxlcyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChleGVjdXRlR2V0TW9kdWxlcyl7XHJcbiAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQEAgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZVwiLHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSlcclxuXHJcbiAgfVxyXG5cclxuICBvblRyaWdnZXJDaGFuZ2Uob3V0cHV0Q29uZGl0aW9uOiBDb25kaXRpb24sIFRyaWdnZXJDb25kaXRpb246IFRyaWdnZXJDb25kaXRpb24pe1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuZmluZCh4ID0+IHguQ0lEID09IFRyaWdnZXJDb25kaXRpb24uQ0lEKS5ib29sZWFubG9naWNvcGVyYXRvciA9IG91dHB1dENvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvcjtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLmZpbmQoeCA9PiB4LkNJRCA9PSBUcmlnZ2VyQ29uZGl0aW9uLkNJRCkubG9naWNvcGVyYXRvciA9IG91dHB1dENvbmRpdGlvbi5sb2dpY29wZXJhdG9yO1xyXG5cclxuICAgIHZhciBjaGFuZ2VJbk9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcclxuICAgICAgaWYgKGNvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvciA9PSBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUuT1IpeyBjaGFuZ2VJbk9yID0gdHJ1ZTsgfVxyXG4gICAgICBpZiAoY2hhbmdlSW5Pcil7IGNvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvciA9IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZS5PUjsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRDb25kaXRpb24oKXtcclxuICAgIHZhciB0cmlnZ2VyQ29uZGl0aW9uID0gbmV3IFRyaWdnZXJDb25kaXRpb24oKTtcclxuICAgIHRyaWdnZXJDb25kaXRpb24uRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLnJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgIHRyaWdnZXJDb25kaXRpb24ubG9naWNvcGVyYXRvciA9IG51bGw7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLmJvb2xlYW5sb2dpY29wZXJhdG9yID0gbnVsbDtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLnB1c2godHJpZ2dlckNvbmRpdGlvbik7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb25kaXRpb24oZWxlbWVudDogVHJpZ2dlckNvbmRpdGlvbil7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5maW5kSW5kZXgoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgfVxyXG5cclxuICBvbkZpZWxkVHlwZUNoYW5nZShldjogQmFzZUZpZWxkLCBjb25kaXRpb246IFRyaWdnZXJDb25kaXRpb24pe1xyXG4gICAgY29uZGl0aW9uLkZpZWxkID0gZXY7XHJcbiAgICBjb25kaXRpb24ucmVjb3JkW2V2Lk5hbWVdID0gXCJcIjtcclxuICB9XHJcblxyXG4gIHNhdmVPckV4aXRGb3JtKGV4aXQ6IGJvb2xlYW4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLXJlY29yZCBzYXZlUmVjb3JkRXZlbnQnKVxyXG4gICAgaWYgKGV4aXQpIHtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHJpZ2dlci5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy50cmlnZ2VyLmZvcm11bGFzID0ge307IH1cclxuICAgICAgICB0aGlzLnRyaWdnZXIuZm9ybXVsYXNbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQ7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdCh0aGlzLnRyaWdnZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VGb3JtdWxhKGZvcm11bGE6IGFueSl7XHJcbiAgICBcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBzZWxlY3RlZCBmb3JtdWxhJyxmb3JtdWxhKVxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIGZvcm11bGFzJyx0aGlzLmZvcm11bGFzKVxyXG5cclxuICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICAvLy0tLS0tLS0tLS0tLVxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XHJcbiAgICAgICAgXCJrZXlcIjogcmVzLCBcclxuICAgICAgICBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlLCBcclxuICAgICAgICBcInRvb2x0aXBcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50b29sdGlwLFxyXG4gICAgICAgIFwidmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10udmFsdWUsXHJcbiAgICAgICAgLyoqIHBlciB2YWxvcmkgdmluY29sYXRpIGEgbGlzdGUgKi9cclxuICAgICAgICBcInNlbGVjdGVkQWxsb3dlZFZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnNlbGVjdGVkQWxsb3dlZFZhbHVlLFxyXG4gICAgICAgIFwiYWxsb3dlZFZhbHVlc1wiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS5hbGxvd2VkVmFsdWVzXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7ICBcclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICAvKiAqKiogb3JpZ2luYWxlICoqKlxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzLCBcInR5cGVcIjogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS50eXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICAqKiogKi9cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ0BAdHJpZ2dlci1jcmVhdG9yOm9uQ2hhbmdlRm9ybXVsYSBmb3JtdWxhRmllbGRzU3RydWN0dXJlJyx0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpXHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZDogYW55KXtcclxuICB9XHJcblxyXG5cclxuICAvKiogYXppb25pIHN1bGxhIHNlbGV6aW9uZSBuZWwgY2FzbyBkaSBEUk9QRE9XTl9MSVNUKi9cclxuICBvbkRyb3BEb3duU2VsZWN0aW9uKHNlbGVjdGVkQWxsb3dlZFZhbHVlLGZvcm11bGFGaWVsZCl7XHJcbiAgICBcclxuICAgIC8vY29uc29sZS5sb2coXCJAQCBvbkRyb3BEb3duU2VsZWN0aW9uIGZvcm11bGFzXCIsdGhpcy5mb3JtdWxhcyk7IC8vIGxpc3RhIGRpIHR1dHRpIGkgdHJpZ2dlclxyXG4gICAgLy9jb25zb2xlLmxvZyhcIkBAIG9uRHJvcERvd25TZWxlY3Rpb24gZm9ybXVsYUZpZWxkXCIsZm9ybXVsYUZpZWxkKTtcclxuICAgIC8vY29uc29sZS5sb2coXCJAQCBvbkRyb3BEb3duU2VsZWN0aW9uIHNlbGVjdGVkQWxsb3dlZFZhbHVlXCIsc2VsZWN0ZWRBbGxvd2VkVmFsdWUpOyBcclxuICAgIC8vY29uc29sZS5sb2coXCJAQCBlbmQgdGhpcy50aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgXCIsdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlICk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZDogYW55KSB7XHJcbiAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSkudmFsdWUsXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm0uRmllbGRzXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciBmb3JtdWxhVG9DaGFuZ2UgPSB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IGZvcm11bGFGaWVsZC5rZXkpO1xyXG4gICAgICBmb3JtdWxhVG9DaGFuZ2UudmFsdWUgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5vbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhVG9DaGFuZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCl7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKXtcclxuICAgICAgICAgICAgcmVzLm9iamVjdCA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguSUQgPT0gcmVzLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTsgICAgXHJcbiAgfVxyXG4gIFxyXG4gIG9uRXFwU2VsZWN0TW9kdWxlKGV2LCBmb3JtdWxhRmllbGQpe1xyXG4gICAgaWYgKGV2ICE9IG51bGwpe1xyXG4gICAgICBmb3JtdWxhRmllbGQudmFsdWUgPSBldi5JRDsgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtdWxhRmllbGQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiXHJcbjxtYXQtY2FyZCBjbGFzcz1cImFkZC1mb3JtLWZpZWxkXCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cclxuICAgICAgICAgICAge3t0cmlnZ2VyICE9IG51bGwgPyBcIk1vZGlmaWNhXCIgOiBcIkFnZ2l1bmdpXCJ9fSB0cmlnZ2VyXHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgY29udGFpbmVyQ29udGVudCBwYWRkZXJcIiAqbmdJZj1cInRyaWdnZXIuY29uZGl0aW9ucyAhPSBudWxsXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+RGVzY3JpemlvbmUgVHJpZ2dlcjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4gRGVzY3JpemlvbmUgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwidHJpZ2dlci5kZXNjcmlwdGlvblwiIFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+VGlwbyBUcmlnZ2VyPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtdWxhS2V5c1wiIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidrZXknXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRm9ybXVsYSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGZvcm11bGFGaWVsZCBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7Zm9ybXVsYUZpZWxkLmtleX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5TVFJJTkdcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsICBjbGFzcz1cInB0LTFcIj4ge3tmb3JtdWxhRmllbGQua2V5fX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW21hdFRvb2x0aXBdPVwiZm9ybXVsYUZpZWxkLnRvb2x0aXBcIiAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkKVwiIFsobmdNb2RlbCldPVwiZm9ybXVsYUZpZWxkLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5ETU1PRFVMRVwiPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgbW9kdWxvJ1wiIFthcnJheURhdGFdPVwiZm9ybXNcIiBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybXVsYUZpZWxkLm9iamVjdFwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInSUQnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRXFwU2VsZWN0TW9kdWxlKCRldmVudCwgZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gY2FtcGkgY29uIHZhbG9yaSB2aW5jb2xhdGkgbGkgbW9zdHJvIGluIHVuYSBzZWxlY3QtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJmb3JtdWxhRmllbGQudHlwZSA9PSB0cmlnZ2VyUHJvcGVydHlUeXBlLkRST1BET1dOX0xJU1RcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgdmFsb3JlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FycmF5RGF0YV09XCJmb3JtdWxhRmllbGQuYWxsb3dlZFZhbHVlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRyb3BEb3duU2VsZWN0aW9uKCRldmVudCxmb3JtdWxhRmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybXVsYUZpZWxkLnNlbGVjdGVkQWxsb3dlZFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlcXAtZm9ybS1maWVsZCBlcXAtY29sb3VyZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZENvbmRpdGlvbigpXCI+QWdnaXVuZ2kgY29uZGl6aW9uZTwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFkZGVyXCIgKm5nRm9yPVwibGV0IGNvbmRpdGlvbiBvZiB0cmlnZ2VyLmNvbmRpdGlvbnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY29uZGl0aW9uLkZpZWxkICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMVwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiPjxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlQ29uZGl0aW9uKGNvbmRpdGlvbilcIj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtLkZpZWxkc1wiIFsobmdNb2RlbElucHV0KV09XCJjb25kaXRpb24uRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWVsZFR5cGVDaGFuZ2UoJGV2ZW50LCBjb25kaXRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCIgKm5nSWY9XCJjb25kaXRpb24uRmllbGQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeW5hbWljLW1vZHVsZS10cmlnZ2VyLWZpeCAjZmllbGRUZW1wbGF0ZSBbY29uZGl0aW9uXT1cImNvbmRpdGlvblwiIFtmb3JtXT1cImZvcm1cIiAodHJpZ2dlckNoYW5nZSk9XCJvblRyaWdnZXJDaGFuZ2UoJGV2ZW50LCBjb25kaXRpb24pXCI+PC9keW5hbWljLW1vZHVsZS10cmlnZ2VyLWZpeD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWZvb3Rlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMiBtYi0xIG1lLTNcIj4gXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybSh0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybShmYWxzZSlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2F2aW5nXCI+U2FsdmE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCI+U2FsdmF0YWdnaW8gaW4gQ29yc28uLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcblxyXG48L21hdC1jYXJkPlxyXG5cclxuPCEtLURJQUxPRyBQRVIgU0VNUExJRklDQVJFIExBIFNDUklUVFVSQSBERUwgQ0FNUE8gRk9STVVMQS0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0Zvcm11bGE+XHJcbiAgICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuICAgIDwvZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBYSxRQUFRLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEosT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxPQUFPLEVBQXNCLGFBQWEsRUFBeUIsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBU3ZILE1BQU0sT0FBTyx1QkFBdUI7SUFzQmxDLFlBQW9CLE1BQWlCLEVBQVUsb0JBQTBDO1FBQXJFLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBbkJ2RSxZQUFPLEdBQVksSUFBSSxDQUFDO1FB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dCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZSwgQ29uZGl0aW9uLCBLZXlWYWx1ZSwgVHJpZ2dlciwgVHJpZ2dlckNvbmRpdGlvbiwgVHJpZ2dlclByb3BlcnR5VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJpZ2dlci5tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGlja2VyTW9kZUVudW0gfSBmcm9tICdAZXFwcm9qZWN0L2VxcC1kYXRldGltZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtLCBFbmRQb2ludENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RyaWdnZXItY3JlYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyaWdnZXItY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyaWdnZXJDcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcInRyaWdnZXJcIikgdHJpZ2dlcjogVHJpZ2dlciA9IG51bGw7XHJcbiAgQElucHV0KFwiZm9ybXVsYXNcIikgZm9ybXVsYXM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KFwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG5cclxuICBAT3V0cHV0KCkgb25TYXZlUmVjb3JkOiBFdmVudEVtaXR0ZXI8VHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyaWdnZXI+KCk7XHJcblxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRGb3JtdWxhOiBhbnk7XHJcbiAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmU6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIHBpY2tlck1vZGVFbnVtID0gUGlja2VyTW9kZUVudW07XHJcbiAgdHJpZ2dlclByb3BlcnR5VHlwZSA9IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtO1xyXG5cclxuICBkaWFsb2dGb3JtdWxhUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgZm9ybXM6IEFycmF5PEZvcm0+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZSl7fVxyXG4gIFxyXG4gIG5nT25Jbml0KCl7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMudHJpZ2dlciA9IG5ldyBUcmlnZ2VyKCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zID0gbmV3IEFycmF5PFRyaWdnZXJDb25kaXRpb24+KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYSA9IHt9O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLnRyaWdnZXIuZXhlY3V0aW9uO1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XHJcbiAgICAgICAgICBcImtleVwiOiByZXMsIFxyXG4gICAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnR5cGUsIFxyXG4gICAgICAgICAgXCJ0b29sdGlwXCI6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnRvb2x0aXAsXHJcbiAgICAgICAgICBcInZhbHVlXCIgOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS52YWx1ZSxcclxuICAgICAgICAgIFwic2VsZWN0ZWRBbGxvd2VkVmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5XVtyZXNdLnNlbGVjdGVkQWxsb3dlZFZhbHVlLFxyXG4gICAgICAgICAgXCJhbGxvd2VkVmFsdWVzXCIgOiB0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV1bcmVzXS5hbGxvd2VkVmFsdWVzXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgT2JqZWN0LmtleXModGhpcy50cmlnZ2VyLmZvcm11bGFzKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICBcclxuICAgICAgICAvKipxdWkgZGV2b25vIGVzc2VyZSBtZXNzaSBpIGNhbXBpIGNvbiB2YWxvcmkgZGEgdmlzdWFsaXp6YXJlIG5laSBjYW1waSBkZW50cm8gaWwgcG9wdXBcclxuICAgICAgICAgKiAoPykgYWx0cmltZW50aSBzZSBzaSBlbnRyYSBpbiBtb2RpZmljYSBub24gc2kgdmVkb25vIGFuY2hlIHNlIHByZXNlbnRpICovXHJcblxyXG4gICAgICAgIGNvbnN0IG15Rm9ybXVsYSA9IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKCh4KSA9PiB4LmtleSA9PSByZXMpO1xyXG4gICAgICAgIG15Rm9ybXVsYS52YWx1ZSA9IHRoaXMudHJpZ2dlci5mb3JtdWxhc1tyZXNdLnZhbHVlOyAvLyBpbml6aWFsaXp6byB2YWxvcmUgYWxsbyBzdGVzc28gbW9kbyBwZXIgdHV0dGkgaSB0cmlnZ2VyXHJcblxyXG4gICAgICAgIGlmIChteUZvcm11bGEudHlwZSA9PSB0aGlzLnRyaWdnZXJQcm9wZXJ0eVR5cGUuRFJPUERPV05fTElTVCkge1xyXG5cclxuICAgICAgICB0aGlzLnN0cmluZ1RvRHJvcERvd25IYW5kbGVyKG15Rm9ybXVsYSx0aGlzLnRyaWdnZXIuZm9ybXVsYXNbcmVzXSk7XHJcbiAgICAgICAgLy8gc2Ugc2kgdG9nbGllIGwnaGFuZGxlciBhZ2dpdW5nZXJlXHJcbiAgICAgICAgLy8gbXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gdGhpcy50cmlnZ2VyLmZvcm11bGFzW3Jlc10uc2VsZWN0ZWRBbGxvd2VkVmFsdWU7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgICk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHZhciBleGVjdXRlR2V0TW9kdWxlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhcykuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUtleXMucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbcmVzXSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtdWxhc1tyZXNdW3Byb3BlcnR5XS50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKXtcclxuICAgICAgICAgIGV4ZWN1dGVHZXRNb2R1bGVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGV4ZWN1dGVHZXRNb2R1bGVzKXtcclxuICAgICAgdGhpcy5nZXRBbGxNb2R1bGVzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCIsdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlKVxyXG5cclxuICB9XHJcblxyXG4gIG9uVHJpZ2dlckNoYW5nZShvdXRwdXRDb25kaXRpb246IENvbmRpdGlvbiwgVHJpZ2dlckNvbmRpdGlvbjogVHJpZ2dlckNvbmRpdGlvbil7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5maW5kKHggPT4geC5DSUQgPT0gVHJpZ2dlckNvbmRpdGlvbi5DSUQpLmJvb2xlYW5sb2dpY29wZXJhdG9yID0gb3V0cHV0Q29uZGl0aW9uLmJvb2xlYW5sb2dpY29wZXJhdG9yO1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuZmluZCh4ID0+IHguQ0lEID09IFRyaWdnZXJDb25kaXRpb24uQ0lEKS5sb2dpY29wZXJhdG9yID0gb3V0cHV0Q29uZGl0aW9uLmxvZ2ljb3BlcmF0b3I7XHJcblxyXG4gICAgdmFyIGNoYW5nZUluT3IgPSBmYWxzZTtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLmZvckVhY2goKGNvbmRpdGlvbikgPT4ge1xyXG4gICAgICBpZiAoY29uZGl0aW9uLmJvb2xlYW5sb2dpY29wZXJhdG9yID09IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZS5PUil7IGNoYW5nZUluT3IgPSB0cnVlOyB9XHJcbiAgICAgIGlmIChjaGFuZ2VJbk9yKXsgY29uZGl0aW9uLmJvb2xlYW5sb2dpY29wZXJhdG9yID0gQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlLk9SOyB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZENvbmRpdGlvbigpe1xyXG4gICAgdmFyIHRyaWdnZXJDb25kaXRpb24gPSBuZXcgVHJpZ2dlckNvbmRpdGlvbigpO1xyXG4gICAgdHJpZ2dlckNvbmRpdGlvbi5GaWVsZCA9IG5ldyBCYXNlRmllbGQoKTtcclxuICAgIHRyaWdnZXJDb25kaXRpb24ucmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgdHJpZ2dlckNvbmRpdGlvbi5sb2dpY29wZXJhdG9yID0gbnVsbDtcclxuICAgIHRyaWdnZXJDb25kaXRpb24uYm9vbGVhbmxvZ2ljb3BlcmF0b3IgPSBudWxsO1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMucHVzaCh0cmlnZ2VyQ29uZGl0aW9uKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbmRpdGlvbihlbGVtZW50OiBUcmlnZ2VyQ29uZGl0aW9uKXtcclxuICAgIHZhciBpbmRleCA9IHRoaXMudHJpZ2dlci5jb25kaXRpb25zLmZpbmRJbmRleCh4ID0+IHguQ0lEID09IGVsZW1lbnQuQ0lEKTtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLnNwbGljZShpbmRleCwxKTtcclxuICB9XHJcblxyXG4gIG9uRmllbGRUeXBlQ2hhbmdlKGV2OiBCYXNlRmllbGQsIGNvbmRpdGlvbjogVHJpZ2dlckNvbmRpdGlvbil7XHJcbiAgICBjb25kaXRpb24uRmllbGQgPSBldjtcclxuICAgIGNvbmRpdGlvbi5yZWNvcmRbZXYuTmFtZV0gPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgc2F2ZU9yRXhpdEZvcm0oZXhpdDogYm9vbGVhbikge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnYWRkLWZvcm0tcmVjb3JkIHNhdmVSZWNvcmRFdmVudCcpXHJcbiAgICBpZiAoZXhpdCkge1xyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZC5lbWl0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZvckVhY2goKGZvcm11bGFGaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50cmlnZ2VyLmZvcm11bGFzID09IFwidW5kZWZpbmVkXCIpeyB0aGlzLnRyaWdnZXIuZm9ybXVsYXMgPSB7fTsgfVxyXG4gICAgICAgIHRoaXMudHJpZ2dlci5mb3JtdWxhc1tmb3JtdWxhRmllbGQua2V5XSA9IGZvcm11bGFGaWVsZDtcclxuICAgICAgICB0aGlzLnRyaWdnZXIuZXhlY3V0aW9uID0gdGhpcy5zZWxlY3RlZEZvcm11bGEua2V5O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZC5lbWl0KHRoaXMudHJpZ2dlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUZvcm11bGEoZm9ybXVsYTogYW55KXtcclxuICAgIFxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIHNlbGVjdGVkIGZvcm11bGEnLGZvcm11bGEpXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdAQHRyaWdnZXItY3JlYXRvcjpvbkNoYW5nZUZvcm11bGEgZm9ybXVsYXMnLHRoaXMuZm9ybXVsYXMpXHJcblxyXG4gICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgIC8vLS0tLS0tLS0tLS0tXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XSkuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcclxuICAgICAgICBcImtleVwiOiByZXMsIFxyXG4gICAgICAgIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnR5cGUsIFxyXG4gICAgICAgIFwidG9vbHRpcFwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnRvb2x0aXAsXHJcbiAgICAgICAgXCJ2YWx1ZVwiIDogdGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV1bcmVzXS52YWx1ZSxcclxuICAgICAgICAvKiogcGVyIHZhbG9yaSB2aW5jb2xhdGkgYSBsaXN0ZSAqL1xyXG4gICAgICAgIFwic2VsZWN0ZWRBbGxvd2VkVmFsdWVcIiA6IHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldW3Jlc10uc2VsZWN0ZWRBbGxvd2VkVmFsdWUsXHJcbiAgICAgICAgXCJhbGxvd2VkVmFsdWVzXCIgOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLmFsbG93ZWRWYWx1ZXNcclxuICAgICAgfSk7XHJcbiAgICB9KTsgIFxyXG4gICAgLy8tLS0tLS0tLS0tLS1cclxuICAgIC8qICoqKiBvcmlnaW5hbGUgKioqXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XSkuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcImtleVwiOiByZXMsIFwidHlwZVwiOiB0aGlzLmZvcm11bGFzW2Zvcm11bGEua2V5XVtyZXNdLnR5cGVcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgICoqKiAqL1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnQEB0cmlnZ2VyLWNyZWF0b3I6b25DaGFuZ2VGb3JtdWxhIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUnLHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSlcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgb25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkOiBhbnkpe1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKiBhemlvbmkgc3VsbGEgc2VsZXppb25lIG5lbCBjYXNvIGRpIERST1BET1dOX0xJU1QqL1xyXG4gIG9uRHJvcERvd25TZWxlY3Rpb24oc2VsZWN0ZWRBbGxvd2VkVmFsdWUsZm9ybXVsYUZpZWxkKXtcclxuICAgIFxyXG4gICAgLy9jb25zb2xlLmxvZyhcIkBAIG9uRHJvcERvd25TZWxlY3Rpb24gZm9ybXVsYXNcIix0aGlzLmZvcm11bGFzKTsgLy8gbGlzdGEgZGkgdHV0dGkgaSB0cmlnZ2VyXHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQEAgb25Ecm9wRG93blNlbGVjdGlvbiBmb3JtdWxhRmllbGRcIixmb3JtdWxhRmllbGQpO1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIkBAIG9uRHJvcERvd25TZWxlY3Rpb24gc2VsZWN0ZWRBbGxvd2VkVmFsdWVcIixzZWxlY3RlZEFsbG93ZWRWYWx1ZSk7IFxyXG4gICAgLy9jb25zb2xlLmxvZyhcIkBAIGVuZCB0aGlzLnRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZSBcIix0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSBmb3JtdWxhRmllbGQua2V5KS52YWx1ZSxcclxuICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybS5GaWVsZHNcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIGZvcm11bGFUb0NoYW5nZSA9IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSk7XHJcbiAgICAgIGZvcm11bGFUb0NoYW5nZS52YWx1ZSA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFUb0NoYW5nZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFsbE1vZHVsZXMoKXtcclxuXHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJvcmdhaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk9yZ2FJRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRBbGxGb3JtRW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IEFycmF5PEZvcm0+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHJlcztcclxuICAgICAgICB0aGlzLmZvcm1zID0gdGhpcy5mb3Jtcy5zb3J0KCh1bm8sIGR1ZSkgPT4gdW5vLk5hbWUubG9jYWxlQ29tcGFyZShkdWUuTmFtZSkpO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRE1NT0RVTEUpe1xyXG4gICAgICAgICAgICByZXMub2JqZWN0ID0gdGhpcy5mb3Jtcy5maW5kKHggPT4geC5JRCA9PSByZXMudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4geyB9XHJcbiAgICApOyAgICBcclxuICB9XHJcbiAgXHJcbiAgb25FcXBTZWxlY3RNb2R1bGUoZXYsIGZvcm11bGFGaWVsZCl7XHJcbiAgICBpZiAoZXYgIT0gbnVsbCl7XHJcbiAgICAgIGZvcm11bGFGaWVsZC52YWx1ZSA9IGV2LklEOyAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm11bGFGaWVsZC52YWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIGFkYXR0YSBsYSBjb21wYXRpYmlsaXTDoCBkaSBwcm9wcmlldMOgIGRpIHRpcG8gZHJvcGRvd24gZGljaGlhcmF0ZSBuZWwgY29uZmlndXJhdG9yIG1hIGNyZWF0ZSBpbiBwcmVjZWRlbnphIGNvbWUgc3RyaW5nXHJcbiAqIG5lbCBjYXNvIGRpIG15Rm9ybXVsYS52YWx1ZSBub24gcHJlc2VudGkgbmVnbGkgYWxsb3dlZFZhbHVlcyBxdWVzdGUgc2FyYW5ubyBhZ2dpdW50ZSBjb21lIHNlbGV6aW9uaSB0ZW1wb3JhbmVlIGZpbm8gYSBxdWFuZG8gbW9kaWZpY2F0ZSBjb24gdW5hIHNjZWx0YSBhbW1pc3NpYmlsZVxyXG4gKiBAcGFyYW0gbXlGb3JtdWxhICAgICAgICAgZWxlbSBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXHJcbiAqIEBwYXJhbSB0cmlnZ2VyRm9ybXVsYSAgICB0aGlzLnRyaWdnZXIuZm9ybXVsYXNbcmVzXSBcclxuICovXHJcbiAgc3RyaW5nVG9Ecm9wRG93bkhhbmRsZXIobXlGb3JtdWxhOmFueSx0cmlnZ2VyRm9ybXVsYTphbnkpe1xyXG5cclxuICAgIC8vIDEuIHNlIMOoIHVuYSBkcm9wZG93biBwYXJ0b25vIGkgY29udHJvbGxpIGRpIGNvbXBhdGliaWxpdMOgXHJcbiAgICBpZiAobXlGb3JtdWxhLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRFJPUERPV05fTElTVCkge1xyXG4gICAgICBcclxuICAgICAgLy8gaW5pemlhbGl6em8gZ2xpIGFsbG93ZWRWYWx1ZXMgc2Ugbm9uIGVzaXN0b25vXHJcbiAgICAgIGlmICghbXlGb3JtdWxhLmFsbG93ZWRWYWx1ZXMpIHtcclxuICAgICAgICBteUZvcm11bGEuYWxsb3dlZFZhbHVlcyA9IG5ldyBBcnJheTxLZXlWYWx1ZT4oKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIC8vIHBlciBpbCBjb250cm9sbG8gc3VpIHZhbG9yaSBkaWNoaWFyYXRpIGluIHByZWNlZGVuemEgY29tZSBzdHJpbmcgZGV2byBlc2NsdWRlcmUgZ2xpIGFwaWNpXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2xlYW5WYWx1ZSA9ICBuZXcgS2V5VmFsdWUoKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIG15Rm9ybXVsYS52YWx1ZSAhPSBudWxsICYmXHJcbiAgICAgICAgKChteUZvcm11bGEudmFsdWUuc3RhcnRzV2l0aChcIidcIikgJiZcclxuICAgICAgICAgIG15Rm9ybXVsYS52YWx1ZS5lbmRzV2l0aChcIidcIikpIHx8XHJcbiAgICAgICAgICAobXlGb3JtdWxhLnZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiZcclxuICAgICAgICAgICAgbXlGb3JtdWxhLnZhbHVlLmVuZHNXaXRoKCdcIicpKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2VsZWN0ZWRDbGVhblZhbHVlLmtleSA9IHNlbGVjdGVkQ2xlYW5WYWx1ZS52YWx1ZSA9IG15Rm9ybXVsYS52YWx1ZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgIH0gZWxzZSBpZihteUZvcm11bGEudmFsdWUgIT0gbnVsbCl7XHJcbiAgICAgICAgc2VsZWN0ZWRDbGVhblZhbHVlLmtleSA9IHNlbGVjdGVkQ2xlYW5WYWx1ZS52YWx1ZSA9IG15Rm9ybXVsYS52YWx1ZTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICAvLyB0cnVlIHNlIGVzaXN0ZSB1bmEgY29ycmlzcG9uZGVuemEgZGkgdmFsdWUgaW4gYWxsb3dlZFZhbHVlc1xyXG4gICAgICBjb25zdCBpc1ZhbHVlSW5BbGxvd2VkID0gc2VsZWN0ZWRDbGVhblZhbHVlICE9IG51bGwgJiYgbXlGb3JtdWxhLmFsbG93ZWRWYWx1ZXMuc29tZShpdGVtID0+IGl0ZW0ua2V5ID09PSBzZWxlY3RlZENsZWFuVmFsdWUua2V5KTtcclxuICBcclxuICAgICAgLyppZiAobXlGb3JtdWxhLmtleSA9PSBcImRlc3RpbmF0YXJpb190cmlnZ2VyXCIpIHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQEAgLW91dCBjeWNsZS0gbXlGb3JtdWxhLnZhbHVlXCIsbXlGb3JtdWxhKTtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQEAgLW91dCBjeWNsZS0gIG15Rm9ybXVsYT8uc2VsZWN0ZWRBbGxvd2VkVmFsdWU/LmtleSAhPSBteUZvcm11bGEudmFsdWVcIixteUZvcm11bGE/LnNlbGVjdGVkQWxsb3dlZFZhbHVlPy5rZXkgIT0gc2VsZWN0ZWRDbGVhblZhbHVlKTtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQEAgLW91dCBjeWNsZS0gIGlzU2VsZWN0ZWRcIixzZWxlY3RlZENsZWFuVmFsdWUpO1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCAtb3V0IGN5Y2xlLSAgaXNWYWx1ZUluQWxsb3dlZFwiLGlzVmFsdWVJbkFsbG93ZWQpO1xyXG4gICAgICB9Ki9cclxuICBcclxuICAgICAgLy8gbmVsbGUgZHJvcGRvd24gdmFsdWUgw6ggbnVsbG8sIHNlIG5vbiBsbyDDqCBzaWduaWZpY2EgY2hlIGxhIHByb3ByaWV0w6AgaW4gcHJlY2VkZW56YSDDqCBzdGF0YSBkaWNoaWFyYXRhIGRpdmVyc2EgZGEgZHJvcGRvd25cclxuICAgICAgaWYgKG15Rm9ybXVsYS52YWx1ZSAhPW51bGwpIHtcclxuICBcclxuICAgICAgICAvLyBzZSB2YWx1ZSDDqCBwcmVzZW50ZSBuZWxsYSBsaXN0YSBkZWkgdmFsb3JpIGFtbWVzc2kgaW1wb3N0byBpbCBjb3JyaXNwb25kZW50ZSBjb21lIHNlbGV6aW9uYXRvIGUgc3Z1b3RvIHZhbHVlIHBlcmNow6kgZ2VzdGl0byBkYSBzZWxlY3RlZEFsbG93ZWRWYWx1ZVxyXG4gICAgICAgIGlmIChpc1ZhbHVlSW5BbGxvd2VkKSB7XHJcbiAgXHJcbiAgICAgICAgICBteUZvcm11bGEuc2VsZWN0ZWRBbGxvd2VkVmFsdWUgPSBzZWxlY3RlZENsZWFuVmFsdWU7XHJcbiAgICAgICAgICBteUZvcm11bGEudmFsdWUgPSBudWxsOyBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gc2Ugbm9uIMOoIHN0YXRvIHRyb3ZhdG8gdW4gZWxlbWVudG8gY29tcGF0aWJpbGUgY29uIHZhbHVlIG5lZ2xpIGFsbG93ZWQsIGNyZW8gdW4gbnVvdm8gZWxlbWVudG8gbmVsbGEgbGlzdGEgZSBsbyBzZWxlemlvbm9cclxuICBcclxuICAgICAgICAgIG15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzLnB1c2goc2VsZWN0ZWRDbGVhblZhbHVlKTtcclxuICAgICAgICAgIG15Rm9ybXVsYS5zZWxlY3RlZEFsbG93ZWRWYWx1ZSA9IHNlbGVjdGVkQ2xlYW5WYWx1ZTtcclxuICAgICAgICAgIG15Rm9ybXVsYS52YWx1ZSA9IG51bGw7XHJcbiAgXHJcbiAgICAgICAgICAvKmlmIChteUZvcm11bGEua2V5ID09IFwiZGVzdGluYXRhcmlvX3RyaWdnZXJcIikge1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkBAIGlsIHNlbGVjdGVkIG5vbiDDqCBkaXNwb25pYmlsZSBuZWkgcHJlZGlzcG9zdGkgYWxsb3dlZFZhbHVlc1wiLG15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzKTtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBpbCBzZWxlY3RlZCBub24gw6ggZGlzcG9uaWJpbGUgbmVpIHByZWRpc3Bvc3RpIHNlbGVjdGVkQWxsb3dlZFZhbHVlXCIsbXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlKTtcclxuICAgICAgICAgIH0qL1xyXG4gIFxyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgICAgZWxzZSB7IFxyXG4gICAgICAgIFxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgaWYgKG15Rm9ybXVsYS5rZXkgPT0gXCJkZXN0aW5hdGFyaW9fdHJpZ2dlclwiKSB7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkBAIGRlZmF1bHQ6IG15IGZvcm11bGFcIixteUZvcm11bGEpO1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBkZWZhdWx0OiB0aGlzLnRyaWdnZXIuZm9ybXVsYXNbcmVzXVwiLHRoaXMudHJpZ2dlci5mb3JtdWxhc1tyZXNdKTtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQEAgZGVmYXVsdDogw6ggcmVzZW50ZT8gaW4gYWxsb3dlZFZhbHVlcz9cIiwgbXlGb3JtdWxhLmFsbG93ZWRWYWx1ZXMuc29tZShpdGVtID0+IGl0ZW0ua2V5ID09IG15Rm9ybXVsYS5zZWxlY3RlZEFsbG93ZWRWYWx1ZS5rZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgKi9cclxuICBcclxuICAgICAgICAvLyBDb21wb3J0YW1lbnRvIGRpIGRlZmF1bHQ6IHNlIG15Rm9ybXVsYS52YWx1ZSA9PW51bGwgdmVyaWZpY28gY2hlIGlsIHNlbGVjdGVkIMOoIHByZXNlbnRlIG5lbGxhIGxpc3RhIGRlZ2xpIGFsbG93ZWQ7IGluIGNhc28gbmVnYXRpdm8gbG8gYWdnaXVuZ29cclxuICAgICAgICBteUZvcm11bGEuc2VsZWN0ZWRBbGxvd2VkVmFsdWUgPSB0cmlnZ2VyRm9ybXVsYS5zZWxlY3RlZEFsbG93ZWRWYWx1ZTsgLy8gYWdnaW9ybm8gbGEgc2VsZXppb25lIGNvcnJlbnRlXHJcbiAgXHJcbiAgICAgICAgaWYoIW15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzLnNvbWUoaXRlbSA9PiBpdGVtLmtleSA9PSBteUZvcm11bGEuc2VsZWN0ZWRBbGxvd2VkVmFsdWUua2V5KSl7XHJcbiAgICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJAQCBkZWZhdWx0OiBteSBmb3JtdWxhXCIsbXlGb3JtdWxhKTtcclxuICAgICAgICAgIG15Rm9ybXVsYS5hbGxvd2VkVmFsdWVzLnB1c2gobXlGb3JtdWxhLnNlbGVjdGVkQWxsb3dlZFZhbHVlKTtcclxuICBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICBcclxuICBcclxuICAgIH0gXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgICB9XHJcblxyXG59XHJcbiIsIlxyXG48bWF0LWNhcmQgY2xhc3M9XCJhZGQtZm9ybS1maWVsZFwiPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgICAgIHt7dHJpZ2dlciAhPSBudWxsID8gXCJNb2RpZmljYVwiIDogXCJBZ2dpdW5naVwifX0gdHJpZ2dlclxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGNvbnRhaW5lckNvbnRlbnQgcGFkZGVyXCIgKm5nSWY9XCJ0cmlnZ2VyLmNvbmRpdGlvbnMgIT0gbnVsbFwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkRlc2NyaXppb25lIFRyaWdnZXI8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IERlc2NyaXppb25lIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInRyaWdnZXIuZGVzY3JpcHRpb25cIiBbcmVhZG9ubHldPVwiZmFsc2VcIiBbcmVxdWlyZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlRpcG8gVHJpZ2dlcjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZm9ybXVsYUtleXNcIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRGb3JtdWxhXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIna2V5J1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZUZvcm11bGEoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBmb3JtdWxhRmllbGQgb2YgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57e2Zvcm11bGFGaWVsZC5rZXl9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImZvcm11bGFGaWVsZC50eXBlID09IHRyaWdnZXJQcm9wZXJ0eVR5cGUuU1RSSU5HXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IHt7Zm9ybXVsYUZpZWxkLmtleX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiIFttYXRUb29sdGlwXT1cImZvcm11bGFGaWVsZC50b29sdGlwXCIgKGNsaWNrKT1cIm9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZClcIiBbKG5nTW9kZWwpXT1cImZvcm11bGFGaWVsZC52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZClcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImZvcm11bGFGaWVsZC50eXBlID09IHRyaWdnZXJQcm9wZXJ0eVR5cGUuRE1NT0RVTEVcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIG1vZHVsbydcIiBbYXJyYXlEYXRhXT1cImZvcm1zXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm11bGFGaWVsZC5vYmplY3RcIiBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ0lEJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCIgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkVxcFNlbGVjdE1vZHVsZSgkZXZlbnQsIGZvcm11bGFGaWVsZClcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGNhbXBpIGNvbiB2YWxvcmkgdmluY29sYXRpIGxpIG1vc3RybyBpbiB1bmEgc2VsZWN0LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiZm9ybXVsYUZpZWxkLnR5cGUgPT0gdHJpZ2dlclByb3BlcnR5VHlwZS5EUk9QRE9XTl9MSVNUXCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIHZhbG9yZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcnJheURhdGFdPVwiZm9ybXVsYUZpZWxkLmFsbG93ZWRWYWx1ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Ecm9wRG93blNlbGVjdGlvbigkZXZlbnQsZm9ybXVsYUZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZvcm11bGFGaWVsZC5zZWxlY3RlZEFsbG93ZWRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXFwLWZvcm0tZmllbGQgZXFwLWNvbG91cmVkXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJhZGRDb25kaXRpb24oKVwiPkFnZ2l1bmdpIGNvbmRpemlvbmU8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZGRlclwiICpuZ0Zvcj1cImxldCBjb25kaXRpb24gb2YgdHJpZ2dlci5jb25kaXRpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImNvbmRpdGlvbi5GaWVsZCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTFcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIj48bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZUNvbmRpdGlvbihjb25kaXRpb24pXCI+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZm9ybS5GaWVsZHNcIiBbKG5nTW9kZWxJbnB1dCldPVwiY29uZGl0aW9uLkZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInTmFtZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmllbGRUeXBlQ2hhbmdlKCRldmVudCwgY29uZGl0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiY29uZGl0aW9uLkZpZWxkICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHluYW1pYy1tb2R1bGUtdHJpZ2dlci1maXggI2ZpZWxkVGVtcGxhdGUgW2NvbmRpdGlvbl09XCJjb25kaXRpb25cIiBbZm9ybV09XCJmb3JtXCIgKHRyaWdnZXJDaGFuZ2UpPVwib25UcmlnZ2VyQ2hhbmdlKCRldmVudCwgY29uZGl0aW9uKVwiPjwvZHluYW1pYy1tb2R1bGUtdHJpZ2dlci1maXg+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTIgbWItMSBtZS0zXCI+IFxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMlwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0odHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc1NhdmluZ1wiPlNhbHZhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NhdmluZ1wiPlNhbHZhdGFnZ2lvIGluIENvcnNvLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG5cclxuPC9tYXQtY2FyZD5cclxuXHJcbjwhLS1ESUFMT0cgUEVSIFNFTVBMSUZJQ0FSRSBMQSBTQ1JJVFRVUkEgREVMIENBTVBPIEZPUk1VTEEtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dGb3JtdWxhPlxyXG4gICAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbiAgICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -101,4 +101,4 @@ export var DataGetterCardinalityEnum;
|
|
|
101
101
|
DataGetterCardinalityEnum[DataGetterCardinalityEnum["PIU RECENTE"] = 2] = "PIU RECENTE";
|
|
102
102
|
DataGetterCardinalityEnum[DataGetterCardinalityEnum["MENO RECENTE"] = 3] = "MENO RECENTE";
|
|
103
103
|
})(DataGetterCardinalityEnum || (DataGetterCardinalityEnum = {}));
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHMUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxPQUFPO0lBQXRDOztRQWtCSSxtRUFBbUU7UUFDbkUsZ0JBQVcsR0FBZ0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBZXZLLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBTWhDLGVBQVUsR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFDLGdDQUEyQixHQUFXLEVBQUUsQ0FBQztJQUc3QyxDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sV0FBVztDQU92QjtBQUFBLENBQUM7QUFFRixNQUFNLE9BQU8sVUFBVTtJQUF2QjtRQUNJLG1CQUFjLEdBQXVCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUNoRSxvQkFBZSxHQUFRLElBQUksQ0FBQztRQUM1QiwwQkFBcUIsR0FBUSxJQUFJLENBQUM7UUFDbEMsMEJBQXFCLEdBQThCLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsa0NBQWtDO1FBRS9ILDZCQUF3QixHQUFZLElBQUksQ0FBQyxDQUFDLHdCQUF3QjtJQUN0RSxDQUFDO0NBQUE7QUFFRCxNQUFNLENBQU4sSUFBWSxhQWVYO0FBZkQsV0FBWSxhQUFhO0lBQ3JCLHFFQUFvQixDQUFBO0lBQ3BCLG1FQUFtQixDQUFBO0lBQ25CLHlEQUFjLENBQUE7SUFDZCxpRUFBa0IsQ0FBQTtJQUNsQixxRUFBb0IsQ0FBQTtJQUNwQix5REFBYyxDQUFBO0lBQ2QseURBQWMsQ0FBQTtJQUNkLHVFQUFxQixDQUFBO0lBQ3JCLHFEQUFZLENBQUE7SUFDWiw0RUFBd0IsQ0FBQTtJQUN4Qix3RUFBc0IsQ0FBQTtJQUN0Qiw0REFBZ0IsQ0FBQTtJQUNoQixrRkFBMEIsQ0FBQTtJQUMxQixzRUFBcUIsQ0FBQTtBQUN6QixDQUFDLEVBZlcsYUFBYSxLQUFiLGFBQWEsUUFleEI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzFCLGlFQUFhLENBQUE7SUFDYixpRUFBYSxDQUFBO0lBQ2IseUVBQWlCLENBQUE7SUFDakIsdUZBQXdCLENBQUE7QUFDNUIsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0I7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkE4Q1g7QUE5Q0QsV0FBWSxnQkFBZ0I7SUFDeEIsK0RBQWMsQ0FBQTtJQUNkLCtEQUFjLENBQUE7SUFDZCwrREFBYyxDQUFBO0lBQ2QsaUVBQWUsQ0FBQTtJQUVmLCtEQUFjLENBQUE7SUFDZCwrREFBYyxDQUFBO0lBQ2QsK0RBQWMsQ0FBQTtJQUNkLGlFQUFlLENBQUE7SUFFZiwrREFBYyxDQUFBO0lBQ2QsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixrRUFBZ0IsQ0FBQTtJQUVoQixnRkFBdUIsQ0FBQTtJQUN2QixrRkFBd0IsQ0FBQTtJQUN4Qiw0RUFBcUIsQ0FBQTtJQUVyQixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixrRUFBZ0IsQ0FBQTtJQUNoQixrRUFBZ0IsQ0FBQTtJQUVoQixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixrRUFBZ0IsQ0FBQTtJQUNoQixrRUFBZ0IsQ0FBQTtJQUVoQixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixnRUFBZSxDQUFBO0lBQ2YsZ0VBQWUsQ0FBQTtJQUNmLGdFQUFlLENBQUE7SUFDZixrRUFBZ0IsQ0FBQTtJQUNoQixrRUFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBOUNXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUE4QzNCO0FBRUQsTUFBTSxDQUFOLElBQVkscUJBR1g7QUFIRCxXQUFZLHFCQUFxQjtJQUM3Qix5RUFBYyxDQUFBO0lBQ2QsNkdBQWdDLENBQUE7QUFDcEMsQ0FBQyxFQUhXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFHaEM7QUFFRCxNQUFNLENBQU4sSUFBWSx5QkFHVDtBQUhILFdBQVkseUJBQXlCO0lBQ2pDLHVGQUFpQixDQUFBO0lBQ2pCLHlGQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFIUyx5QkFBeUIsS0FBekIseUJBQXlCLFFBR2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmFzZU9iaiB9IGZyb20gJy4vYmFzZU9iai5tb2RlbCc7XHJcbmltcG9ydCB7IENvbnRlc3R1YWxpemF0aW9uIH0gZnJvbSAnLi9nZXR0ZXIubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIENvbnRpZW5lIGxlIGluZm9ybWF6aW9uaSBkaSBiYXNlIGRlbCBjYW1wbywgaW5kaXBlbmRlbnRlbWVudGUgZGFsIHRpcG8uXHJcbiAqIFF1ZXN0YSBjbGFzc2Ugw6ggdm9sdXRhbWVudGUgYXN0cmF0dGEgcGVyY2jDqSBpbCB0aXBvIGRpIGNhbXBvIMOoIGRldHRhdG8gZGFsIHRpcG9cclxuICovXHJcbmV4cG9ydCBjbGFzcyBCYXNlRmllbGQgZXh0ZW5kcyBCYXNlT2JqIHtcclxuICAgIC8qKlxyXG4gICAgICogTm9tZSBkZWwgY2FtcG8gY2hlIHBlciBwcm9nZXR0YXppb25lIMOoIHVuYSBzb3N0aXR1emlvbmUgZGVsbGEgbGFiZWxcclxuICAgICAqIElsIHZlcm8gaWRlbnRpZmljYXRpdm8gZGVsIGNhbXBvIMOoIGwnSURcclxuICAgICAqL1xyXG4gICAgTmFtZTogc3RyaW5nO1xyXG4gICAgTGFiZWw6IHN0cmluZztcclxuICAgIERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBSZXF1aXJlZDogYm9vbGVhbjtcclxuICAgIEZvcm11bGE6IHN0cmluZztcclxuICAgIFRvb2x0aXA6IHN0cmluZztcclxuICAgIE9yZGluYWxQb3NpdGlvbjogbnVtYmVyO1xyXG4gICAgRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBSZWFkb25seTogYm9vbGVhbjtcclxuICAgIFJlYWRvbmx5SWY6IHN0cmluZztcclxuICAgIEZpZWxkc3R5bGVDU1M6IHN0cmluZztcclxuICAgIExhYmVsc3R5bGVDU1M6IHN0cmluZztcclxuXHJcbiAgICAvLyByYXBwcmVzZW50YXppb25lIGdyYWZpY2EgZGkgZGVmYXVsdCBwZXIgZ2xpIGVsZW1lbnRpIGRpIHJpc3Bvc3RhXHJcbiAgICBBbnN3ZXJTdHlsZTogQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6IFwiXCIsIExhYmVsc3R5bGVDU1M6IFwiXCIsIENvbFNwYW5TaXplczogW10gfTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbnRpdMOgIGEgY3VpIGFwcGFydGllbmUgaWwgY2FtcG8uIFNpIHRlbmdhIHByZXNlbnRlIGNoZSBzb25vIGFtbWVzc2kgYW5jaGUgY2FtcGlcclxuICAgICAqIGRpIHNvbGEgdmlzdWFsaXp6YXppb25lIGUgY2FsY29sYXRpLCBkYSB1dGlsaXp6YXJlIG5lbGxlIGZvcm0sIFxyXG4gICAgICogZSBwZXIgcXVlc3RvIG1vdGl2byBwb3Nzb25vIGVzc2VyZSBjb24gRW50aXR5ID09IG51bGxcclxuICAgICovXHJcbiAgICBFbnRpdHlJRDogc3RyaW5nO1xyXG5cclxuICAgIEZpZWxkR3JvdXA6IHN0cmluZztcclxuICAgIENvbFNwYW5TaXplczogQXJyYXk8Q29sU3BhblNpemVzRW51bT47XHJcbiAgICBWaXNpYmxlSWY6IHN0cmluZzsgLy8gY29uZGl6aW9uZSBkaSB2aXN1YWxpenphemlvbmVcclxuICAgIEluTGlzdFZpZXc6IGJvb2xlYW47IC8vIHZpc3VhbGl6emF6aW9uZSAoaW1wb3N0YXRhIGRpIGRlZmF1bHQgb3BwdXJlIGNvbmRpemlvbmF0YSBjYWxjb2xhdGEgZHVyYW50ZSBsYSBjb21waWxhemlvbmUgZGVsIHF1ZXN0aW9uYXJpbylcclxuICAgIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtO1xyXG4gICAgTWFpbnRhaW5fVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIFxyXG4gICAgLy8gUHJvcHJpdMOgIGNsaWVudFxyXG4gICAgRmllbGRUeXBlOiBGaWVsZFR5cGVFbnVtO1xyXG4gICAgRmllbGRWYWx1ZTogYW55O1xyXG5cclxuICAgIERhdGFHZXR0ZXI6IERhdGFHZXR0ZXIgPSBuZXcgRGF0YUdldHRlcigpO1xyXG4gICAgRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIEZvcm1Gb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQW5zd2VyU3R5bGUge1xyXG4gICAgSW5MaXN0VmlldzogYm9vbGVhbiAvLyB2aXNpYmxlXHJcbiAgICBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bVxyXG4gICAgVmlzaWJsZUlmOiBzdHJpbmcgLy8gZm9ybXVsYSB2aXNpYmxlXHJcbiAgICBGaWVsZHN0eWxlQ1NTOiBzdHJpbmdcclxuICAgIExhYmVsc3R5bGVDU1M6IHN0cmluZ1xyXG4gICAgQ29sU3BhblNpemVzOiBBcnJheTxDb2xTcGFuU2l6ZXNFbnVtPlxyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFHZXR0ZXIge1xyXG4gICAgRGF0YUdldHRlclR5cGU6IERhdGFHZXR0ZXJUeXBlRW51bSA9IERhdGFHZXR0ZXJUeXBlRW51bS5NYW51YWxlO1xyXG4gICAgRGF0YUdldHRlclZhbHVlOiBhbnkgPSBudWxsO1xyXG4gICAgRGF0YUdldHRlckNvbHVtbkZvcmNlOiBhbnkgPSBudWxsO1xyXG4gICAgRGF0YUdldHRlckNhcmRpbmFsaXR5OiBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtID0gRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bVsnUElVIFJFQ0VOVEUnXTsgLy8gVXNhdG8gc29sbyBpbiBjYXNvIGRpIERNIEdldHRlclxyXG4gICAgRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uOiBDb250ZXN0dWFsaXphdGlvbjsgLy8gVXNhdG8gcGVyIGNvbnRlc3R1YWxpenphcmUgaWwgRE0gR2V0dGVyXHJcbiAgICBEYXRhR2V0dGVySGFzUmVzZXRCdXR0b246IGJvb2xlYW4gPSB0cnVlOyAvLyBoYSBpbCBwdWxzYW50ZSByZXNldD9cclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmllbGRUeXBlRW51bSB7XHJcbiAgICAnQ2FtcG8gZGkgdGVzdG8nID0gMSxcclxuICAgICdBcmVhIGRpIHRlc3RvJyA9IDIsXHJcbiAgICAnQm9vbGVhbm8nID0gMyxcclxuICAgICdEYXRhIGUvbyBvcmEnID0gNCxcclxuICAgICdDYW1wbyBudW1lcmljbycgPSA1LFxyXG4gICAgJ0FsbGVnYXRvJyA9IDYsXHJcbiAgICAnSW1tYWdpbmUnID0gNyxcclxuICAgICdFbGVuY28gZ2VuZXJpY28nID0gOCxcclxuICAgICdMb29rdXAnID0gOSxcclxuICAgICdGb3JtIGRpIGRldHRhZ2xpbycgPSAxMCxcclxuICAgICdFbGVuY28gaW1tYWdpbmknID0gMTEsXHJcbiAgICBcIkV0aWNoZXR0YVwiID0gMTIsXHJcbiAgICBcIkltbWFnaW5lIGNvbiBtYXJrZXJzXCIgPTEzLFxyXG4gICAgXCJCb3R0b25lIGF6aW9uZVwiID0gMTRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRGF0YUdldHRlclR5cGVFbnVtIHtcclxuICAgICdNYW51YWxlJyA9IDEsXHJcbiAgICAnRm9ybXVsYScgPSAyLFxyXG4gICAgJ0RhIGRhdGFiYXNlJyA9IDMsXHJcbiAgICAnRGEgbW9kdWxvIGRpbmFtaWNvJyA9IDRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQ29sU3BhblNpemVzRW51bSB7XHJcbiAgICAnY29sLXNtLTMnID0gMSxcclxuICAgICdjb2wtc20tNCcgPSAyLFxyXG4gICAgJ2NvbC1zbS02JyA9IDMsXHJcbiAgICAnY29sLXNtLTEyJyA9IDQsXHJcblxyXG4gICAgJ2NvbC1tZC0zJyA9IDUsXHJcbiAgICAnY29sLW1kLTQnID0gNixcclxuICAgICdjb2wtbWQtNicgPSA3LFxyXG4gICAgJ2NvbC1tZC0xMicgPSA4LFxyXG5cclxuICAgICdjb2wtbGctMycgPSA5LFxyXG4gICAgJ2NvbC1sZy00JyA9IDEwLFxyXG4gICAgJ2NvbC1sZy02JyA9IDExLFxyXG4gICAgJ2NvbC1sZy0xMicgPSAxMixcclxuXHJcbiAgICAnYWxpZ24tc2VsZi1zdGFydCcgPSAxMyxcclxuICAgICdhbGlnbi1zZWxmLWNlbnRlcicgPSAxNCxcclxuICAgICdhbGlnbi1zZWxmLWVuZCcgPSAxNSxcclxuXHJcbiAgICAnY29sLXNtLTEnID0gMTYsXHJcbiAgICAnY29sLXNtLTInID0gMTcsXHJcbiAgICAnY29sLXNtLTUnID0gMTgsXHJcbiAgICAnY29sLXNtLTcnID0gMTksXHJcbiAgICAnY29sLXNtLTgnID0gMjAsXHJcbiAgICAnY29sLXNtLTknID0gMjEsXHJcbiAgICAnY29sLXNtLTEwJyA9IDIyLFxyXG4gICAgJ2NvbC1zbS0xMScgPSAyMyxcclxuXHJcbiAgICAnY29sLW1kLTEnID0gMjQsXHJcbiAgICAnY29sLW1kLTInID0gMjUsXHJcbiAgICAnY29sLW1kLTUnID0gMjYsXHJcbiAgICAnY29sLW1kLTcnID0gMjcsXHJcbiAgICAnY29sLW1kLTgnID0gMjgsXHJcbiAgICAnY29sLW1kLTknID0gMjksXHJcbiAgICAnY29sLW1kLTEwJyA9IDMwLFxyXG4gICAgJ2NvbC1tZC0xMScgPSAzMSxcclxuXHJcbiAgICAnY29sLWxnLTEnID0gMzIsXHJcbiAgICAnY29sLWxnLTInID0gMzMsXHJcbiAgICAnY29sLWxnLTUnID0gMzQsXHJcbiAgICAnY29sLWxnLTcnID0gMzUsXHJcbiAgICAnY29sLWxnLTgnID0gMzYsXHJcbiAgICAnY29sLWxnLTknID0gMzcsXHJcbiAgICAnY29sLWxnLTEwJyA9IDM4LFxyXG4gICAgJ2NvbC1sZy0xMScgPSAzOVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWVsZEludmlzaWJpbGl0eUVudW0ge1xyXG4gICAgJ05BU0NPU1RPJyA9IDEsXHJcbiAgICAnTkFTQ09TVE8gQ09OIEFSRUEgVklTSUJJTEUnID0gMlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtIHtcclxuICAgICdQSVUgUkVDRU5URScgPSAyLFxyXG4gICAgJ01FTk8gUkVDRU5URScgPSAzXHJcbiAgfSJdfQ==
|