@cqa-lib/cqa-ui 1.1.548-gamma.19 → 1.1.548-gamma.20
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/new-test-data-profile-dialog/new-test-data-profile-dialog.component.mjs +10 -5
- package/fesm2015/cqa-lib-cqa-ui.mjs +6 -2
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +6 -2
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3,8 +3,9 @@ import { FormControl, FormGroup } from '@angular/forms';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../custom-input/custom-input.component";
|
|
5
5
|
import * as i2 from "../permission-toggle/permission-toggle.component";
|
|
6
|
-
import * as i3 from "
|
|
7
|
-
import * as i4 from "
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
import * as i4 from "../dynamic-select/dynamic-select-field.component";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
8
9
|
export class NewTestDataProfileDialogComponent {
|
|
9
10
|
constructor(cdr) {
|
|
10
11
|
this.cdr = cdr;
|
|
@@ -119,6 +120,10 @@ export class NewTestDataProfileDialogComponent {
|
|
|
119
120
|
parseMatrix() {
|
|
120
121
|
const rawRows = (this.rowsInput ?? '').trim();
|
|
121
122
|
const rawCols = (this.columnsInput ?? '').trim();
|
|
123
|
+
if (!rawRows || !rawCols) {
|
|
124
|
+
this.matrixError = 'Rows and columns are required.';
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
122
127
|
const rowsMatch = NewTestDataProfileDialogComponent.INTEGER_REGEX.exec(rawRows);
|
|
123
128
|
const colsMatch = NewTestDataProfileDialogComponent.INTEGER_REGEX.exec(rawCols);
|
|
124
129
|
if (!rowsMatch || !colsMatch) {
|
|
@@ -171,10 +176,10 @@ export class NewTestDataProfileDialogComponent {
|
|
|
171
176
|
NewTestDataProfileDialogComponent.INTEGER_REGEX = /^\s*(\d+)\s*$/;
|
|
172
177
|
NewTestDataProfileDialogComponent.MAX_DIM = 100;
|
|
173
178
|
NewTestDataProfileDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewTestDataProfileDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
-
NewTestDataProfileDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewTestDataProfileDialogComponent, selector: "cqa-new-test-data-profile-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames", environments: "environments" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-text-xs cqa-text-red-600\"
|
|
179
|
+
NewTestDataProfileDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewTestDataProfileDialogComponent, selector: "cqa-new-test-data-profile-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames", environments: "environments" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ matrixError }}</span>\n </span>\n </div>\n\n <!-- Assign to environments -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700\">\n Assign to environments <span class=\"cqa-text-red-600\">*</span>\n </label>\n <cqa-dynamic-select\n [form]=\"envForm\"\n [config]=\"envConfig\">\n </cqa-dynamic-select>\n <span *ngIf=\"envsError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ envsError }}</span>\n </span>\n <span *ngIf=\"!envsError\" class=\"cqa-text-xs cqa-text-gray-500\">\n Each environment gets an independent copy of the data (same columns, separate rows).\n </span>\n </div>\n\n</div>\n", components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: ["value", "disabled", "displayOnly", "roTooltip", "rwTooltip"], outputs: ["valueChange"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"], outputs: ["selectionChange", "selectClick", "searchChange", "loadMore", "addCustomValue"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
175
180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewTestDataProfileDialogComponent, decorators: [{
|
|
176
181
|
type: Component,
|
|
177
|
-
args: [{ selector: 'cqa-new-test-data-profile-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-text-xs cqa-text-red-600\"
|
|
182
|
+
args: [{ selector: 'cqa-new-test-data-profile-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ matrixError }}</span>\n </span>\n </div>\n\n <!-- Assign to environments -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700\">\n Assign to environments <span class=\"cqa-text-red-600\">*</span>\n </label>\n <cqa-dynamic-select\n [form]=\"envForm\"\n [config]=\"envConfig\">\n </cqa-dynamic-select>\n <span *ngIf=\"envsError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ envsError }}</span>\n </span>\n <span *ngIf=\"!envsError\" class=\"cqa-text-xs cqa-text-gray-500\">\n Each environment gets an independent copy of the data (same columns, separate rows).\n </span>\n </div>\n\n</div>\n" }]
|
|
178
183
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
|
|
179
184
|
type: Input
|
|
180
185
|
}], initialValue: [{
|
|
@@ -184,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
184
189
|
}], environments: [{
|
|
185
190
|
type: Input
|
|
186
191
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy10ZXN0LWRhdGEtcHJvZmlsZS1kaWFsb2cvbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy10ZXN0LWRhdGEtcHJvZmlsZS1kaWFsb2cvbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBa0J4RCxNQUFNLE9BQU8saUNBQWlDO0lBd0I1QyxZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBCMUMsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFFbkMsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0IsaUJBQVksR0FBMkIsRUFBRSxDQUFDO1FBRTVDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNoQixpQkFBWSxHQUFHLEdBQUcsQ0FBQztRQUVWLFlBQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUN0QyxjQUFjLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztRQUNJLGNBQVMsR0FBNkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RCxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxnQkFBVyxHQUFrQixJ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SEFBakMsaUNBQWlDLG9SQ25COUMsK3RGQStFQTsyRkQ1RGEsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLGtDQUFrQyxtQkFFM0IsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFO3dHQU16RCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLFxuICBTZWxlY3RPcHRpb24sXG59IGZyb20gJy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBUZHBEaWFsb2dQZXJtaXNzaW9uLFxuICBUZHBEaWFsb2dWYWx1ZSxcbiAgVGRwRW52aXJvbm1lbnRPcHRpb24sXG59IGZyb20gJy4vbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXctdGVzdC1kYXRhLXByb2ZpbGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcsIHN0eWxlOiAnZGlzcGxheTpibG9jazt3aWR0aDoxMDAlOycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5URUdFUl9SRUdFWCA9IC9eXFxzKihcXGQrKVxccyokLztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX0RJTSA9IDEwMDtcblxuICBASW5wdXQoKSBtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyA9ICdjcmVhdGUnO1xuICBASW5wdXQoKSBpbml0aWFsVmFsdWU/OiBQYXJ0aWFsPFRkcERpYWxvZ1ZhbHVlPjtcbiAgQElucHV0KCkgZXhpc3RpbmdOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZW52aXJvbm1lbnRzOiBUZHBFbnZpcm9ubWVudE9wdGlvbltdID0gW107XG5cbiAgcHVibGljIG5hbWUgPSAnJztcbiAgcHVibGljIGRlc2NyaXB0aW9uID0gJyc7XG4gIHB1YmxpYyByZWFkV3JpdGVNb2RlOiBUZHBEaWFsb2dQZXJtaXNzaW9uID0gJ1JXJztcbiAgcHVibGljIHJvd3NJbnB1dCA9ICcxJztcbiAgcHVibGljIGNvbHVtbnNJbnB1dCA9ICcxJztcblxuICBwdWJsaWMgcmVhZG9ubHkgZW52Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGVudmlyb25tZW50SWRzOiBuZXcgRm9ybUNvbnRyb2woW10pLFxuICB9KTtcbiAgcHVibGljIGVudkNvbmZpZzogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnID0gdGhpcy5idWlsZEVudkNvbmZpZyhbXSk7XG5cbiAgcHVibGljIG5hbWVFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBtYXRyaXhFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBlbnZzRXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMubmFtZSA9IHRoaXMuaW5pdGlhbFZhbHVlLm5hbWUgPz8gJyc7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5pbml0aWFsVmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSB0aGlzLmluaXRpYWxWYWx1ZS5yZWFkV3JpdGVNb2RlID8/ICdSVyc7XG4gICAgICBjb25zdCBjb2xDb3VudCA9IHRoaXMuaW5pdGlhbFZhbHVlLmNvbHVtbnM/Lmxlbmd0aCA/PyAxO1xuICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLmluaXRpYWxWYWx1ZS5yb3dzPy5sZW5ndGggPz8gMTtcbiAgICAgIHRoaXMucm93c0lucHV0ID0gU3RyaW5nKHJvd0NvdW50KTtcbiAgICAgIHRoaXMuY29sdW1uc0lucHV0ID0gU3RyaW5nKGNvbENvdW50KTtcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuaW5pdGlhbFZhbHVlLmVudmlyb25tZW50SWRzID8/IFtdO1xuICAgICAgdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEuc2V0VmFsdWUoaWRzKTtcbiAgICB9XG4gICAgdGhpcy5lbnZDb25maWcgPSB0aGlzLmJ1aWxkRW52Q29uZmlnKHRoaXMuZW52aXJvbm1lbnRzID8/IFtdKTtcblxuICAgIC8vIENsZWFyIGVudnMgZXJyb3IgYXMgc29vbiBhcyB0aGUgdXNlciBwaWNrcyBzb21ldGhpbmcuXG4gICAgdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lbnZzRXJyb3IpIHtcbiAgICAgICAgdGhpcy5lbnZzRXJyb3IgPSBudWxsO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCB0ZXN0IGRhdGEgcHJvZmlsZScgOiAnTmV3IHRlc3QgZGF0YSBwcm9maWxlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0RlZmluZSB0aGUgbWF0cml4OyBkYXRhIHZhbHVlcyBjYW4gYmUgYWRkZWQgcGVyIGVudmlyb25tZW50IGFmdGVyIGNyZWF0aW9uLic7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaW1hcnlCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSBwcm9maWxlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZUVycm9yc0FycmF5KCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMubmFtZUVycm9yID8gW3RoaXMubmFtZUVycm9yXSA6IFtdOyB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZEVudklkcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEudmFsdWUgPz8gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IFtdO1xuICB9XG5cbiAgcHVibGljIG9uTmFtZUNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm5hbWUgPSBuZXh0O1xuICAgIHRoaXMubmFtZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlc2NyaXB0aW9uQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBuZXh0O1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uUGVybWlzc2lvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSBuZXh0ID09PSAnUk8nID8gJ1JPJyA6ICdSVyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dzQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucm93c0lucHV0ID0gbmV4dCA/PyAnJztcbiAgICB0aGlzLm1hdHJpeEVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbHVtbnNDaGFuZ2UobmV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zSW5wdXQgPSBuZXh0ID8/ICcnO1xuICAgIHRoaXMubWF0cml4RXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlKCk6IFRkcERpYWxvZ1ZhbHVlIHwgbnVsbCB7XG4gICAgY29uc3QgdHJpbW1lZE5hbWUgPSB0aGlzLm5hbWUudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZE5hbWUpIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gJ05hbWUgaXMgcmVxdWlyZWQuJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEdXBsaWNhdGVOYW1lKHRyaW1tZWROYW1lKSkge1xuICAgICAgdGhpcy5uYW1lRXJyb3IgPSAnQSBwcm9maWxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlTWF0cml4KCk7XG5cbiAgICBjb25zdCBlbnZJZHMgPSB0aGlzLnNlbGVjdGVkRW52SWRzO1xuICAgIGlmICghZW52SWRzIHx8IGVudklkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZW52c0Vycm9yID0gJ1NlbGVjdCBhdCBsZWFzdCBvbmUgZW52aXJvbm1lbnQgdG8gYXNzaWduIHRoaXMgcHJvZmlsZSB0by4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudnNFcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmFtZUVycm9yIHx8IHRoaXMubWF0cml4RXJyb3IgfHwgdGhpcy5lbnZzRXJyb3IgfHwgIXBhcnNlZCkge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFyc2VkLmNvbHMgfSwgKF8sIGkpID0+IGBjb2xfJHtpICsgMX1gKTtcbiAgICBjb25zdCByb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFyc2VkLnJvd3MgfSwgKF8sIGkpID0+IGByb3dfJHtpICsgMX1gKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0cmltbWVkTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnRyaW0oKSB8fCBudWxsLFxuICAgICAgcmVhZFdyaXRlTW9kZTogdGhpcy5yZWFkV3JpdGVNb2RlLFxuICAgICAgY29sdW1uczogY29scyxcbiAgICAgIHJvd3MsXG4gICAgICBlbnZpcm9ubWVudElkczogdGhpcy5zZWxlY3RlZEVudklkcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1hdHJpeCgpOiB7IHJvd3M6IG51bWJlcjsgY29sczogbnVtYmVyIH0gfCBudWxsIHtcbiAgICBjb25zdCByYXdSb3dzID0gKHRoaXMucm93c0lucHV0ID8/ICcnKS50cmltKCk7XG4gICAgY29uc3QgcmF3Q29scyA9ICh0aGlzLmNvbHVtbnNJbnB1dCA/PyAnJykudHJpbSgpO1xuICAgIGNvbnN0IHJvd3NNYXRjaCA9IE5ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5JTlRFR0VSX1JFR0VYLmV4ZWMocmF3Um93cyk7XG4gICAgY29uc3QgY29sc01hdGNoID0gTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50LklOVEVHRVJfUkVHRVguZXhlYyhyYXdDb2xzKTtcbiAgICBpZiAoIXJvd3NNYXRjaCB8fCAhY29sc01hdGNoKSB7XG4gICAgICB0aGlzLm1hdHJpeEVycm9yID0gJ1Jvd3MgYW5kIGNvbHVtbnMgbXVzdCBiZSB3aG9sZSBudW1iZXJzLic7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHBhcnNlSW50KHJvd3NNYXRjaFsxXSwgMTApO1xuICAgIGNvbnN0IGNvbHMgPSBwYXJzZUludChjb2xzTWF0Y2hbMV0sIDEwKTtcbiAgICBpZiAocm93cyA8IDEgfHwgY29scyA8IDEpIHtcbiAgICAgIHRoaXMubWF0cml4RXJyb3IgPSAnUm93cyBhbmQgY29sdW1ucyBtdXN0IGJlIGF0IGxlYXN0IDEuJztcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocm93cyA+IE5ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5NQVhfRElNXG4gICAgICB8fCBjb2xzID4gTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50Lk1BWF9ESU0pIHtcbiAgICAgIHRoaXMubWF0cml4RXJyb3IgPSBgUm93cyBhbmQgY29sdW1ucyBjYW4gYmUgYXQgbW9zdCAke05ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5NQVhfRElNfS5gO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMubWF0cml4RXJyb3IgPSBudWxsO1xuICAgIHJldHVybiB7IHJvd3MsIGNvbHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFbnZDb25maWcoZW52czogVGRwRW52aXJvbm1lbnRPcHRpb25bXSk6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB7XG4gICAgY29uc3Qgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSAoZW52cyB8fCBbXSkubWFwKGUgPT4gKHtcbiAgICAgIGlkOiBlLmlkLFxuICAgICAgdmFsdWU6IGUuaWQsXG4gICAgICBuYW1lOiBlLm5hbWUsXG4gICAgICBsYWJlbDogZS5uYW1lLFxuICAgICAgc3RhdHVzQ29sb3I6IGUuY29sb3IsXG4gICAgfSkpO1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdlbnZpcm9ubWVudElkcycsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBlbnZpcm9ubWVudHPigKYnLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgb3B0aW9uU3R5bGU6ICdjaGVja2JveCcsXG4gICAgICBzaG93U2VsZWN0QWxsOiBmYWxzZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEdXBsaWNhdGVOYW1lKGNhbmRpZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSAodGhpcy5leGlzdGluZ05hbWVzID8/IFtdKS5tYXAobiA9PiAobiA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IGxvd2VyZWQgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gKHRoaXMuaW5pdGlhbFZhbHVlPy5uYW1lID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBsb3dlcmVkICE9PSBvcmlnaW5hbCAmJiBleGlzdGluZy5pbmNsdWRlcyhsb3dlcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nLmluY2x1ZGVzKGxvd2VyZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdy1mdWxsXCI+XG5cbiAgPCEtLSBOYW1lICsgUGVybWlzc2lvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtWzFmcl9hdXRvXSBjcWEtZ2FwLTQgY3FhLWl0ZW1zLXN0YXJ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgbGFiZWw9XCJQcm9maWxlIG5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4gR3Vlc3QgUGVyc29uYXNcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFt2YWx1ZV09XCJuYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JzXT1cIm5hbWVFcnJvcnNBcnJheVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbk5hbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1tYi0xLjUgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+UGVybWlzc2lvbjwvbGFiZWw+XG4gICAgICA8Y3FhLXBlcm1pc3Npb24tdG9nZ2xlXG4gICAgICAgIFt2YWx1ZV09XCJyZWFkV3JpdGVNb2RlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGVybWlzc2lvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1wZXJtaXNzaW9uLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBkYXRhIGlzIHRoaXMgcHJvZmlsZSBmb3I/XCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFt2YWx1ZV09XCJkZXNjcmlwdGlvblwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSb3dzICsgQ29sdW1ucyBtYXRyaXggLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIj5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiUm93c1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiAyXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFt2YWx1ZV09XCJyb3dzSW5wdXRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Sb3dzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiAzXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFt2YWx1ZV09XCJjb2x1bW5zSW5wdXRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Db2x1bW5zQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiAqbmdJZj1cIm1hdHJpeEVycm9yXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1yZWQtNjAwXCI+e3sgbWF0cml4RXJyb3IgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhbWF0cml4RXJyb3JcIiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LWdyYXktNTAwXCI+XG4gICAgICBEZWZhdWx0cyB0byA8Y29kZT5yb3dfMeKApnJvd19OPC9jb2RlPiBhbmQgPGNvZGU+Y29sXzHigKZjb2xfTTwvY29kZT4uXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIEFzc2lnbiB0byBlbnZpcm9ubWVudHMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+XG4gICAgICBBc3NpZ24gdG8gZW52aXJvbm1lbnRzIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTYwMFwiPio8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICBbZm9ybV09XCJlbnZGb3JtXCJcbiAgICAgIFtjb25maWddPVwiZW52Q29uZmlnXCI+XG4gICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgPHNwYW4gKm5nSWY9XCJlbnZzRXJyb3JcIiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LXJlZC02MDBcIj57eyBlbnZzRXJyb3IgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhZW52c0Vycm9yXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgRWFjaCBlbnZpcm9ubWVudCBnZXRzIGFuIGluZGVwZW5kZW50IGNvcHkgb2YgdGhlIGRhdGEgKHNhbWUgY29sdW1ucywgc2VwYXJhdGUgcm93cykuXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy10ZXN0LWRhdGEtcHJvZmlsZS1kaWFsb2cvbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL25ldy10ZXN0LWRhdGEtcHJvZmlsZS1kaWFsb2cvbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWtCeEQsTUFBTSxPQUFPLGlDQUFpQztJQXdCNUMsWUFBNkIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFwQjFDLFNBQUksR0FBc0IsUUFBUSxDQUFDO1FBRW5DLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGlCQUFZLEdBQTJCLEVBQUUsQ0FBQztRQUU1QyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsa0JBQWEsR0FBd0IsSUFBSSxDQUFDO1FBQzFDLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFDaEIsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFFVixZQUFPLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDdEMsY0FBYyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFDSSxjQUFTLEdBQTZCLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUQsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsZ0JBQVcsR0FBa0Is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USxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBNUx1QiwrQ0FBYSxHQUFHLGVBQWdCLENBQUE7QUFDaEMseUNBQU8sR0FBRyxHQUFJLENBQUE7OEhBRjNCLGlDQUFpQztrSEFBakMsaUNBQWlDLG9SQ25COUMseTZGQWtGQTsyRkQvRGEsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLGtDQUFrQyxtQkFFM0IsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFO3dHQU16RCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLFxuICBTZWxlY3RPcHRpb24sXG59IGZyb20gJy4uL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBUZHBEaWFsb2dQZXJtaXNzaW9uLFxuICBUZHBEaWFsb2dWYWx1ZSxcbiAgVGRwRW52aXJvbm1lbnRPcHRpb24sXG59IGZyb20gJy4vbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZy5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbmV3LXRlc3QtZGF0YS1wcm9maWxlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXctdGVzdC1kYXRhLXByb2ZpbGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcsIHN0eWxlOiAnZGlzcGxheTpibG9jazt3aWR0aDoxMDAlOycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5URUdFUl9SRUdFWCA9IC9eXFxzKihcXGQrKVxccyokLztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX0RJTSA9IDEwMDtcblxuICBASW5wdXQoKSBtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyA9ICdjcmVhdGUnO1xuICBASW5wdXQoKSBpbml0aWFsVmFsdWU/OiBQYXJ0aWFsPFRkcERpYWxvZ1ZhbHVlPjtcbiAgQElucHV0KCkgZXhpc3RpbmdOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZW52aXJvbm1lbnRzOiBUZHBFbnZpcm9ubWVudE9wdGlvbltdID0gW107XG5cbiAgcHVibGljIG5hbWUgPSAnJztcbiAgcHVibGljIGRlc2NyaXB0aW9uID0gJyc7XG4gIHB1YmxpYyByZWFkV3JpdGVNb2RlOiBUZHBEaWFsb2dQZXJtaXNzaW9uID0gJ1JXJztcbiAgcHVibGljIHJvd3NJbnB1dCA9ICcxJztcbiAgcHVibGljIGNvbHVtbnNJbnB1dCA9ICcxJztcblxuICBwdWJsaWMgcmVhZG9ubHkgZW52Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGVudmlyb25tZW50SWRzOiBuZXcgRm9ybUNvbnRyb2woW10pLFxuICB9KTtcbiAgcHVibGljIGVudkNvbmZpZzogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnID0gdGhpcy5idWlsZEVudkNvbmZpZyhbXSk7XG5cbiAgcHVibGljIG5hbWVFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBtYXRyaXhFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBlbnZzRXJyb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMubmFtZSA9IHRoaXMuaW5pdGlhbFZhbHVlLm5hbWUgPz8gJyc7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5pbml0aWFsVmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSB0aGlzLmluaXRpYWxWYWx1ZS5yZWFkV3JpdGVNb2RlID8/ICdSVyc7XG4gICAgICBjb25zdCBjb2xDb3VudCA9IHRoaXMuaW5pdGlhbFZhbHVlLmNvbHVtbnM/Lmxlbmd0aCA/PyAxO1xuICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLmluaXRpYWxWYWx1ZS5yb3dzPy5sZW5ndGggPz8gMTtcbiAgICAgIHRoaXMucm93c0lucHV0ID0gU3RyaW5nKHJvd0NvdW50KTtcbiAgICAgIHRoaXMuY29sdW1uc0lucHV0ID0gU3RyaW5nKGNvbENvdW50KTtcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuaW5pdGlhbFZhbHVlLmVudmlyb25tZW50SWRzID8/IFtdO1xuICAgICAgdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEuc2V0VmFsdWUoaWRzKTtcbiAgICB9XG4gICAgdGhpcy5lbnZDb25maWcgPSB0aGlzLmJ1aWxkRW52Q29uZmlnKHRoaXMuZW52aXJvbm1lbnRzID8/IFtdKTtcblxuICAgIC8vIENsZWFyIGVudnMgZXJyb3IgYXMgc29vbiBhcyB0aGUgdXNlciBwaWNrcyBzb21ldGhpbmcuXG4gICAgdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lbnZzRXJyb3IpIHtcbiAgICAgICAgdGhpcy5lbnZzRXJyb3IgPSBudWxsO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAnRWRpdCB0ZXN0IGRhdGEgcHJvZmlsZScgOiAnTmV3IHRlc3QgZGF0YSBwcm9maWxlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0RlZmluZSB0aGUgbWF0cml4OyBkYXRhIHZhbHVlcyBjYW4gYmUgYWRkZWQgcGVyIGVudmlyb25tZW50IGFmdGVyIGNyZWF0aW9uLic7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaW1hcnlCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JyA/ICdTYXZlIGNoYW5nZXMnIDogJ0NyZWF0ZSBwcm9maWxlJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZUVycm9yc0FycmF5KCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMubmFtZUVycm9yID8gW3RoaXMubmFtZUVycm9yXSA6IFtdOyB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZEVudklkcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5lbnZGb3JtLmdldCgnZW52aXJvbm1lbnRJZHMnKSEudmFsdWUgPz8gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IFtdO1xuICB9XG5cbiAgcHVibGljIG9uTmFtZUNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm5hbWUgPSBuZXh0O1xuICAgIHRoaXMubmFtZUVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlc2NyaXB0aW9uQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBuZXh0O1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uUGVybWlzc2lvbkNoYW5nZShuZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRXcml0ZU1vZGUgPSBuZXh0ID09PSAnUk8nID8gJ1JPJyA6ICdSVyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dzQ2hhbmdlKG5leHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucm93c0lucHV0ID0gbmV4dCA/PyAnJztcbiAgICB0aGlzLm1hdHJpeEVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbHVtbnNDaGFuZ2UobmV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zSW5wdXQgPSBuZXh0ID8/ICcnO1xuICAgIHRoaXMubWF0cml4RXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlKCk6IFRkcERpYWxvZ1ZhbHVlIHwgbnVsbCB7XG4gICAgY29uc3QgdHJpbW1lZE5hbWUgPSB0aGlzLm5hbWUudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZE5hbWUpIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gJ05hbWUgaXMgcmVxdWlyZWQuJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEdXBsaWNhdGVOYW1lKHRyaW1tZWROYW1lKSkge1xuICAgICAgdGhpcy5uYW1lRXJyb3IgPSAnQSBwcm9maWxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZUVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlTWF0cml4KCk7XG5cbiAgICBjb25zdCBlbnZJZHMgPSB0aGlzLnNlbGVjdGVkRW52SWRzO1xuICAgIGlmICghZW52SWRzIHx8IGVudklkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZW52c0Vycm9yID0gJ1NlbGVjdCBhdCBsZWFzdCBvbmUgZW52aXJvbm1lbnQgdG8gYXNzaWduIHRoaXMgcHJvZmlsZSB0by4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVudnNFcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmFtZUVycm9yIHx8IHRoaXMubWF0cml4RXJyb3IgfHwgdGhpcy5lbnZzRXJyb3IgfHwgIXBhcnNlZCkge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFyc2VkLmNvbHMgfSwgKF8sIGkpID0+IGBjb2xfJHtpICsgMX1gKTtcbiAgICBjb25zdCByb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFyc2VkLnJvd3MgfSwgKF8sIGkpID0+IGByb3dfJHtpICsgMX1gKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0cmltbWVkTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnRyaW0oKSB8fCBudWxsLFxuICAgICAgcmVhZFdyaXRlTW9kZTogdGhpcy5yZWFkV3JpdGVNb2RlLFxuICAgICAgY29sdW1uczogY29scyxcbiAgICAgIHJvd3MsXG4gICAgICBlbnZpcm9ubWVudElkczogdGhpcy5zZWxlY3RlZEVudklkcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZU1hdHJpeCgpOiB7IHJvd3M6IG51bWJlcjsgY29sczogbnVtYmVyIH0gfCBudWxsIHtcbiAgICBjb25zdCByYXdSb3dzID0gKHRoaXMucm93c0lucHV0ID8/ICcnKS50cmltKCk7XG4gICAgY29uc3QgcmF3Q29scyA9ICh0aGlzLmNvbHVtbnNJbnB1dCA/PyAnJykudHJpbSgpO1xuICAgIGlmICghcmF3Um93cyB8fCAhcmF3Q29scykge1xuICAgICAgdGhpcy5tYXRyaXhFcnJvciA9ICdSb3dzIGFuZCBjb2x1bW5zIGFyZSByZXF1aXJlZC4nO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvd3NNYXRjaCA9IE5ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5JTlRFR0VSX1JFR0VYLmV4ZWMocmF3Um93cyk7XG4gICAgY29uc3QgY29sc01hdGNoID0gTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50LklOVEVHRVJfUkVHRVguZXhlYyhyYXdDb2xzKTtcbiAgICBpZiAoIXJvd3NNYXRjaCB8fCAhY29sc01hdGNoKSB7XG4gICAgICB0aGlzLm1hdHJpeEVycm9yID0gJ1Jvd3MgYW5kIGNvbHVtbnMgbXVzdCBiZSB3aG9sZSBudW1iZXJzLic7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHBhcnNlSW50KHJvd3NNYXRjaFsxXSwgMTApO1xuICAgIGNvbnN0IGNvbHMgPSBwYXJzZUludChjb2xzTWF0Y2hbMV0sIDEwKTtcbiAgICBpZiAocm93cyA8IDEgfHwgY29scyA8IDEpIHtcbiAgICAgIHRoaXMubWF0cml4RXJyb3IgPSAnUm93cyBhbmQgY29sdW1ucyBtdXN0IGJlIGF0IGxlYXN0IDEuJztcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocm93cyA+IE5ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5NQVhfRElNXG4gICAgICB8fCBjb2xzID4gTmV3VGVzdERhdGFQcm9maWxlRGlhbG9nQ29tcG9uZW50Lk1BWF9ESU0pIHtcbiAgICAgIHRoaXMubWF0cml4RXJyb3IgPSBgUm93cyBhbmQgY29sdW1ucyBjYW4gYmUgYXQgbW9zdCAke05ld1Rlc3REYXRhUHJvZmlsZURpYWxvZ0NvbXBvbmVudC5NQVhfRElNfS5gO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMubWF0cml4RXJyb3IgPSBudWxsO1xuICAgIHJldHVybiB7IHJvd3MsIGNvbHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFbnZDb25maWcoZW52czogVGRwRW52aXJvbm1lbnRPcHRpb25bXSk6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB7XG4gICAgY29uc3Qgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSAoZW52cyB8fCBbXSkubWFwKGUgPT4gKHtcbiAgICAgIGlkOiBlLmlkLFxuICAgICAgdmFsdWU6IGUuaWQsXG4gICAgICBuYW1lOiBlLm5hbWUsXG4gICAgICBsYWJlbDogZS5uYW1lLFxuICAgICAgc3RhdHVzQ29sb3I6IGUuY29sb3IsXG4gICAgfSkpO1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdlbnZpcm9ubWVudElkcycsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBlbnZpcm9ubWVudHPigKYnLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgb3B0aW9uU3R5bGU6ICdjaGVja2JveCcsXG4gICAgICBzaG93U2VsZWN0QWxsOiBmYWxzZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEdXBsaWNhdGVOYW1lKGNhbmRpZGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSAodGhpcy5leGlzdGluZ05hbWVzID8/IFtdKS5tYXAobiA9PiAobiA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IGxvd2VyZWQgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gKHRoaXMuaW5pdGlhbFZhbHVlPy5uYW1lID8/ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBsb3dlcmVkICE9PSBvcmlnaW5hbCAmJiBleGlzdGluZy5pbmNsdWRlcyhsb3dlcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nLmluY2x1ZGVzKGxvd2VyZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdy1mdWxsXCI+XG5cbiAgPCEtLSBOYW1lICsgUGVybWlzc2lvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtWzFmcl9hdXRvXSBjcWEtZ2FwLTQgY3FhLWl0ZW1zLXN0YXJ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgbGFiZWw9XCJQcm9maWxlIG5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4gR3Vlc3QgUGVyc29uYXNcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFt2YWx1ZV09XCJuYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JzXT1cIm5hbWVFcnJvcnNBcnJheVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbk5hbWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1tYi0xLjUgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+UGVybWlzc2lvbjwvbGFiZWw+XG4gICAgICA8Y3FhLXBlcm1pc3Npb24tdG9nZ2xlXG4gICAgICAgIFt2YWx1ZV09XCJyZWFkV3JpdGVNb2RlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGVybWlzc2lvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1wZXJtaXNzaW9uLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBkYXRhIGlzIHRoaXMgcHJvZmlsZSBmb3I/XCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFt2YWx1ZV09XCJkZXNjcmlwdGlvblwiXG4gICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGVzY3JpcHRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSb3dzICsgQ29sdW1ucyBtYXRyaXggLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBjcWEtZ2FwLTRcIj5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiUm93c1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiAyXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFt2YWx1ZV09XCJyb3dzSW5wdXRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Sb3dzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiAzXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFt2YWx1ZV09XCJjb2x1bW5zSW5wdXRcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Db2x1bW5zQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiAqbmdJZj1cIm1hdHJpeEVycm9yXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC14cyBjcWEtdGV4dC1yZWQtNjAwXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtZmxleC1ub25lXCIgc3R5bGU9XCJmb250LXNpemU6MTRweDt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7XCI+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3sgbWF0cml4RXJyb3IgfX08L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIEFzc2lnbiB0byBlbnZpcm9ubWVudHMgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWdyYXktNzAwXCI+XG4gICAgICBBc3NpZ24gdG8gZW52aXJvbm1lbnRzIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTYwMFwiPio8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICBbZm9ybV09XCJlbnZGb3JtXCJcbiAgICAgIFtjb25maWddPVwiZW52Q29uZmlnXCI+XG4gICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgPHNwYW4gKm5nSWY9XCJlbnZzRXJyb3JcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LXhzIGNxYS10ZXh0LXJlZC02MDBcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS1mbGV4LW5vbmVcIiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4O3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtcIj5lcnJvcjwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57eyBlbnZzRXJyb3IgfX08L3NwYW4+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiIWVudnNFcnJvclwiIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtZ3JheS01MDBcIj5cbiAgICAgIEVhY2ggZW52aXJvbm1lbnQgZ2V0cyBhbiBpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBkYXRhIChzYW1lIGNvbHVtbnMsIHNlcGFyYXRlIHJvd3MpLlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
|
|
@@ -53651,6 +53651,10 @@ class NewTestDataProfileDialogComponent {
|
|
|
53651
53651
|
var _a, _b;
|
|
53652
53652
|
const rawRows = ((_a = this.rowsInput) !== null && _a !== void 0 ? _a : '').trim();
|
|
53653
53653
|
const rawCols = ((_b = this.columnsInput) !== null && _b !== void 0 ? _b : '').trim();
|
|
53654
|
+
if (!rawRows || !rawCols) {
|
|
53655
|
+
this.matrixError = 'Rows and columns are required.';
|
|
53656
|
+
return null;
|
|
53657
|
+
}
|
|
53654
53658
|
const rowsMatch = NewTestDataProfileDialogComponent.INTEGER_REGEX.exec(rawRows);
|
|
53655
53659
|
const colsMatch = NewTestDataProfileDialogComponent.INTEGER_REGEX.exec(rawCols);
|
|
53656
53660
|
if (!rowsMatch || !colsMatch) {
|
|
@@ -53704,10 +53708,10 @@ class NewTestDataProfileDialogComponent {
|
|
|
53704
53708
|
NewTestDataProfileDialogComponent.INTEGER_REGEX = /^\s*(\d+)\s*$/;
|
|
53705
53709
|
NewTestDataProfileDialogComponent.MAX_DIM = 100;
|
|
53706
53710
|
NewTestDataProfileDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewTestDataProfileDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
53707
|
-
NewTestDataProfileDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewTestDataProfileDialogComponent, selector: "cqa-new-test-data-profile-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames", environments: "environments" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-text-xs cqa-text-red-600\"
|
|
53711
|
+
NewTestDataProfileDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewTestDataProfileDialogComponent, selector: "cqa-new-test-data-profile-dialog", inputs: { mode: "mode", initialValue: "initialValue", existingNames: "existingNames", environments: "environments" }, host: { styleAttribute: "display:block;width:100%;", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ matrixError }}</span>\n </span>\n </div>\n\n <!-- Assign to environments -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700\">\n Assign to environments <span class=\"cqa-text-red-600\">*</span>\n </label>\n <cqa-dynamic-select\n [form]=\"envForm\"\n [config]=\"envConfig\">\n </cqa-dynamic-select>\n <span *ngIf=\"envsError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ envsError }}</span>\n </span>\n <span *ngIf=\"!envsError\" class=\"cqa-text-xs cqa-text-gray-500\">\n Each environment gets an independent copy of the data (same columns, separate rows).\n </span>\n </div>\n\n</div>\n", components: [{ type: CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: PermissionToggleComponent, selector: "cqa-permission-toggle", inputs: ["value", "disabled", "displayOnly", "roTooltip", "rwTooltip"], outputs: ["valueChange"] }, { type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"], outputs: ["selectionChange", "selectClick", "searchChange", "loadMore", "addCustomValue"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
53708
53712
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewTestDataProfileDialogComponent, decorators: [{
|
|
53709
53713
|
type: Component,
|
|
53710
|
-
args: [{ selector: 'cqa-new-test-data-profile-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-text-xs cqa-text-red-600\"
|
|
53714
|
+
args: [{ selector: 'cqa-new-test-data-profile-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root', style: 'display:block;width:100%;' }, template: "<div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-w-full\">\n\n <!-- Name + Permission -->\n <div class=\"cqa-grid cqa-grid-cols-[1fr_auto] cqa-gap-4 cqa-items-start\">\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Profile name\"\n placeholder=\"e.g. Guest Personas\"\n type=\"text\"\n [value]=\"name\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [errors]=\"nameErrorsArray\"\n (valueChange)=\"onNameChange($event)\">\n </cqa-custom-input>\n </div>\n <div class=\"cqa-flex cqa-flex-col\">\n <label class=\"cqa-text-sm cqa-mb-1.5 cqa-font-medium cqa-text-gray-700\">Permission</label>\n <cqa-permission-toggle\n [value]=\"readWriteMode\"\n (valueChange)=\"onPermissionChange($event)\">\n </cqa-permission-toggle>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"cqa-flex cqa-flex-col\">\n <cqa-custom-input\n label=\"Description\"\n placeholder=\"What data is this profile for?\"\n type=\"text\"\n [value]=\"description\"\n [fullWidth]=\"true\"\n (valueChange)=\"onDescriptionChange($event)\">\n </cqa-custom-input>\n </div>\n\n <!-- Rows + Columns matrix -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <div class=\"cqa-grid cqa-grid-cols-2 cqa-gap-4\">\n <cqa-custom-input\n label=\"Rows\"\n placeholder=\"e.g. 2\"\n type=\"number\"\n [value]=\"rowsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onRowsChange($event)\">\n </cqa-custom-input>\n <cqa-custom-input\n label=\"Columns\"\n placeholder=\"e.g. 3\"\n type=\"number\"\n [value]=\"columnsInput\"\n [fullWidth]=\"true\"\n (valueChange)=\"onColumnsChange($event)\">\n </cqa-custom-input>\n </div>\n <span *ngIf=\"matrixError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ matrixError }}</span>\n </span>\n </div>\n\n <!-- Assign to environments -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-gray-700\">\n Assign to environments <span class=\"cqa-text-red-600\">*</span>\n </label>\n <cqa-dynamic-select\n [form]=\"envForm\"\n [config]=\"envConfig\">\n </cqa-dynamic-select>\n <span *ngIf=\"envsError\" class=\"cqa-flex cqa-items-center cqa-gap-1 cqa-text-xs cqa-text-red-600\">\n <mat-icon class=\"cqa-flex-none\" style=\"font-size:14px;width:14px;height:14px;line-height:14px;\">error</mat-icon>\n <span>{{ envsError }}</span>\n </span>\n <span *ngIf=\"!envsError\" class=\"cqa-text-xs cqa-text-gray-500\">\n Each environment gets an independent copy of the data (same columns, separate rows).\n </span>\n </div>\n\n</div>\n" }]
|
|
53711
53715
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { mode: [{
|
|
53712
53716
|
type: Input
|
|
53713
53717
|
}], initialValue: [{
|