@cqa-lib/cqa-ui 1.1.259 → 1.1.260
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/step-builder/advanced-variables-form/advanced-variables-form.component.mjs +107 -5
- package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +144 -18
- package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +176 -6
- package/esm2020/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.mjs +102 -7
- package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +113 -7
- package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +7 -3
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +3 -3
- package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +7 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +702 -91
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +689 -90
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/step-builder/advanced-variables-form/advanced-variables-form.component.d.ts +43 -2
- package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +8 -1
- package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +14 -1
- package/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.d.ts +12 -2
- package/lib/step-builder/step-builder-document/step-builder-document.component.d.ts +15 -1
- package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +3 -1
- package/package.json +1 -1
- package/styles.css +1 -1
package/esm2020/lib/step-builder/advanced-variables-form/advanced-variables-form.component.mjs
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { FormArray, FormGroup } from '@angular/forms';
|
|
2
|
+
import { FormArray, FormGroup, FormControl } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/material/slide-toggle";
|
|
5
|
-
import * as i2 from "
|
|
5
|
+
import * as i2 from "../../custom-input/custom-input.component";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
6
8
|
export class AdvancedVariablesFormComponent {
|
|
7
9
|
constructor() {
|
|
8
10
|
this.advancedVariables = [];
|
|
9
11
|
this.advancedVariableForm = new FormArray([]);
|
|
10
12
|
this.variableBooleanChange = new EventEmitter();
|
|
13
|
+
this.variableValueChange = new EventEmitter();
|
|
11
14
|
}
|
|
12
15
|
ngOnChanges(changes) {
|
|
13
16
|
// Handle changes if needed
|
|
@@ -36,29 +39,128 @@ export class AdvancedVariablesFormComponent {
|
|
|
36
39
|
}
|
|
37
40
|
return variable.value || false;
|
|
38
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the value from form or variable (for non-boolean types)
|
|
44
|
+
*/
|
|
45
|
+
getValue(variable, index) {
|
|
46
|
+
const formGroup = this.getFormGroupAt(index);
|
|
47
|
+
if (formGroup) {
|
|
48
|
+
const value = formGroup.get('value')?.value;
|
|
49
|
+
return value !== null && value !== undefined ? value : variable.value;
|
|
50
|
+
}
|
|
51
|
+
return variable.value;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if variable is boolean type
|
|
55
|
+
*/
|
|
56
|
+
isBooleanType(variable) {
|
|
57
|
+
return variable.type !== 'str_list' && typeof variable.value === 'boolean';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if variable is str_list type
|
|
61
|
+
*/
|
|
62
|
+
isStrListType(variable) {
|
|
63
|
+
return variable.type === 'str_list';
|
|
64
|
+
}
|
|
39
65
|
/**
|
|
40
66
|
* Handle boolean value change
|
|
41
67
|
*/
|
|
42
68
|
onVariableBooleanChange(variableName, value) {
|
|
43
69
|
this.variableBooleanChange.emit({ name: variableName, value });
|
|
44
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Handle value change for non-boolean types
|
|
73
|
+
*/
|
|
74
|
+
onVariableValueChange(variableName, value) {
|
|
75
|
+
this.variableValueChange.emit({ name: variableName, value });
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Handle adding a new item to str_list
|
|
79
|
+
*/
|
|
80
|
+
addStrListItem(variable, index) {
|
|
81
|
+
const formGroup = this.getFormGroupAt(index);
|
|
82
|
+
if (formGroup) {
|
|
83
|
+
const valueControl = formGroup.get('value');
|
|
84
|
+
if (valueControl instanceof FormArray) {
|
|
85
|
+
valueControl.push(new FormControl(''));
|
|
86
|
+
// Emit the updated value
|
|
87
|
+
const currentValue = valueControl.value;
|
|
88
|
+
this.onVariableValueChange(variable.name, currentValue);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.error('Expected FormArray for str_list variable, got:', valueControl);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Handle removing an item from str_list
|
|
97
|
+
*/
|
|
98
|
+
removeStrListItem(variable, index, itemIndex) {
|
|
99
|
+
const formGroup = this.getFormGroupAt(index);
|
|
100
|
+
if (formGroup) {
|
|
101
|
+
const valueControl = formGroup.get('value');
|
|
102
|
+
if (valueControl instanceof FormArray && itemIndex >= 0 && itemIndex < valueControl.length) {
|
|
103
|
+
valueControl.removeAt(itemIndex);
|
|
104
|
+
// Emit the updated value
|
|
105
|
+
const currentValue = valueControl.value;
|
|
106
|
+
this.onVariableValueChange(variable.name, currentValue);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Handle str_list item value change
|
|
112
|
+
*/
|
|
113
|
+
onStrListItemChange(variable, index, itemIndex, value) {
|
|
114
|
+
const formGroup = this.getFormGroupAt(index);
|
|
115
|
+
if (formGroup) {
|
|
116
|
+
const valueControl = formGroup.get('value');
|
|
117
|
+
if (valueControl instanceof FormArray && itemIndex >= 0 && itemIndex < valueControl.length) {
|
|
118
|
+
// Use emitEvent: false to prevent triggering change detection that causes focus loss
|
|
119
|
+
valueControl.at(itemIndex).setValue(value, { emitEvent: false });
|
|
120
|
+
// Emit the updated value after a short delay to avoid focus issues
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
const currentValue = valueControl.value;
|
|
123
|
+
this.onVariableValueChange(variable.name, currentValue);
|
|
124
|
+
}, 0);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get FormArray for str_list variable
|
|
130
|
+
*/
|
|
131
|
+
getStrListFormArray(variable, index) {
|
|
132
|
+
const formGroup = this.getFormGroupAt(index);
|
|
133
|
+
if (formGroup) {
|
|
134
|
+
const formArray = formGroup.get('value');
|
|
135
|
+
return formArray instanceof FormArray ? formArray : null;
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
45
139
|
/**
|
|
46
140
|
* Track by function for ngFor
|
|
47
141
|
*/
|
|
48
142
|
trackByVariable(index, variable) {
|
|
49
143
|
return variable.name || index.toString();
|
|
50
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Track by function for form controls in str_list
|
|
147
|
+
*/
|
|
148
|
+
trackByControl(index, control) {
|
|
149
|
+
return control || index;
|
|
150
|
+
}
|
|
51
151
|
}
|
|
52
152
|
AdvancedVariablesFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdvancedVariablesFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
AdvancedVariablesFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AdvancedVariablesFormComponent, selector: "cqa-advanced-variables-form", inputs: { advancedVariables: "advancedVariables", advancedVariableForm: "advancedVariableForm" }, outputs: { variableBooleanChange: "variableBooleanChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-flex cqa-gap-x-6 cqa-gap-y-4 cqa-flex-wrap advanced-variables-form\">\n <ng-container *ngFor=\"let variable of advancedVariables; let i = index; trackBy: trackByVariable\">\n <!-- Boolean variables with mat-slide-toggle -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"width:
|
|
153
|
+
AdvancedVariablesFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AdvancedVariablesFormComponent, selector: "cqa-advanced-variables-form", inputs: { advancedVariables: "advancedVariables", advancedVariableForm: "advancedVariableForm" }, outputs: { variableBooleanChange: "variableBooleanChange", variableValueChange: "variableValueChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-flex cqa-gap-x-6 cqa-gap-y-4 cqa-flex-wrap advanced-variables-form cqa-mb-4\">\n <ng-container *ngFor=\"let variable of advancedVariables; let i = index; trackBy: trackByVariable\">\n <!-- Boolean variables with mat-slide-toggle -->\n <ng-container *ngIf=\"isBooleanType(variable)\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"width: 100%\">\n <mat-slide-toggle \n [checked]=\"getBooleanValue(variable, i)\"\n (change)=\"onVariableBooleanChange(variable.name, $event.checked)\" \n color=\"primary\">\n </mat-slide-toggle>\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700 capitalize-first\">\n {{ variable.label }}\n </label>\n </div>\n </ng-container>\n\n <!-- str_list variables with dynamic list -->\n <ng-container *ngIf=\"isStrListType(variable)\">\n <div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700 cqa-mb-1 capitalize-first\">\n {{ variable.label }}\n </label>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <ng-container *ngIf=\"getStrListFormArray(variable, i) as formArray\">\n <div *ngFor=\"let control of formArray.controls; let itemIndex = index; trackBy: trackByControl\" class=\"cqa-flex cqa-gap-2 cqa-items-center\">\n <cqa-custom-input \n [placeholder]=\"'Enter locator'\" \n [value]=\"control.value\" \n [fullWidth]=\"true\"\n (valueChange)=\"onStrListItemChange(variable, i, itemIndex, $event)\">\n </cqa-custom-input>\n <div class=\"cqa-cursor-pointer cqa-text-red-600 cqa-flex cqa-items-center cqa-justify-center\" (click)=\"removeStrListItem(variable, i, itemIndex)\">\n <mat-icon style=\"font-size: 24px;\">delete</mat-icon>\n </div>\n <div *ngIf=\"itemIndex === formArray.length - 1\" class=\"cqa-cursor-pointer cqa-text-blue-600 cqa-flex cqa-items-center cqa-justify-center\" (click)=\"addStrListItem(variable, i)\">\n <mat-icon style=\"font-size: 24px;\">add</mat-icon>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n", components: [{ type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i2.CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
54
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdvancedVariablesFormComponent, decorators: [{
|
|
55
155
|
type: Component,
|
|
56
|
-
args: [{ selector: 'cqa-advanced-variables-form', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-gap-x-6 cqa-gap-y-4 cqa-flex-wrap advanced-variables-form\">\n <ng-container *ngFor=\"let variable of advancedVariables; let i = index; trackBy: trackByVariable\">\n <!-- Boolean variables with mat-slide-toggle -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"width:
|
|
156
|
+
args: [{ selector: 'cqa-advanced-variables-form', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-gap-x-6 cqa-gap-y-4 cqa-flex-wrap advanced-variables-form cqa-mb-4\">\n <ng-container *ngFor=\"let variable of advancedVariables; let i = index; trackBy: trackByVariable\">\n <!-- Boolean variables with mat-slide-toggle -->\n <ng-container *ngIf=\"isBooleanType(variable)\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" style=\"width: 100%\">\n <mat-slide-toggle \n [checked]=\"getBooleanValue(variable, i)\"\n (change)=\"onVariableBooleanChange(variable.name, $event.checked)\" \n color=\"primary\">\n </mat-slide-toggle>\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700 capitalize-first\">\n {{ variable.label }}\n </label>\n </div>\n </ng-container>\n\n <!-- str_list variables with dynamic list -->\n <ng-container *ngIf=\"isStrListType(variable)\">\n <div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700 cqa-mb-1 capitalize-first\">\n {{ variable.label }}\n </label>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <ng-container *ngIf=\"getStrListFormArray(variable, i) as formArray\">\n <div *ngFor=\"let control of formArray.controls; let itemIndex = index; trackBy: trackByControl\" class=\"cqa-flex cqa-gap-2 cqa-items-center\">\n <cqa-custom-input \n [placeholder]=\"'Enter locator'\" \n [value]=\"control.value\" \n [fullWidth]=\"true\"\n (valueChange)=\"onStrListItemChange(variable, i, itemIndex, $event)\">\n </cqa-custom-input>\n <div class=\"cqa-cursor-pointer cqa-text-red-600 cqa-flex cqa-items-center cqa-justify-center\" (click)=\"removeStrListItem(variable, i, itemIndex)\">\n <mat-icon style=\"font-size: 24px;\">delete</mat-icon>\n </div>\n <div *ngIf=\"itemIndex === formArray.length - 1\" class=\"cqa-cursor-pointer cqa-text-blue-600 cqa-flex cqa-items-center cqa-justify-center\" (click)=\"addStrListItem(variable, i)\">\n <mat-icon style=\"font-size: 24px;\">add</mat-icon>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n", styles: [] }]
|
|
57
157
|
}], propDecorators: { advancedVariables: [{
|
|
58
158
|
type: Input
|
|
59
159
|
}], advancedVariableForm: [{
|
|
60
160
|
type: Input
|
|
61
161
|
}], variableBooleanChange: [{
|
|
62
162
|
type: Output
|
|
163
|
+
}], variableValueChange: [{
|
|
164
|
+
type: Output
|
|
63
165
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWVuRSxNQUFNLE9BQU8sOEJBQThCO0lBUDNDO1FBUVcsc0JBQWlCLEdBQXVCLEVBQUUsQ0FBQztRQUMzQyx5QkFBb0IsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztLQTZDeEY7SUEzQ0MsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLDJCQUEyQjtRQUMzQixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ25FLHNDQUFzQztTQUN2QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxLQUFhO1FBQzFCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUU7WUFDdkYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxPQUFPLE9BQU8sWUFBWSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsUUFBMEIsRUFBRSxLQUFhO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUM1QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztTQUNoRjtRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCLENBQUMsWUFBb0IsRUFBRSxLQUFjO1FBQzFELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLEtBQWEsRUFBRSxRQUEwQjtRQUN2RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7OzJIQWhEVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixnU0NoQjNDLHN0QkFnQkE7MkZEQWEsOEJBQThCO2tCQVAxQyxTQUFTOytCQUNFLDZCQUE2QixRQUdqQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkdmFuY2VkVmFyaWFibGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVmFyaWFibGVzRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGFkdmFuY2VkVmFyaWFibGVzOiBBZHZhbmNlZFZhcmlhYmxlW10gPSBbXTtcbiAgQElucHV0KCkgYWR2YW5jZWRWYXJpYWJsZUZvcm06IEZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICBcbiAgQE91dHB1dCgpIHZhcmlhYmxlQm9vbGVhbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0+KCk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBjaGFuZ2VzIGlmIG5lZWRlZFxuICAgIGlmIChjaGFuZ2VzWydhZHZhbmNlZFZhcmlhYmxlcyddIHx8IGNoYW5nZXNbJ2FkdmFuY2VkVmFyaWFibGVGb3JtJ10pIHtcbiAgICAgIC8vIEZvcm0gaXMgbWFuYWdlZCBieSBwYXJlbnQgY29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgRm9ybUdyb3VwIGF0IGEgc3BlY2lmaWMgaW5kZXhcbiAgICovXG4gIGdldEZvcm1Hcm91cEF0KGluZGV4OiBudW1iZXIpOiBGb3JtR3JvdXAgfCBudWxsIHtcbiAgICBpZiAodGhpcy5hZHZhbmNlZFZhcmlhYmxlRm9ybSAmJiBpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5hZHZhbmNlZFZhcmlhYmxlRm9ybS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmFkdmFuY2VkVmFyaWFibGVGb3JtLmF0KGluZGV4KTtcbiAgICAgIHJldHVybiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwID8gY29udHJvbCA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgZnJvbSBmb3JtIG9yIHZhcmlhYmxlXG4gICAqL1xuICBnZXRCb29sZWFuVmFsdWUodmFyaWFibGU6IEFkdmFuY2VkVmFyaWFibGUsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cEF0KGluZGV4KTtcbiAgICBpZiAoZm9ybUdyb3VwKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJyk/LnZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHZhcmlhYmxlLnZhbHVlIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdmFyaWFibGUudmFsdWUgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGJvb2xlYW4gdmFsdWUgY2hhbmdlXG4gICAqL1xuICBvblZhcmlhYmxlQm9vbGVhbkNoYW5nZSh2YXJpYWJsZU5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZhcmlhYmxlQm9vbGVhbkNoYW5nZS5lbWl0KHsgbmFtZTogdmFyaWFibGVOYW1lLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBieSBmdW5jdGlvbiBmb3IgbmdGb3JcbiAgICovXG4gIHRyYWNrQnlWYXJpYWJsZShpbmRleDogbnVtYmVyLCB2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhcmlhYmxlLm5hbWUgfHwgaW5kZXgudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWdhcC14LTYgY3FhLWdhcC15LTQgY3FhLWZsZXgtd3JhcCBhZHZhbmNlZC12YXJpYWJsZXMtZm9ybVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YXJpYWJsZSBvZiBhZHZhbmNlZFZhcmlhYmxlczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVZhcmlhYmxlXCI+XG4gICAgPCEtLSBCb29sZWFuIHZhcmlhYmxlcyB3aXRoIG1hdC1zbGlkZS10b2dnbGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCIgc3R5bGU9XCJ3aWR0aDogY2FsYyg1MCUgLSAxMnB4KTtcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMCBjYXBpdGFsaXplLWZpcnN0XCI+XG4gICAgICAgIHt7IHZhcmlhYmxlLmxhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgXG4gICAgICAgIFtjaGVja2VkXT1cImdldEJvb2xlYW5WYWx1ZSh2YXJpYWJsZSwgaSlcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uVmFyaWFibGVCb29sZWFuQ2hhbmdlKHZhcmlhYmxlLm5hbWUsICRldmVudC5jaGVja2VkKVwiIFxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWdCbkUsTUFBTSxPQUFPLDhCQUE4QjtJQVAzQztRQVFXLHNCQUFpQixHQUF1QixFQUFFLENBQUM7UUFDM0MseUJBQW9CLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbkQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQW9DLENBQUM7UUFDN0Usd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7S0FzSmxGO0lBcEpDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQywyQkFBMkI7UUFDM0IsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRTtZQUNuRSxzQ0FBc0M7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBYTtRQUMxQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENB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cG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWR2YW5jZWRWYXJpYWJsZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmdbXTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWFkdmFuY2VkLXZhcmlhYmxlcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLXZhcmlhYmxlcy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFZhcmlhYmxlc0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBhZHZhbmNlZFZhcmlhYmxlczogQWR2YW5jZWRWYXJpYWJsZVtdID0gW107XG4gIEBJbnB1dCgpIGFkdmFuY2VkVmFyaWFibGVGb3JtOiBGb3JtQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcbiAgXG4gIEBPdXRwdXQoKSB2YXJpYWJsZUJvb2xlYW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9PigpO1xuICBAT3V0cHV0KCkgdmFyaWFibGVWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4oKTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gSGFuZGxlIGNoYW5nZXMgaWYgbmVlZGVkXG4gICAgaWYgKGNoYW5nZXNbJ2FkdmFuY2VkVmFyaWFibGVzJ10gfHwgY2hhbmdlc1snYWR2YW5jZWRWYXJpYWJsZUZvcm0nXSkge1xuICAgICAgLy8gRm9ybSBpcyBtYW5hZ2VkIGJ5IHBhcmVudCBjb21wb25lbnRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBGb3JtR3JvdXAgYXQgYSBzcGVjaWZpYyBpbmRleFxuICAgKi9cbiAgZ2V0Rm9ybUdyb3VwQXQoaW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cCB8IG51bGwge1xuICAgIGlmICh0aGlzLmFkdmFuY2VkVmFyaWFibGVGb3JtICYmIGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmFkdmFuY2VkVmFyaWFibGVGb3JtLmxlbmd0aCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuYWR2YW5jZWRWYXJpYWJsZUZvcm0uYXQoaW5kZXgpO1xuICAgICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgPyBjb250cm9sIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmcm9tIGZvcm0gb3IgdmFyaWFibGVcbiAgICovXG4gIGdldEJvb2xlYW5WYWx1ZSh2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQXQoaW5kZXgpO1xuICAgIGlmIChmb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybUdyb3VwLmdldCgndmFsdWUnKT8udmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogKHZhcmlhYmxlLnZhbHVlIGFzIGJvb2xlYW4pIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKHZhcmlhYmxlLnZhbHVlIGFzIGJvb2xlYW4pIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgZnJvbSBmb3JtIG9yIHZhcmlhYmxlIChmb3Igbm9uLWJvb2xlYW4gdHlwZXMpXG4gICAqL1xuICBnZXRWYWx1ZSh2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSwgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXBBdChpbmRleCk7XG4gICAgaWYgKGZvcm1Hcm91cCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpPy52YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB2YXJpYWJsZS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhcmlhYmxlLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHZhcmlhYmxlIGlzIGJvb2xlYW4gdHlwZVxuICAgKi9cbiAgaXNCb29sZWFuVHlwZSh2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YXJpYWJsZS50eXBlICE9PSAnc3RyX2xpc3QnICYmIHR5cGVvZiB2YXJpYWJsZS52YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHZhcmlhYmxlIGlzIHN0cl9saXN0IHR5cGVcbiAgICovXG4gIGlzU3RyTGlzdFR5cGUodmFyaWFibGU6IEFkdmFuY2VkVmFyaWFibGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFyaWFibGUudHlwZSA9PT0gJ3N0cl9saXN0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYm9vbGVhbiB2YWx1ZSBjaGFuZ2VcbiAgICovXG4gIG9uVmFyaWFibGVCb29sZWFuQ2hhbmdlKHZhcmlhYmxlTmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmFyaWFibGVCb29sZWFuQ2hhbmdlLmVtaXQoeyBuYW1lOiB2YXJpYWJsZU5hbWUsIHZhbHVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB2YWx1ZSBjaGFuZ2UgZm9yIG5vbi1ib29sZWFuIHR5cGVzXG4gICAqL1xuICBvblZhcmlhYmxlVmFsdWVDaGFuZ2UodmFyaWFibGVOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhcmlhYmxlVmFsdWVDaGFuZ2UuZW1pdCh7IG5hbWU6IHZhcmlhYmxlTmFtZSwgdmFsdWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFkZGluZyBhIG5ldyBpdGVtIHRvIHN0cl9saXN0XG4gICAqL1xuICBhZGRTdHJMaXN0SXRlbSh2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQXQoaW5kZXgpO1xuICAgIGlmIChmb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IHZhbHVlQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJyk7XG4gICAgICBpZiAodmFsdWVDb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgIHZhbHVlQ29udHJvbC5wdXNoKG5ldyBGb3JtQ29udHJvbCgnJykpO1xuICAgICAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHZhbHVlQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5vblZhcmlhYmxlVmFsdWVDaGFuZ2UodmFyaWFibGUubmFtZSwgY3VycmVudFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0V4cGVjdGVkIEZvcm1BcnJheSBmb3Igc3RyX2xpc3QgdmFyaWFibGUsIGdvdDonLCB2YWx1ZUNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgcmVtb3ZpbmcgYW4gaXRlbSBmcm9tIHN0cl9saXN0XG4gICAqL1xuICByZW1vdmVTdHJMaXN0SXRlbSh2YXJpYWJsZTogQWR2YW5jZWRWYXJpYWJsZSwgaW5kZXg6IG51bWJlciwgaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cEF0KGluZGV4KTtcbiAgICBpZiAoZm9ybUdyb3VwKSB7XG4gICAgICBjb25zdCB2YWx1ZUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpO1xuICAgICAgaWYgKHZhbHVlQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSAmJiBpdGVtSW5kZXggPj0gMCAmJiBpdGVtSW5kZXggPCB2YWx1ZUNvbnRyb2wubGVuZ3RoKSB7XG4gICAgICAgIHZhbHVlQ29udHJvbC5yZW1vdmVBdChpdGVtSW5kZXgpO1xuICAgICAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHZhbHVlQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5vblZhcmlhYmxlVmFsdWVDaGFuZ2UodmFyaWFibGUubmFtZSwgY3VycmVudFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHN0cl9saXN0IGl0ZW0gdmFsdWUgY2hhbmdlXG4gICAqL1xuICBvblN0ckxpc3RJdGVtQ2hhbmdlKHZhcmlhYmxlOiBBZHZhbmNlZFZhcmlhYmxlLCBpbmRleDogbnVtYmVyLCBpdGVtSW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQXQoaW5kZXgpO1xuICAgIGlmIChmb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IHZhbHVlQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoJ3ZhbHVlJyk7XG4gICAgICBpZiAodmFsdWVDb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIGl0ZW1JbmRleCA+PSAwICYmIGl0ZW1JbmRleCA8IHZhbHVlQ29udHJvbC5sZW5ndGgpIHtcbiAgICAgICAgLy8gVXNlIGVtaXRFdmVudDogZmFsc2UgdG8gcHJldmVudCB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb24gdGhhdCBjYXVzZXMgZm9jdXMgbG9zc1xuICAgICAgICB2YWx1ZUNvbnRyb2wuYXQoaXRlbUluZGV4KS5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlIGFmdGVyIGEgc2hvcnQgZGVsYXkgdG8gYXZvaWQgZm9jdXMgaXNzdWVzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHZhbHVlQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICB0aGlzLm9uVmFyaWFibGVWYWx1ZUNoYW5nZSh2YXJpYWJsZS5uYW1lLCBjdXJyZW50VmFsdWUpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IEZvcm1BcnJheSBmb3Igc3RyX2xpc3QgdmFyaWFibGVcbiAgICovXG4gIGdldFN0ckxpc3RGb3JtQXJyYXkodmFyaWFibGU6IEFkdmFuY2VkVmFyaWFibGUsIGluZGV4OiBudW1iZXIpOiBGb3JtQXJyYXkgfCBudWxsIHtcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cEF0KGluZGV4KTtcbiAgICBpZiAoZm9ybUdyb3VwKSB7XG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtR3JvdXAuZ2V0KCd2YWx1ZScpO1xuICAgICAgcmV0dXJuIGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSA/IGZvcm1BcnJheSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciBuZ0ZvclxuICAgKi9cbiAgdHJhY2tCeVZhcmlhYmxlKGluZGV4OiBudW1iZXIsIHZhcmlhYmxlOiBBZHZhbmNlZFZhcmlhYmxlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFyaWFibGUubmFtZSB8fCBpbmRleC50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciBmb3JtIGNvbnRyb2xzIGluIHN0cl9saXN0XG4gICAqL1xuICB0cmFja0J5Q29udHJvbChpbmRleDogbnVtYmVyLCBjb250cm9sOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBjb250cm9sIHx8IGluZGV4O1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLXgtNiBjcWEtZ2FwLXktNCBjcWEtZmxleC13cmFwIGFkdmFuY2VkLXZhcmlhYmxlcy1mb3JtIGNxYS1tYi00XCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhcmlhYmxlIG9mIGFkdmFuY2VkVmFyaWFibGVzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5VmFyaWFibGVcIj5cbiAgICA8IS0tIEJvb2xlYW4gdmFyaWFibGVzIHdpdGggbWF0LXNsaWRlLXRvZ2dsZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNCb29sZWFuVHlwZSh2YXJpYWJsZSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgXG4gICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Qm9vbGVhblZhbHVlKHZhcmlhYmxlLCBpKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvblZhcmlhYmxlQm9vbGVhbkNoYW5nZSh2YXJpYWJsZS5uYW1lLCAkZXZlbnQuY2hlY2tlZClcIiBcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZ3JheS03MDAgY2FwaXRhbGl6ZS1maXJzdFwiPlxuICAgICAgICAgIHt7IHZhcmlhYmxlLmxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gc3RyX2xpc3QgdmFyaWFibGVzIHdpdGggZHluYW1pYyBsaXN0IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N0ckxpc3RUeXBlKHZhcmlhYmxlKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtdy1mdWxsXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1ncmF5LTcwMCBjcWEtbWItMSBjYXBpdGFsaXplLWZpcnN0XCI+XG4gICAgICAgICAge3sgdmFyaWFibGUubGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0U3RyTGlzdEZvcm1BcnJheSh2YXJpYWJsZSwgaSkgYXMgZm9ybUFycmF5XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250cm9sIG9mIGZvcm1BcnJheS5jb250cm9sczsgbGV0IGl0ZW1JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Q29udHJvbFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWdhcC0yIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXQgXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidFbnRlciBsb2NhdG9yJ1wiIFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCIgXG4gICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25TdHJMaXN0SXRlbUNoYW5nZSh2YXJpYWJsZSwgaSwgaXRlbUluZGV4LCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdGV4dC1yZWQtNjAwIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCIgKGNsaWNrKT1cInJlbW92ZVN0ckxpc3RJdGVtKHZhcmlhYmxlLCBpLCBpdGVtSW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAyNHB4O1wiPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbUluZGV4ID09PSBmb3JtQXJyYXkubGVuZ3RoIC0gMVwiIGNsYXNzPVwiY3FhLWN1cnNvci1wb2ludGVyIGNxYS10ZXh0LWJsdWUtNjAwIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCIgKGNsaWNrKT1cImFkZFN0ckxpc3RJdGVtKHZhcmlhYmxlLCBpKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMjRweDtcIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG4iXX0=
|