@cqa-lib/cqa-ui 1.1.542-gamma.13 → 1.1.542-gamma.14

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.
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../badge/badge.component";
4
+ import * as i2 from "@angular/common";
5
+ export class AvailableVariableRowComponent {
6
+ constructor() {
7
+ this.name = '';
8
+ this.source = 'env';
9
+ this.permission = 'RW';
10
+ this.expanded = false;
11
+ this.expandedChange = new EventEmitter();
12
+ }
13
+ toggle() {
14
+ this.expanded = !this.expanded;
15
+ this.expandedChange.emit(this.expanded);
16
+ }
17
+ get sourceLabel() {
18
+ switch (this.source) {
19
+ case 'env': return 'ENV';
20
+ case 'global': return 'GLOBAL';
21
+ case 'local': return 'LOCAL';
22
+ }
23
+ }
24
+ get sourceVariant() {
25
+ switch (this.source) {
26
+ case 'env': return 'info';
27
+ case 'global': return 'default';
28
+ case 'local': return 'success';
29
+ }
30
+ }
31
+ get sourceLabel_() { return this.sourceLabel; }
32
+ }
33
+ AvailableVariableRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AvailableVariableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ AvailableVariableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AvailableVariableRowComponent, selector: "cqa-available-variable-row", inputs: { name: "name", value: "value", type: "type", source: "source", permission: "permission", environmentName: "environmentName", expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <!-- Header card \u2014 turns lavender + purple-ringed when expanded. -->\n <div\n [ngClass]=\"expanded\n ? 'cqa-border-[#818CF8] cqa-bg-[#EEF2FF]'\n : 'cqa-border-[#E2E8F0] cqa-bg-white hover:cqa-bg-[#FAFAFF]'\"\n class=\"cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-transition-colors cqa-duration-150\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-w-full cqa-px-[10px] cqa-py-[10px] cqa-bg-transparent cqa-border-0 cqa-cursor-pointer cqa-text-left focus:cqa-outline-none\">\n <span\n class=\"cqa-flex-shrink-0 cqa-text-[#475569] cqa-text-base cqa-leading-none cqa-w-4 cqa-text-center\"\n [style.transform]=\"expanded ? 'rotate(90deg)' : 'none'\"\n [style.transition]=\"'transform 120ms ease-out'\">&rsaquo;</span>\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"source === 'env'\"\n label=\"ENV\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EDE9FE\"\n textColor=\"#5B21B6\"\n borderColor=\"#DDD6FE\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'global'\"\n label=\"GLOBAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#CFFAFE\"\n textColor=\"#0E7490\"\n borderColor=\"#A5F3FC\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'local'\"\n label=\"LOCAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RO'\"\n label=\"RO\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#FFE4E6\"\n textColor=\"#BE123C\"\n borderColor=\"#FECDD3\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RW'\"\n label=\"RW\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n </button>\n </div>\n\n <!-- Detail card \u2014 separate card sitting below the header card when expanded.\n Matches Figma: own border, own padding, own rounded corners, slight gap above. -->\n <div\n *ngIf=\"expanded\"\n class=\"cqa-w-[calc(100%-14px)] cqa-mt-1 cqa-ml-2 cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-text-xs\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B728080]\">Value</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\" [title]=\"value || ''\">{{ value || '\u2014' }}</span>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B7280]\">Type</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\">\n {{ type || 'String' }}<ng-container *ngIf=\"environmentName\"> &middot; {{ environmentName }} Environment</ng-container>\n </span>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AvailableVariableRowComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'cqa-available-variable-row', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <!-- Header card \u2014 turns lavender + purple-ringed when expanded. -->\n <div\n [ngClass]=\"expanded\n ? 'cqa-border-[#818CF8] cqa-bg-[#EEF2FF]'\n : 'cqa-border-[#E2E8F0] cqa-bg-white hover:cqa-bg-[#FAFAFF]'\"\n class=\"cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-transition-colors cqa-duration-150\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-w-full cqa-px-[10px] cqa-py-[10px] cqa-bg-transparent cqa-border-0 cqa-cursor-pointer cqa-text-left focus:cqa-outline-none\">\n <span\n class=\"cqa-flex-shrink-0 cqa-text-[#475569] cqa-text-base cqa-leading-none cqa-w-4 cqa-text-center\"\n [style.transform]=\"expanded ? 'rotate(90deg)' : 'none'\"\n [style.transition]=\"'transform 120ms ease-out'\">&rsaquo;</span>\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"source === 'env'\"\n label=\"ENV\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EDE9FE\"\n textColor=\"#5B21B6\"\n borderColor=\"#DDD6FE\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'global'\"\n label=\"GLOBAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#CFFAFE\"\n textColor=\"#0E7490\"\n borderColor=\"#A5F3FC\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'local'\"\n label=\"LOCAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RO'\"\n label=\"RO\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#FFE4E6\"\n textColor=\"#BE123C\"\n borderColor=\"#FECDD3\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RW'\"\n label=\"RW\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n </button>\n </div>\n\n <!-- Detail card \u2014 separate card sitting below the header card when expanded.\n Matches Figma: own border, own padding, own rounded corners, slight gap above. -->\n <div\n *ngIf=\"expanded\"\n class=\"cqa-w-[calc(100%-14px)] cqa-mt-1 cqa-ml-2 cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-text-xs\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B728080]\">Value</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\" [title]=\"value || ''\">{{ value || '\u2014' }}</span>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B7280]\">Type</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\">\n {{ type || 'String' }}<ng-container *ngIf=\"environmentName\"> &middot; {{ environmentName }} Environment</ng-container>\n </span>\n </div>\n </div>\n </div>\n</div>\n" }]
38
+ }], propDecorators: { name: [{
39
+ type: Input
40
+ }], value: [{
41
+ type: Input
42
+ }], type: [{
43
+ type: Input
44
+ }], source: [{
45
+ type: Input
46
+ }], permission: [{
47
+ type: Input
48
+ }], environmentName: [{
49
+ type: Input
50
+ }], expanded: [{
51
+ type: Input
52
+ }], expandedChange: [{
53
+ type: Output
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhaWxhYmxlLXZhcmlhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3ZhcmlhYmxlcy1wYW5lbC9hdmFpbGFibGUtdmFyaWFibGUtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvdmFyaWFibGVzLXBhbmVsL2F2YWlsYWJsZS12YXJpYWJsZS1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkIsTUFBTSxPQUFPLDZCQUE2QjtJQU4xQztRQU9XLFNBQUksR0FBRyxFQUFFLENBQUM7UUFHVixXQUFNLEdBQW1CLEtBQUssQ0FBQztRQUMvQixlQUFVLEdBQXVCLElBQUksQ0FBQztRQUV0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQXdCeEQ7SUF0QkMsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ25CLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7WUFDekIsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztZQUMvQixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDO1lBQzFCLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUM7WUFDaEMsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxJQUFJLFlBQVksS0FBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDOzswSEFoQzVDLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLHdUQ2YxQyxxK0dBcUZBOzJGRHRFYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsNEJBQTRCLFFBRWhDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYXJpYWJsZVBlcm1pc3Npb24sIFZhcmlhYmxlU291cmNlIH0gZnJvbSAnLi92YXJpYWJsZXMtcGFuZWwubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWF2YWlsYWJsZS12YXJpYWJsZS1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhaWxhYmxlLXZhcmlhYmxlLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEF2YWlsYWJsZVZhcmlhYmxlUm93Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgdHlwZT86IHN0cmluZztcbiAgQElucHV0KCkgc291cmNlOiBWYXJpYWJsZVNvdXJjZSA9ICdlbnYnO1xuICBASW5wdXQoKSBwZXJtaXNzaW9uOiBWYXJpYWJsZVBlcm1pc3Npb24gPSAnUlcnO1xuICBASW5wdXQoKSBlbnZpcm9ubWVudE5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xuICB9XG5cbiAgZ2V0IHNvdXJjZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnNvdXJjZSkge1xuICAgICAgY2FzZSAnZW52JzogcmV0dXJuICdFTlYnO1xuICAgICAgY2FzZSAnZ2xvYmFsJzogcmV0dXJuICdHTE9CQUwnO1xuICAgICAgY2FzZSAnbG9jYWwnOiByZXR1cm4gJ0xPQ0FMJztcbiAgICB9XG4gIH1cblxuICBnZXQgc291cmNlVmFyaWFudCgpOiAnZGVmYXVsdCcgfCAnaW5mbycgfCAnc3VjY2Vzcycge1xuICAgIHN3aXRjaCAodGhpcy5zb3VyY2UpIHtcbiAgICAgIGNhc2UgJ2Vudic6IHJldHVybiAnaW5mbyc7XG4gICAgICBjYXNlICdnbG9iYWwnOiByZXR1cm4gJ2RlZmF1bHQnO1xuICAgICAgY2FzZSAnbG9jYWwnOiByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzb3VyY2VMYWJlbF8oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc291cmNlTGFiZWw7IH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLXctZnVsbFwiPlxuICA8IS0tIEhlYWRlciBjYXJkIOKAlCB0dXJucyBsYXZlbmRlciArIHB1cnBsZS1yaW5nZWQgd2hlbiBleHBhbmRlZC4gLS0+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJleHBhbmRlZFxuICAgICAgPyAnY3FhLWJvcmRlci1bIzgxOENGOF0gY3FhLWJnLVsjRUVGMkZGXSdcbiAgICAgIDogJ2NxYS1ib3JkZXItWyNFMkU4RjBdIGNxYS1iZy13aGl0ZSBob3ZlcjpjcWEtYmctWyNGQUZBRkZdJ1wiXG4gICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLWR1cmF0aW9uLTE1MFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXctZnVsbCBjcWEtcHgtWzEwcHhdIGNxYS1weS1bMTBweF0gY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItMCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRleHQtbGVmdCBmb2N1czpjcWEtb3V0bGluZS1ub25lXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjNDc1NTY5XSBjcWEtdGV4dC1iYXNlIGNxYS1sZWFkaW5nLW5vbmUgY3FhLXctNCBjcWEtdGV4dC1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cImV4cGFuZGVkID8gJ3JvdGF0ZSg5MGRlZyknIDogJ25vbmUnXCJcbiAgICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiJ3RyYW5zZm9ybSAxMjBtcyBlYXNlLW91dCdcIj4mcnNhcXVvOzwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMCBjcWEtdHJ1bmNhdGUgY3FhLXRleHQtWzEzcHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEYxNzJBXVwiPlxuICAgICAgICB7eyBuYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICpuZ0lmPVwic291cmNlID09PSAnZW52J1wiXG4gICAgICAgIGxhYmVsPVwiRU5WXCJcbiAgICAgICAgc2l6ZT1cImV4dHJhLXNtYWxsXCJcbiAgICAgICAgdmFyaWFudD1cImRlZmF1bHRcIlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjRURFOUZFXCJcbiAgICAgICAgdGV4dENvbG9yPVwiIzVCMjFCNlwiXG4gICAgICAgIGJvcmRlckNvbG9yPVwiI0RERDZGRVwiPlxuICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICpuZ0lmPVwic291cmNlID09PSAnZ2xvYmFsJ1wiXG4gICAgICAgIGxhYmVsPVwiR0xPQkFMXCJcbiAgICAgICAgc2l6ZT1cImV4dHJhLXNtYWxsXCJcbiAgICAgICAgdmFyaWFudD1cImRlZmF1bHRcIlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjQ0ZGQUZFXCJcbiAgICAgICAgdGV4dENvbG9yPVwiIzBFNzQ5MFwiXG4gICAgICAgIGJvcmRlckNvbG9yPVwiI0E1RjNGQ1wiPlxuICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICpuZ0lmPVwic291cmNlID09PSAnbG9jYWwnXCJcbiAgICAgICAgbGFiZWw9XCJMT0NBTFwiXG4gICAgICAgIHNpemU9XCJleHRyYS1zbWFsbFwiXG4gICAgICAgIHZhcmlhbnQ9XCJkZWZhdWx0XCJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0QxRkFFNVwiXG4gICAgICAgIHRleHRDb2xvcj1cIiMwNDc4NTdcIlxuICAgICAgICBib3JkZXJDb2xvcj1cIiNBN0YzRDBcIj5cbiAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAqbmdJZj1cInBlcm1pc3Npb24gPT09ICdSTydcIlxuICAgICAgICBsYWJlbD1cIlJPXCJcbiAgICAgICAgc2l6ZT1cImV4dHJhLXNtYWxsXCJcbiAgICAgICAgdmFyaWFudD1cImRlZmF1bHRcIlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjRkZFNEU2XCJcbiAgICAgICAgdGV4dENvbG9yPVwiI0JFMTIzQ1wiXG4gICAgICAgIGJvcmRlckNvbG9yPVwiI0ZFQ0REM1wiPlxuICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICpuZ0lmPVwicGVybWlzc2lvbiA9PT0gJ1JXJ1wiXG4gICAgICAgIGxhYmVsPVwiUldcIlxuICAgICAgICBzaXplPVwiZXh0cmEtc21hbGxcIlxuICAgICAgICB2YXJpYW50PVwiZGVmYXVsdFwiXG4gICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNEMUZBRTVcIlxuICAgICAgICB0ZXh0Q29sb3I9XCIjMDQ3ODU3XCJcbiAgICAgICAgYm9yZGVyQ29sb3I9XCIjQTdGM0QwXCI+XG4gICAgICA8L2NxYS1iYWRnZT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEZXRhaWwgY2FyZCDigJQgc2VwYXJhdGUgY2FyZCBzaXR0aW5nIGJlbG93IHRoZSBoZWFkZXIgY2FyZCB3aGVuIGV4cGFuZGVkLlxuICAgICAgIE1hdGNoZXMgRmlnbWE6IG93biBib3JkZXIsIG93biBwYWRkaW5nLCBvd24gcm91bmRlZCBjb3JuZXJzLCBzbGlnaHQgZ2FwIGFib3ZlLiAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgIGNsYXNzPVwiY3FhLXctW2NhbGMoMTAwJS0xNHB4KV0gY3FhLW10LTEgY3FhLW1sLTIgY3FhLXJvdW5kZWQtbGcgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFMkU4RjBdIGNxYS1iZy13aGl0ZSBjcWEtcHgtMyBjcWEtcHktWzEwcHhdXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVs2cHhdIGNxYS10ZXh0LXhzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtM1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjNkI3MjgwODBdXCI+VmFsdWU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1pbi13LTAgY3FhLXRleHQtcmlnaHQgY3FhLXRleHQtWyMwRjE3MkFdIGNxYS10cnVuY2F0ZVwiIFt0aXRsZV09XCJ2YWx1ZSB8fCAnJ1wiPnt7IHZhbHVlIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtM1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlR5cGU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1pbi13LTAgY3FhLXRleHQtcmlnaHQgY3FhLXRleHQtWyMwRjE3MkFdIGNxYS10cnVuY2F0ZVwiPlxuICAgICAgICAgIHt7IHR5cGUgfHwgJ1N0cmluZycgfX08bmctY29udGFpbmVyICpuZ0lmPVwiZW52aXJvbm1lbnROYW1lXCI+ICZtaWRkb3Q7IHt7IGVudmlyb25tZW50TmFtZSB9fSBFbnZpcm9ubWVudDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../badge/badge.component";
4
+ import * as i2 from "@angular/common";
5
+ export class UsedProfileRowComponent {
6
+ constructor() {
7
+ this.name = '';
8
+ this.stepRange = '';
9
+ }
10
+ }
11
+ UsedProfileRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UsedProfileRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ UsedProfileRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: UsedProfileRowComponent, selector: "cqa-used-profile-row", inputs: { name: "name", envName: "envName", stepRange: "stepRange" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-w-full\">\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"envName\"\n [label]=\"envName\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EFF6FF\"\n textColor=\"#1E40AF\"\n borderColor=\"#DBEAFE\">\n </cqa-badge>\n </div>\n <div *ngIf=\"stepRange\" class=\"cqa-mt-[2px] cqa-text-[11px] cqa-text-[#64748B] cqa-flex cqa-items-center cqa-gap-1\">\n <span class=\"cqa-leading-none\">&#x21BB;</span>\n <span>{{ stepRange }}</span>\n </div>\n</div>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UsedProfileRowComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'cqa-used-profile-row', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-w-full\">\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"envName\"\n [label]=\"envName\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EFF6FF\"\n textColor=\"#1E40AF\"\n borderColor=\"#DBEAFE\">\n </cqa-badge>\n </div>\n <div *ngIf=\"stepRange\" class=\"cqa-mt-[2px] cqa-text-[11px] cqa-text-[#64748B] cqa-flex cqa-items-center cqa-gap-1\">\n <span class=\"cqa-leading-none\">&#x21BB;</span>\n <span>{{ stepRange }}</span>\n </div>\n</div>\n" }]
16
+ }], propDecorators: { name: [{
17
+ type: Input
18
+ }], envName: [{
19
+ type: Input
20
+ }], stepRange: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlZC1wcm9maWxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3ZhcmlhYmxlcy1wYW5lbC91c2VkLXByb2ZpbGUtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvdmFyaWFibGVzLXBhbmVsL3VzZWQtcHJvZmlsZS1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOzs7O0FBUXZCLE1BQU0sT0FBTyx1QkFBdUI7SUFOcEM7UUFPVyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVYsY0FBUyxHQUFHLEVBQUUsQ0FBQztLQUN6Qjs7b0hBSlksdUJBQXVCO3dHQUF2Qix1QkFBdUIsMktDWnBDLHcxQkFvQkE7MkZEUmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixRQUUxQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdXNlZC1wcm9maWxlLXJvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VkLXByb2ZpbGUtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXNlZFByb2ZpbGVSb3dDb21wb25lbnQge1xuICBASW5wdXQoKSBuYW1lID0gJyc7XG4gIEBJbnB1dCgpIGVudk5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBSYW5nZSA9ICcnO1xufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtdy1mdWxsIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTJFOEYwXSBjcWEtYmctd2hpdGUgY3FhLXB4LTMgY3FhLXB5LVsxMHB4XVwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtdy1mdWxsXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wIGNxYS10cnVuY2F0ZSBjcWEtdGV4dC1bMTNweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwRjE3MkFdXCI+XG4gICAgICB7eyBuYW1lIH19XG4gICAgPC9zcGFuPlxuICAgIDxjcWEtYmFkZ2VcbiAgICAgICpuZ0lmPVwiZW52TmFtZVwiXG4gICAgICBbbGFiZWxdPVwiZW52TmFtZVwiXG4gICAgICBzaXplPVwiZXh0cmEtc21hbGxcIlxuICAgICAgdmFyaWFudD1cImRlZmF1bHRcIlxuICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0VGRjZGRlwiXG4gICAgICB0ZXh0Q29sb3I9XCIjMUU0MEFGXCJcbiAgICAgIGJvcmRlckNvbG9yPVwiI0RCRUFGRVwiPlxuICAgIDwvY3FhLWJhZGdlPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInN0ZXBSYW5nZVwiIGNsYXNzPVwiY3FhLW10LVsycHhdIGNxYS10ZXh0LVsxMXB4XSBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNxYS1sZWFkaW5nLW5vbmVcIj4mI3gyMUJCOzwvc3Bhbj5cbiAgICA8c3Bhbj57eyBzdGVwUmFuZ2UgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../badge/badge.component";
4
+ import * as i2 from "@angular/common";
5
+ export class UsedVariableRowComponent {
6
+ constructor() {
7
+ this.name = '';
8
+ this.source = 'env';
9
+ this.permission = 'RW';
10
+ this.stepLabel = '';
11
+ this.expanded = false;
12
+ this.expandedChange = new EventEmitter();
13
+ }
14
+ toggle() {
15
+ this.expanded = !this.expanded;
16
+ this.expandedChange.emit(this.expanded);
17
+ }
18
+ }
19
+ UsedVariableRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UsedVariableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ UsedVariableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: UsedVariableRowComponent, selector: "cqa-used-variable-row", inputs: { name: "name", value: "value", type: "type", source: "source", permission: "permission", stepLabel: "stepLabel", expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <!-- Header card \u2014 turns lavender + purple-ringed when expanded. -->\n <div\n [ngClass]=\"expanded\n ? 'cqa-border-[#818CF8] cqa-bg-[#EEF2FF]'\n : 'cqa-border-[#E2E8F0] cqa-bg-white hover:cqa-bg-[#FAFAFF]'\"\n class=\"cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-transition-colors cqa-duration-150\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-w-full cqa-px-[10px] cqa-py-[10px] cqa-bg-transparent cqa-border-0 cqa-cursor-pointer cqa-text-left focus:cqa-outline-none\">\n <span\n class=\"cqa-flex-shrink-0 cqa-text-[#475569] cqa-text-base cqa-leading-none cqa-w-4 cqa-text-center\"\n [style.transform]=\"expanded ? 'rotate(90deg)' : 'none'\"\n [style.transition]=\"'transform 120ms ease-out'\">&rsaquo;</span>\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"source === 'env'\"\n label=\"ENV\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EDE9FE\"\n textColor=\"#5B21B6\"\n borderColor=\"#DDD6FE\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'global'\"\n label=\"GLOBAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#CFFAFE\"\n textColor=\"#0E7490\"\n borderColor=\"#A5F3FC\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RO'\"\n label=\"RO\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#FFE4E6\"\n textColor=\"#BE123C\"\n borderColor=\"#FECDD3\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RW'\"\n label=\"RW\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n <span *ngIf=\"stepLabel\" class=\"cqa-flex-shrink-0 cqa-text-[11px] cqa-text-[#64748B] cqa-ml-1\">\n {{ stepLabel }}\n </span>\n </button>\n </div>\n\n <!-- Detail card \u2014 separate card below the header card. -->\n <div\n *ngIf=\"expanded\"\n class=\"cqa-w-[calc(100%-14px)] cqa-mt-1 cqa-ml-2 cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-text-xs\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B728080]\">Current value</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\" [title]=\"value || ''\">{{ value || '\u2014' }}</span>\n </div>\n <div *ngIf=\"type\" class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B7280]\">Type</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\">{{ type }}</span>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UsedVariableRowComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: 'cqa-used-variable-row', host: { class: 'cqa-ui-root' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full\">\n <!-- Header card \u2014 turns lavender + purple-ringed when expanded. -->\n <div\n [ngClass]=\"expanded\n ? 'cqa-border-[#818CF8] cqa-bg-[#EEF2FF]'\n : 'cqa-border-[#E2E8F0] cqa-bg-white hover:cqa-bg-[#FAFAFF]'\"\n class=\"cqa-w-full cqa-rounded-lg cqa-border cqa-border-solid cqa-transition-colors cqa-duration-150\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-w-full cqa-px-[10px] cqa-py-[10px] cqa-bg-transparent cqa-border-0 cqa-cursor-pointer cqa-text-left focus:cqa-outline-none\">\n <span\n class=\"cqa-flex-shrink-0 cqa-text-[#475569] cqa-text-base cqa-leading-none cqa-w-4 cqa-text-center\"\n [style.transform]=\"expanded ? 'rotate(90deg)' : 'none'\"\n [style.transition]=\"'transform 120ms ease-out'\">&rsaquo;</span>\n <span class=\"cqa-flex-1 cqa-min-w-0 cqa-truncate cqa-text-[13px] cqa-font-semibold cqa-text-[#0F172A]\">\n {{ name }}\n </span>\n <cqa-badge\n *ngIf=\"source === 'env'\"\n label=\"ENV\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#EDE9FE\"\n textColor=\"#5B21B6\"\n borderColor=\"#DDD6FE\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"source === 'global'\"\n label=\"GLOBAL\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#CFFAFE\"\n textColor=\"#0E7490\"\n borderColor=\"#A5F3FC\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RO'\"\n label=\"RO\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#FFE4E6\"\n textColor=\"#BE123C\"\n borderColor=\"#FECDD3\">\n </cqa-badge>\n <cqa-badge\n *ngIf=\"permission === 'RW'\"\n label=\"RW\"\n size=\"extra-small\"\n variant=\"default\"\n backgroundColor=\"#D1FAE5\"\n textColor=\"#047857\"\n borderColor=\"#A7F3D0\">\n </cqa-badge>\n <span *ngIf=\"stepLabel\" class=\"cqa-flex-shrink-0 cqa-text-[11px] cqa-text-[#64748B] cqa-ml-1\">\n {{ stepLabel }}\n </span>\n </button>\n </div>\n\n <!-- Detail card \u2014 separate card below the header card. -->\n <div\n *ngIf=\"expanded\"\n class=\"cqa-w-[calc(100%-14px)] cqa-mt-1 cqa-ml-2 cqa-rounded-lg cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-bg-white cqa-px-3 cqa-py-[10px]\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-text-xs\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B728080]\">Current value</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\" [title]=\"value || ''\">{{ value || '\u2014' }}</span>\n </div>\n <div *ngIf=\"type\" class=\"cqa-flex cqa-items-center cqa-justify-between cqa-gap-3\">\n <span class=\"cqa-flex-shrink-0 cqa-text-[#6B7280]\">Type</span>\n <span class=\"cqa-min-w-0 cqa-text-right cqa-text-[#0F172A] cqa-truncate\">{{ type }}</span>\n </div>\n </div>\n </div>\n</div>\n" }]
24
+ }], propDecorators: { name: [{
25
+ type: Input
26
+ }], value: [{
27
+ type: Input
28
+ }], type: [{
29
+ type: Input
30
+ }], source: [{
31
+ type: Input
32
+ }], permission: [{
33
+ type: Input
34
+ }], stepLabel: [{
35
+ type: Input
36
+ }], expanded: [{
37
+ type: Input
38
+ }], expandedChange: [{
39
+ type: Output
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlZC12YXJpYWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy92YXJpYWJsZXMtcGFuZWwvdXNlZC12YXJpYWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy92YXJpYWJsZXMtcGFuZWwvdXNlZC12YXJpYWJsZS1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkIsTUFBTSxPQUFPLHdCQUF3QjtJQU5yQztRQU9XLFNBQUksR0FBRyxFQUFFLENBQUM7UUFHVixXQUFNLEdBQXFCLEtBQUssQ0FBQztRQUNqQyxlQUFVLEdBQXVCLElBQUksQ0FBQztRQUN0QyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FNeEQ7SUFKQyxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O3FIQWRVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHVTQ2ZyQyx1cEdBNEVBOzJGRDdEYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0UsdUJBQXVCLFFBRTNCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYXJpYWJsZVBlcm1pc3Npb24gfSBmcm9tICcuL3ZhcmlhYmxlcy1wYW5lbC5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdXNlZC12YXJpYWJsZS1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlZC12YXJpYWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VkVmFyaWFibGVSb3dDb21wb25lbnQge1xuICBASW5wdXQoKSBuYW1lID0gJyc7XG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzb3VyY2U6ICdlbnYnIHwgJ2dsb2JhbCcgPSAnZW52JztcbiAgQElucHV0KCkgcGVybWlzc2lvbjogVmFyaWFibGVQZXJtaXNzaW9uID0gJ1JXJztcbiAgQElucHV0KCkgc3RlcExhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS13LWZ1bGxcIj5cbiAgPCEtLSBIZWFkZXIgY2FyZCDigJQgdHVybnMgbGF2ZW5kZXIgKyBwdXJwbGUtcmluZ2VkIHdoZW4gZXhwYW5kZWQuIC0tPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwiZXhwYW5kZWRcbiAgICAgID8gJ2NxYS1ib3JkZXItWyM4MThDRjhdIGNxYS1iZy1bI0VFRjJGRl0nXG4gICAgICA6ICdjcWEtYm9yZGVyLVsjRTJFOEYwXSBjcWEtYmctd2hpdGUgaG92ZXI6Y3FhLWJnLVsjRkFGQUZGXSdcIlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtcm91bmRlZC1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLXRyYW5zaXRpb24tY29sb3JzIGNxYS1kdXJhdGlvbi0xNTBcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS13LWZ1bGwgY3FhLXB4LVsxMHB4XSBjcWEtcHktWzEwcHhdIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtYm9yZGVyLTAgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10ZXh0LWxlZnQgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bIzQ3NTU2OV0gY3FhLXRleHQtYmFzZSBjcWEtbGVhZGluZy1ub25lIGNxYS13LTQgY3FhLXRleHQtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJleHBhbmRlZCA/ICdyb3RhdGUoOTBkZWcpJyA6ICdub25lJ1wiXG4gICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cIid0cmFuc2Zvcm0gMTIwbXMgZWFzZS1vdXQnXCI+JnJzYXF1bzs8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLXRydW5jYXRlIGNxYS10ZXh0LVsxM3B4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBGMTcyQV1cIj5cbiAgICAgICAge3sgbmFtZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAqbmdJZj1cInNvdXJjZSA9PT0gJ2VudidcIlxuICAgICAgICBsYWJlbD1cIkVOVlwiXG4gICAgICAgIHNpemU9XCJleHRyYS1zbWFsbFwiXG4gICAgICAgIHZhcmlhbnQ9XCJkZWZhdWx0XCJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0VERTlGRVwiXG4gICAgICAgIHRleHRDb2xvcj1cIiM1QjIxQjZcIlxuICAgICAgICBib3JkZXJDb2xvcj1cIiNEREQ2RkVcIj5cbiAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAqbmdJZj1cInNvdXJjZSA9PT0gJ2dsb2JhbCdcIlxuICAgICAgICBsYWJlbD1cIkdMT0JBTFwiXG4gICAgICAgIHNpemU9XCJleHRyYS1zbWFsbFwiXG4gICAgICAgIHZhcmlhbnQ9XCJkZWZhdWx0XCJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI0NGRkFGRVwiXG4gICAgICAgIHRleHRDb2xvcj1cIiMwRTc0OTBcIlxuICAgICAgICBib3JkZXJDb2xvcj1cIiNBNUYzRkNcIj5cbiAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPGNxYS1iYWRnZVxuICAgICAgICAqbmdJZj1cInBlcm1pc3Npb24gPT09ICdSTydcIlxuICAgICAgICBsYWJlbD1cIlJPXCJcbiAgICAgICAgc2l6ZT1cImV4dHJhLXNtYWxsXCJcbiAgICAgICAgdmFyaWFudD1cImRlZmF1bHRcIlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCIjRkZFNEU2XCJcbiAgICAgICAgdGV4dENvbG9yPVwiI0JFMTIzQ1wiXG4gICAgICAgIGJvcmRlckNvbG9yPVwiI0ZFQ0REM1wiPlxuICAgICAgPC9jcWEtYmFkZ2U+XG4gICAgICA8Y3FhLWJhZGdlXG4gICAgICAgICpuZ0lmPVwicGVybWlzc2lvbiA9PT0gJ1JXJ1wiXG4gICAgICAgIGxhYmVsPVwiUldcIlxuICAgICAgICBzaXplPVwiZXh0cmEtc21hbGxcIlxuICAgICAgICB2YXJpYW50PVwiZGVmYXVsdFwiXG4gICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiNEMUZBRTVcIlxuICAgICAgICB0ZXh0Q29sb3I9XCIjMDQ3ODU3XCJcbiAgICAgICAgYm9yZGVyQ29sb3I9XCIjQTdGM0QwXCI+XG4gICAgICA8L2NxYS1iYWRnZT5cbiAgICAgIDxzcGFuICpuZ0lmPVwic3RlcExhYmVsXCIgY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bMTFweF0gY3FhLXRleHQtWyM2NDc0OEJdIGNxYS1tbC0xXCI+XG4gICAgICAgIHt7IHN0ZXBMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIERldGFpbCBjYXJkIOKAlCBzZXBhcmF0ZSBjYXJkIGJlbG93IHRoZSBoZWFkZXIgY2FyZC4gLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICBjbGFzcz1cImNxYS13LVtjYWxjKDEwMCUtMTRweCldIGNxYS1tdC0xIGNxYS1tbC0yIGNxYS1yb3VuZGVkLWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTJFOEYwXSBjcWEtYmctd2hpdGUgY3FhLXB4LTMgY3FhLXB5LVsxMHB4XVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XSBjcWEtdGV4dC14c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bIzZCNzI4MDgwXVwiPkN1cnJlbnQgdmFsdWU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1pbi13LTAgY3FhLXRleHQtcmlnaHQgY3FhLXRleHQtWyMwRjE3MkFdIGNxYS10cnVuY2F0ZVwiIFt0aXRsZV09XCJ2YWx1ZSB8fCAnJ1wiPnt7IHZhbHVlIHx8ICfigJQnIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwidHlwZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtM1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjNkI3MjgwXVwiPlR5cGU8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1pbi13LTAgY3FhLXRleHQtcmlnaHQgY3FhLXRleHQtWyMwRjE3MkFdIGNxYS10cnVuY2F0ZVwiPnt7IHR5cGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,134 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { EMPTY_STATE_IMAGES } from '../../assets/images/image-assets.constants';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../search-bar/search-bar.component";
5
+ import * as i2 from "../../segment-control/segment-control.component";
6
+ import * as i3 from "./available-variable-row.component";
7
+ import * as i4 from "../data-library-panel/test-data-profile-card.component";
8
+ import * as i5 from "../../empty-state/empty-state.component";
9
+ import * as i6 from "./used-variable-row.component";
10
+ import * as i7 from "./used-profile-row.component";
11
+ import * as i8 from "@angular/common";
12
+ export class TestCaseVariablesPanelComponent {
13
+ constructor() {
14
+ this.activeSubTab = 'available';
15
+ this.searchTerm = '';
16
+ this.searchPlaceholder = 'Search by';
17
+ this.available = { environment: [], global: [], testDataProfiles: [] };
18
+ this.used = { environment: [], global: [], testDataProfiles: [] };
19
+ this.isLoadingAvailable = false;
20
+ this.isLoadingUsed = false;
21
+ this.showManageEnvAndDataLink = true;
22
+ this.activeSubTabChange = new EventEmitter();
23
+ this.searchTermChange = new EventEmitter();
24
+ this.searchCleared = new EventEmitter();
25
+ this.manageEnvAndDataClick = new EventEmitter();
26
+ this.topSegments = [
27
+ { label: 'Available', value: 'available' },
28
+ { label: 'Used in Test', value: 'used' },
29
+ { label: 'Parameters', value: 'parameters' },
30
+ ];
31
+ this.skeletonRows = [0, 1, 2, 3];
32
+ /** Empty-state imagery — exposed to the template so we can bind [imageUrl]. */
33
+ this.searchEmptyImageUrl = EMPTY_STATE_IMAGES.SEARCH_DEBUG;
34
+ this.noDataImageUrl = EMPTY_STATE_IMAGES.CHECKLIST_ADD;
35
+ /** Per-row expanded state. Key format: `<tab>:<group>:<id>`. */
36
+ this.expandedKeys = {};
37
+ }
38
+ ngOnChanges(changes) {
39
+ if (changes['available'] || changes['used']) {
40
+ // Drop expansion state when the data set is replaced wholesale.
41
+ this.expandedKeys = {};
42
+ }
43
+ }
44
+ onSegmentChange(value) {
45
+ if (value === 'available' || value === 'used' || value === 'parameters') {
46
+ this.activeSubTab = value;
47
+ this.activeSubTabChange.emit(value);
48
+ }
49
+ }
50
+ onSearchValueChange(value) {
51
+ this.searchTerm = value ?? '';
52
+ this.searchTermChange.emit(this.searchTerm);
53
+ }
54
+ onSearchSubmit(value) {
55
+ this.searchTermChange.emit(value ?? '');
56
+ }
57
+ onSearchCleared() {
58
+ this.searchTerm = '';
59
+ this.searchCleared.emit();
60
+ }
61
+ onManageEnvAndData(event) {
62
+ event.preventDefault();
63
+ this.manageEnvAndDataClick.emit();
64
+ }
65
+ isExpanded(tab, group, id) {
66
+ return !!this.expandedKeys[`${tab}:${group}:${id}`];
67
+ }
68
+ setExpanded(tab, group, id, expanded) {
69
+ this.expandedKeys[`${tab}:${group}:${id}`] = expanded;
70
+ }
71
+ trackByRow(_i, item) {
72
+ return item?.id ?? _i;
73
+ }
74
+ trackByTdp(_i, item) {
75
+ return item?.id ?? _i;
76
+ }
77
+ trackByUsedTdp(_i, item) {
78
+ return item?.attachmentId ?? _i;
79
+ }
80
+ get bannerEnvLabel() {
81
+ return this.environmentName && this.environmentName.trim().length
82
+ ? this.environmentName
83
+ : 'this test case';
84
+ }
85
+ get hasAvailableData() {
86
+ return ((this.available?.environment?.length ?? 0) > 0 ||
87
+ (this.available?.global?.length ?? 0) > 0 ||
88
+ (this.available?.testDataProfiles?.length ?? 0) > 0);
89
+ }
90
+ get hasUsedData() {
91
+ return ((this.used?.environment?.length ?? 0) > 0 ||
92
+ (this.used?.global?.length ?? 0) > 0 ||
93
+ (this.used?.testDataProfiles?.length ?? 0) > 0);
94
+ }
95
+ // Avoid unused-import warning in template-strict checks for VMs.
96
+ asEnvVar(item) { return item; }
97
+ asUsedVar(item) { return item; }
98
+ }
99
+ TestCaseVariablesPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseVariablesPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
100
+ TestCaseVariablesPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseVariablesPanelComponent, selector: "cqa-test-case-variables-panel", inputs: { activeSubTab: "activeSubTab", searchTerm: "searchTerm", searchPlaceholder: "searchPlaceholder", environmentName: "environmentName", available: "available", used: "used", isLoadingAvailable: "isLoadingAvailable", isLoadingUsed: "isLoadingUsed", showManageEnvAndDataLink: "showManageEnvAndDataLink" }, outputs: { activeSubTabChange: "activeSubTabChange", searchTermChange: "searchTermChange", searchCleared: "searchCleared", manageEnvAndDataClick: "manageEnvAndDataClick" }, host: { styleAttribute: "display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column;", classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full cqa-flex-1 cqa-min-h-0 cqa-bg-white\">\n <!-- Header: search + env banner + segment-control. Not sticky \u2014 laid out as a normal block above the scroll body so the Parameters tab can grant the slotted form full height. -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-pt-2 cqa-pb-3 cqa-bg-white\">\n <cqa-search-bar\n [placeholder]=\"searchPlaceholder\"\n [value]=\"searchTerm\"\n [showClear]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"onSearchValueChange($event)\"\n (search)=\"onSearchSubmit($event)\"\n (cleared)=\"onSearchCleared()\">\n </cqa-search-bar>\n\n <div class=\"cqa-text-xs cqa-text-[#475569] cqa-bg-[#F8FAFC] cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-rounded-md cqa-px-3 cqa-py-2\">\n Variables are resolved using: <span class=\"cqa-font-semibold cqa-text-[#0F172A]\">{{ bannerEnvLabel }}</span>\n </div>\n\n <cqa-segment-control\n [segments]=\"topSegments\"\n [value]=\"activeSubTab\"\n [fullWidth]=\"true\"\n (valueChange)=\"onSegmentChange($event)\">\n </cqa-segment-control>\n </div>\n\n <!-- Scrolling body for Available + Used. -->\n <div\n [hidden]=\"activeSubTab === 'parameters'\"\n class=\"cqa-flex-1 cqa-min-h-0 cqa-overflow-y-auto cqa-overflow-x-hidden\">\n\n <!-- AVAILABLE -->\n <div [hidden]=\"activeSubTab !== 'available'\" class=\"cqa-pb-6\">\n <ng-container *ngIf=\"!isLoadingAvailable; else availableLoadingTpl\">\n <ng-container *ngIf=\"hasAvailableData; else availableEmptyTpl\">\n <ng-container *ngIf=\"available.environment?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Environment Variables</span>\n <a\n *ngIf=\"showManageEnvAndDataLink\"\n href=\"#\"\n (click)=\"onManageEnvAndData($event)\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[2px] cqa-text-xs cqa-font-medium cqa-text-[#4F46E5] cqa-no-underline hover:cqa-underline\">\n View full library<span class=\"cqa-text-sm cqa-leading-none\">&rsaquo;</span>\n </a>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-available-variable-row\n *ngFor=\"let v of available.environment; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [environmentName]=\"environmentName\"\n [expanded]=\"isExpanded('available', 'env', v.id)\"\n (expandedChange)=\"setExpanded('available', 'env', v.id, $event)\">\n </cqa-available-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"available.global?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Global Data</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-available-variable-row\n *ngFor=\"let v of available.global; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [expanded]=\"isExpanded('available', 'global', v.id)\"\n (expandedChange)=\"setExpanded('available', 'global', v.id, $event)\">\n </cqa-available-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"available.testDataProfiles?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Test Data Profiles</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-2\">\n <cqa-test-data-profile-card\n *ngFor=\"let p of available.testDataProfiles; trackBy: trackByTdp\"\n [name]=\"p.name\"\n [rowsCount]=\"p.rowsCount\"\n [columnsCount]=\"p.columnsCount\"\n [permission]=\"p.permission ?? null\"\n [environmentName]=\"p.envName\"\n [activeOnTestCase]=\"!!p.activeOnTestCase\">\n </cqa-test-data-profile-card>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #availableEmptyTpl>\n <cqa-empty-state\n *ngIf=\"searchTerm; else noAvailableAtAll\"\n title=\"No variables found\"\n [description]=\"'No variables match &ldquo;' + searchTerm + '&rdquo;.'\"\n [imageUrl]=\"searchEmptyImageUrl\">\n </cqa-empty-state>\n <ng-template #noAvailableAtAll>\n <cqa-empty-state\n title=\"No variables available\"\n description=\"There are no environment variables, global data, or test data profiles available for this test case yet.\"\n [imageUrl]=\"noDataImageUrl\">\n </cqa-empty-state>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-template #availableLoadingTpl>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-pt-2\">\n <div *ngFor=\"let _ of skeletonRows\" class=\"cqa-h-[40px] cqa-rounded-lg cqa-bg-[#F1F5F9] cqa-animate-pulse\"></div>\n </div>\n </ng-template>\n </div>\n\n <!-- USED IN TEST -->\n <div [hidden]=\"activeSubTab !== 'used'\" class=\"cqa-pb-6\">\n <ng-container *ngIf=\"!isLoadingUsed; else usedLoadingTpl\">\n <ng-container *ngIf=\"hasUsedData; else usedEmptyTpl\">\n <ng-container *ngIf=\"used.environment?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Environment Variables Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-used-variable-row\n *ngFor=\"let v of used.environment; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [stepLabel]=\"'Step ' + v.stepNumber\"\n [expanded]=\"isExpanded('used', 'env', v.id)\"\n (expandedChange)=\"setExpanded('used', 'env', v.id, $event)\">\n </cqa-used-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"used.global?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Global Data Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-used-variable-row\n *ngFor=\"let v of used.global; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [stepLabel]=\"'Step ' + v.stepNumber\"\n [expanded]=\"isExpanded('used', 'global', v.id)\"\n (expandedChange)=\"setExpanded('used', 'global', v.id, $event)\">\n </cqa-used-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"used.testDataProfiles?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Test Data Profiles Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-2\">\n <cqa-used-profile-row\n *ngFor=\"let p of used.testDataProfiles; trackBy: trackByUsedTdp\"\n [name]=\"p.name\"\n [envName]=\"p.envName\"\n [stepRange]=\"p.stepRange\">\n </cqa-used-profile-row>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #usedEmptyTpl>\n <cqa-empty-state\n *ngIf=\"searchTerm; else noUsedAtAll\"\n title=\"No usages found\"\n [description]=\"'No usages match &ldquo;' + searchTerm + '&rdquo;.'\"\n [imageUrl]=\"searchEmptyImageUrl\">\n </cqa-empty-state>\n <ng-template #noUsedAtAll>\n <cqa-empty-state\n title=\"No variables used yet\"\n description=\"This test case does not reference any environment variables, global data, or test data profiles.\"\n [imageUrl]=\"noDataImageUrl\">\n </cqa-empty-state>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-template #usedLoadingTpl>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-pt-2\">\n <div *ngFor=\"let _ of skeletonRows\" class=\"cqa-h-[40px] cqa-rounded-lg cqa-bg-[#F1F5F9] cqa-animate-pulse\"></div>\n </div>\n </ng-template>\n\n <div *ngIf=\"showManageEnvAndDataLink\" class=\"cqa-pt-2\">\n <a\n href=\"#\"\n (click)=\"onManageEnvAndData($event)\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[2px] cqa-text-xs cqa-font-medium cqa-text-[#4F46E5] cqa-no-underline hover:cqa-underline\">\n Manage in Environment &amp; Data Management<span class=\"cqa-text-sm cqa-leading-none\">&rsaquo;</span>\n </a>\n </div>\n </div>\n </div>\n\n <!-- PARAMETERS \u2014 host slots <app-steps-variables> here. Uses *ngIf rather than\n [hidden] because the body needs `cqa-flex` to give the slotted form a bounded\n height, and Tailwind's `important: '.cqa-ui-root'` config compiles `cqa-flex`\n to `display: flex !important`, which would override `[hidden]`'s display: none\n and leak the projected content into Available/Used. -->\n <div\n *ngIf=\"activeSubTab === 'parameters'\"\n class=\"cqa-flex-1 cqa-min-h-0 cqa-flex cqa-flex-col\">\n <ng-content select=\"[parametersSlot]\"></ng-content>\n </div>\n</div>\n", components: [{ type: i1.SearchBarComponent, selector: "cqa-search-bar", inputs: ["placeholder", "value", "disabled", "showClear", "ariaLabel", "autoFocus", "size", "fullWidth"], outputs: ["valueChange", "search", "cleared"] }, { type: i2.SegmentControlComponent, selector: "cqa-segment-control", inputs: ["segments", "value", "disabled", "containerBgColor", "fullWidth", "size"], outputs: ["valueChange"] }, { type: i3.AvailableVariableRowComponent, selector: "cqa-available-variable-row", inputs: ["name", "value", "type", "source", "permission", "environmentName", "expanded"], outputs: ["expandedChange"] }, { type: i4.TestDataProfileCardComponent, selector: "cqa-test-data-profile-card", inputs: ["name", "rowsCount", "columnsCount", "environmentName", "permission", "activeOnTestCase"] }, { type: i5.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }, { type: i6.UsedVariableRowComponent, selector: "cqa-used-variable-row", inputs: ["name", "value", "type", "source", "permission", "stepLabel", "expanded"], outputs: ["expandedChange"] }, { type: i7.UsedProfileRowComponent, selector: "cqa-used-profile-row", inputs: ["name", "envName", "stepRange"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseVariablesPanelComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ selector: 'cqa-test-case-variables-panel', host: {
104
+ class: 'cqa-ui-root',
105
+ style: 'display: flex; flex: 1 1 auto; min-height: 0; flex-direction: column;',
106
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cqa-flex cqa-flex-col cqa-w-full cqa-flex-1 cqa-min-h-0 cqa-bg-white\">\n <!-- Header: search + env banner + segment-control. Not sticky \u2014 laid out as a normal block above the scroll body so the Parameters tab can grant the slotted form full height. -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-pt-2 cqa-pb-3 cqa-bg-white\">\n <cqa-search-bar\n [placeholder]=\"searchPlaceholder\"\n [value]=\"searchTerm\"\n [showClear]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"onSearchValueChange($event)\"\n (search)=\"onSearchSubmit($event)\"\n (cleared)=\"onSearchCleared()\">\n </cqa-search-bar>\n\n <div class=\"cqa-text-xs cqa-text-[#475569] cqa-bg-[#F8FAFC] cqa-border cqa-border-solid cqa-border-[#E2E8F0] cqa-rounded-md cqa-px-3 cqa-py-2\">\n Variables are resolved using: <span class=\"cqa-font-semibold cqa-text-[#0F172A]\">{{ bannerEnvLabel }}</span>\n </div>\n\n <cqa-segment-control\n [segments]=\"topSegments\"\n [value]=\"activeSubTab\"\n [fullWidth]=\"true\"\n (valueChange)=\"onSegmentChange($event)\">\n </cqa-segment-control>\n </div>\n\n <!-- Scrolling body for Available + Used. -->\n <div\n [hidden]=\"activeSubTab === 'parameters'\"\n class=\"cqa-flex-1 cqa-min-h-0 cqa-overflow-y-auto cqa-overflow-x-hidden\">\n\n <!-- AVAILABLE -->\n <div [hidden]=\"activeSubTab !== 'available'\" class=\"cqa-pb-6\">\n <ng-container *ngIf=\"!isLoadingAvailable; else availableLoadingTpl\">\n <ng-container *ngIf=\"hasAvailableData; else availableEmptyTpl\">\n <ng-container *ngIf=\"available.environment?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Environment Variables</span>\n <a\n *ngIf=\"showManageEnvAndDataLink\"\n href=\"#\"\n (click)=\"onManageEnvAndData($event)\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[2px] cqa-text-xs cqa-font-medium cqa-text-[#4F46E5] cqa-no-underline hover:cqa-underline\">\n View full library<span class=\"cqa-text-sm cqa-leading-none\">&rsaquo;</span>\n </a>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-available-variable-row\n *ngFor=\"let v of available.environment; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [environmentName]=\"environmentName\"\n [expanded]=\"isExpanded('available', 'env', v.id)\"\n (expandedChange)=\"setExpanded('available', 'env', v.id, $event)\">\n </cqa-available-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"available.global?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Global Data</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-available-variable-row\n *ngFor=\"let v of available.global; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [expanded]=\"isExpanded('available', 'global', v.id)\"\n (expandedChange)=\"setExpanded('available', 'global', v.id, $event)\">\n </cqa-available-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"available.testDataProfiles?.length\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-2\">\n <span class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF]\">Test Data Profiles</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-2\">\n <cqa-test-data-profile-card\n *ngFor=\"let p of available.testDataProfiles; trackBy: trackByTdp\"\n [name]=\"p.name\"\n [rowsCount]=\"p.rowsCount\"\n [columnsCount]=\"p.columnsCount\"\n [permission]=\"p.permission ?? null\"\n [environmentName]=\"p.envName\"\n [activeOnTestCase]=\"!!p.activeOnTestCase\">\n </cqa-test-data-profile-card>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #availableEmptyTpl>\n <cqa-empty-state\n *ngIf=\"searchTerm; else noAvailableAtAll\"\n title=\"No variables found\"\n [description]=\"'No variables match &ldquo;' + searchTerm + '&rdquo;.'\"\n [imageUrl]=\"searchEmptyImageUrl\">\n </cqa-empty-state>\n <ng-template #noAvailableAtAll>\n <cqa-empty-state\n title=\"No variables available\"\n description=\"There are no environment variables, global data, or test data profiles available for this test case yet.\"\n [imageUrl]=\"noDataImageUrl\">\n </cqa-empty-state>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-template #availableLoadingTpl>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-pt-2\">\n <div *ngFor=\"let _ of skeletonRows\" class=\"cqa-h-[40px] cqa-rounded-lg cqa-bg-[#F1F5F9] cqa-animate-pulse\"></div>\n </div>\n </ng-template>\n </div>\n\n <!-- USED IN TEST -->\n <div [hidden]=\"activeSubTab !== 'used'\" class=\"cqa-pb-6\">\n <ng-container *ngIf=\"!isLoadingUsed; else usedLoadingTpl\">\n <ng-container *ngIf=\"hasUsedData; else usedEmptyTpl\">\n <ng-container *ngIf=\"used.environment?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Environment Variables Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-used-variable-row\n *ngFor=\"let v of used.environment; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [stepLabel]=\"'Step ' + v.stepNumber\"\n [expanded]=\"isExpanded('used', 'env', v.id)\"\n (expandedChange)=\"setExpanded('used', 'env', v.id, $event)\">\n </cqa-used-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"used.global?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Global Data Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-4\">\n <cqa-used-variable-row\n *ngFor=\"let v of used.global; trackBy: trackByRow\"\n [name]=\"v.name\"\n [value]=\"v.value\"\n [type]=\"v.type\"\n [source]=\"v.source\"\n [permission]=\"v.permission\"\n [stepLabel]=\"'Step ' + v.stepNumber\"\n [expanded]=\"isExpanded('used', 'global', v.id)\"\n (expandedChange)=\"setExpanded('used', 'global', v.id, $event)\">\n </cqa-used-variable-row>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"used.testDataProfiles?.length\">\n <div class=\"cqa-text-[12px] cqa-font-semibold cqa-text-[#9CA3AF] cqa-mb-2\">Test Data Profiles Used</div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px] cqa-mb-2\">\n <cqa-used-profile-row\n *ngFor=\"let p of used.testDataProfiles; trackBy: trackByUsedTdp\"\n [name]=\"p.name\"\n [envName]=\"p.envName\"\n [stepRange]=\"p.stepRange\">\n </cqa-used-profile-row>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #usedEmptyTpl>\n <cqa-empty-state\n *ngIf=\"searchTerm; else noUsedAtAll\"\n title=\"No usages found\"\n [description]=\"'No usages match &ldquo;' + searchTerm + '&rdquo;.'\"\n [imageUrl]=\"searchEmptyImageUrl\">\n </cqa-empty-state>\n <ng-template #noUsedAtAll>\n <cqa-empty-state\n title=\"No variables used yet\"\n description=\"This test case does not reference any environment variables, global data, or test data profiles.\"\n [imageUrl]=\"noDataImageUrl\">\n </cqa-empty-state>\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-template #usedLoadingTpl>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-pt-2\">\n <div *ngFor=\"let _ of skeletonRows\" class=\"cqa-h-[40px] cqa-rounded-lg cqa-bg-[#F1F5F9] cqa-animate-pulse\"></div>\n </div>\n </ng-template>\n\n <div *ngIf=\"showManageEnvAndDataLink\" class=\"cqa-pt-2\">\n <a\n href=\"#\"\n (click)=\"onManageEnvAndData($event)\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[2px] cqa-text-xs cqa-font-medium cqa-text-[#4F46E5] cqa-no-underline hover:cqa-underline\">\n Manage in Environment &amp; Data Management<span class=\"cqa-text-sm cqa-leading-none\">&rsaquo;</span>\n </a>\n </div>\n </div>\n </div>\n\n <!-- PARAMETERS \u2014 host slots <app-steps-variables> here. Uses *ngIf rather than\n [hidden] because the body needs `cqa-flex` to give the slotted form a bounded\n height, and Tailwind's `important: '.cqa-ui-root'` config compiles `cqa-flex`\n to `display: flex !important`, which would override `[hidden]`'s display: none\n and leak the projected content into Available/Used. -->\n <div\n *ngIf=\"activeSubTab === 'parameters'\"\n class=\"cqa-flex-1 cqa-min-h-0 cqa-flex cqa-flex-col\">\n <ng-content select=\"[parametersSlot]\"></ng-content>\n </div>\n</div>\n" }]
107
+ }], propDecorators: { activeSubTab: [{
108
+ type: Input
109
+ }], searchTerm: [{
110
+ type: Input
111
+ }], searchPlaceholder: [{
112
+ type: Input
113
+ }], environmentName: [{
114
+ type: Input
115
+ }], available: [{
116
+ type: Input
117
+ }], used: [{
118
+ type: Input
119
+ }], isLoadingAvailable: [{
120
+ type: Input
121
+ }], isLoadingUsed: [{
122
+ type: Input
123
+ }], showManageEnvAndDataLink: [{
124
+ type: Input
125
+ }], activeSubTabChange: [{
126
+ type: Output
127
+ }], searchTermChange: [{
128
+ type: Output
129
+ }], searchCleared: [{
130
+ type: Output
131
+ }], manageEnvAndDataClick: [{
132
+ type: Output
133
+ }] } });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvdmFyaWFibGVzLXBhbmVsL3ZhcmlhYmxlcy1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3ZhcmlhYmxlcy1wYW5lbC92YXJpYWJsZXMtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7QUFvQmhGLE1BQU0sT0FBTywrQkFBK0I7SUFUNUM7UUFVVyxpQkFBWSxHQUFzQixXQUFXLENBQUM7UUFDOUMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixzQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFFaEMsY0FBUyxHQUF5QixFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4RixTQUFJLEdBQWlCLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzNFLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0Qiw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFFL0IsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDM0QscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDekMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRCxnQkFBVyxHQUFvQjtZQUN0QyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUMxQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtTQUM3QyxDQUFDO1FBRU8saUJBQVksR0FBYSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9DLCtFQUErRTtRQUN0RSx3QkFBbUIsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7UUFFM0QsZ0VBQWdFO1FBQ2hFLGlCQUFZLEdBQTRCLEVBQUUsQ0FBQztLQWdGNUM7SUE5RUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQyxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLFlBQVksRUFBRTtZQUN2RSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVk7UUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBbUI7UUFDeEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBbUIsRUFBRSxRQUFpQjtRQUM1RSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQVUsRUFBRSxJQUE2QjtRQUNsRCxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVSxFQUFFLElBQW9CO1FBQ3pDLE9BQU8sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFVLEVBQUUsSUFBZTtRQUN4QyxPQUFPLElBQUksRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTTtZQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdEIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM5QyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3pDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3pDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDcEMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFFBQVEsQ0FBQyxJQUF5QixJQUF5QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekUsU0FBUyxDQUFDLElBQW9CLElBQW9CLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQzs7NEhBNUdyRCwrQkFBK0I7Z0hBQS9CLCtCQUErQiwrckJDOUI1Qyx3c1VBd05BOzJGRDFMYSwrQkFBK0I7a0JBVDNDLFNBQVM7K0JBQ0UsK0JBQStCLFFBRW5DO3dCQUNKLEtBQUssRUFBRSxhQUFhO3dCQUNwQixLQUFLLEVBQUUsdUVBQXVFO3FCQUMvRSxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VnbWVudE9wdGlvbiB9IGZyb20gJy4uLy4uL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEVNUFRZX1NUQVRFX0lNQUdFUyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvaW1hZ2UtYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQge1xuICBBdmFpbGFibGVUZHBWbSxcbiAgQXZhaWxhYmxlVmFyaWFibGVWbSxcbiAgQXZhaWxhYmxlVmFyaWFibGVzVm0sXG4gIFVzZWRJblRlc3RWbSxcbiAgVXNlZFRkcFZtLFxuICBVc2VkVmFyaWFibGVWbSxcbiAgVmFyaWFibGVzUGFuZWxUYWIsXG59IGZyb20gJy4vdmFyaWFibGVzLXBhbmVsLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtdmFyaWFibGVzLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZhcmlhYmxlcy1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2NxYS11aS1yb290JyxcbiAgICBzdHlsZTogJ2Rpc3BsYXk6IGZsZXg7IGZsZXg6IDEgMSBhdXRvOyBtaW4taGVpZ2h0OiAwOyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOycsXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZVZhcmlhYmxlc1BhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYWN0aXZlU3ViVGFiOiBWYXJpYWJsZXNQYW5lbFRhYiA9ICdhdmFpbGFibGUnO1xuICBASW5wdXQoKSBzZWFyY2hUZXJtID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBieSc7XG4gIEBJbnB1dCgpIGVudmlyb25tZW50TmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgYXZhaWxhYmxlOiBBdmFpbGFibGVWYXJpYWJsZXNWbSA9IHsgZW52aXJvbm1lbnQ6IFtdLCBnbG9iYWw6IFtdLCB0ZXN0RGF0YVByb2ZpbGVzOiBbXSB9O1xuICBASW5wdXQoKSB1c2VkOiBVc2VkSW5UZXN0Vm0gPSB7IGVudmlyb25tZW50OiBbXSwgZ2xvYmFsOiBbXSwgdGVzdERhdGFQcm9maWxlczogW10gfTtcbiAgQElucHV0KCkgaXNMb2FkaW5nQXZhaWxhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTG9hZGluZ1VzZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd01hbmFnZUVudkFuZERhdGFMaW5rID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgYWN0aXZlU3ViVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWYXJpYWJsZXNQYW5lbFRhYj4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaFRlcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBtYW5hZ2VFbnZBbmREYXRhQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgdG9wU2VnbWVudHM6IFNlZ21lbnRPcHRpb25bXSA9IFtcbiAgICB7IGxhYmVsOiAnQXZhaWxhYmxlJywgdmFsdWU6ICdhdmFpbGFibGUnIH0sXG4gICAgeyBsYWJlbDogJ1VzZWQgaW4gVGVzdCcsIHZhbHVlOiAndXNlZCcgfSxcbiAgICB7IGxhYmVsOiAnUGFyYW1ldGVycycsIHZhbHVlOiAncGFyYW1ldGVycycgfSxcbiAgXTtcblxuICByZWFkb25seSBza2VsZXRvblJvd3M6IG51bWJlcltdID0gWzAsIDEsIDIsIDNdO1xuXG4gIC8qKiBFbXB0eS1zdGF0ZSBpbWFnZXJ5IOKAlCBleHBvc2VkIHRvIHRoZSB0ZW1wbGF0ZSBzbyB3ZSBjYW4gYmluZCBbaW1hZ2VVcmxdLiAqL1xuICByZWFkb25seSBzZWFyY2hFbXB0eUltYWdlVXJsID0gRU1QVFlfU1RBVEVfSU1BR0VTLlNFQVJDSF9ERUJVRztcbiAgcmVhZG9ubHkgbm9EYXRhSW1hZ2VVcmwgPSBFTVBUWV9TVEFURV9JTUFHRVMuQ0hFQ0tMSVNUX0FERDtcblxuICAvKiogUGVyLXJvdyBleHBhbmRlZCBzdGF0ZS4gS2V5IGZvcm1hdDogYDx0YWI+Ojxncm91cD46PGlkPmAuICovXG4gIGV4cGFuZGVkS2V5czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2F2YWlsYWJsZSddIHx8IGNoYW5nZXNbJ3VzZWQnXSkge1xuICAgICAgLy8gRHJvcCBleHBhbnNpb24gc3RhdGUgd2hlbiB0aGUgZGF0YSBzZXQgaXMgcmVwbGFjZWQgd2hvbGVzYWxlLlxuICAgICAgdGhpcy5leHBhbmRlZEtleXMgPSB7fTtcbiAgICB9XG4gIH1cblxuICBvblNlZ21lbnRDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gJ2F2YWlsYWJsZScgfHwgdmFsdWUgPT09ICd1c2VkJyB8fCB2YWx1ZSA9PT0gJ3BhcmFtZXRlcnMnKSB7XG4gICAgICB0aGlzLmFjdGl2ZVN1YlRhYiA9IHZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVTdWJUYWJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdmFsdWUgPz8gJyc7XG4gICAgdGhpcy5zZWFyY2hUZXJtQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hUZXJtKTtcbiAgfVxuXG4gIG9uU2VhcmNoU3VibWl0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2UuZW1pdCh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBvblNlYXJjaENsZWFyZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5zZWFyY2hDbGVhcmVkLmVtaXQoKTtcbiAgfVxuXG4gIG9uTWFuYWdlRW52QW5kRGF0YShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMubWFuYWdlRW52QW5kRGF0YUNsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIGlzRXhwYW5kZWQodGFiOiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmV4cGFuZGVkS2V5c1tgJHt0YWJ9OiR7Z3JvdXB9OiR7aWR9YF07XG4gIH1cblxuICBzZXRFeHBhbmRlZCh0YWI6IHN0cmluZywgZ3JvdXA6IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZywgZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkS2V5c1tgJHt0YWJ9OiR7Z3JvdXB9OiR7aWR9YF0gPSBleHBhbmRlZDtcbiAgfVxuXG4gIHRyYWNrQnlSb3coX2k6IG51bWJlciwgaXRlbTogeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0pOiBudW1iZXIgfCBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtPy5pZCA/PyBfaTtcbiAgfVxuXG4gIHRyYWNrQnlUZHAoX2k6IG51bWJlciwgaXRlbTogQXZhaWxhYmxlVGRwVm0pOiBudW1iZXIge1xuICAgIHJldHVybiBpdGVtPy5pZCA/PyBfaTtcbiAgfVxuXG4gIHRyYWNrQnlVc2VkVGRwKF9pOiBudW1iZXIsIGl0ZW06IFVzZWRUZHBWbSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW0/LmF0dGFjaG1lbnRJZCA/PyBfaTtcbiAgfVxuXG4gIGdldCBiYW5uZXJFbnZMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50TmFtZSAmJiB0aGlzLmVudmlyb25tZW50TmFtZS50cmltKCkubGVuZ3RoXG4gICAgICA/IHRoaXMuZW52aXJvbm1lbnROYW1lXG4gICAgICA6ICd0aGlzIHRlc3QgY2FzZSc7XG4gIH1cblxuICBnZXQgaGFzQXZhaWxhYmxlRGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuYXZhaWxhYmxlPy5lbnZpcm9ubWVudD8ubGVuZ3RoID8/IDApID4gMCB8fFxuICAgICAgKHRoaXMuYXZhaWxhYmxlPy5nbG9iYWw/Lmxlbmd0aCA/PyAwKSA+IDAgfHxcbiAgICAgICh0aGlzLmF2YWlsYWJsZT8udGVzdERhdGFQcm9maWxlcz8ubGVuZ3RoID8/IDApID4gMFxuICAgICk7XG4gIH1cblxuICBnZXQgaGFzVXNlZERhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnVzZWQ/LmVudmlyb25tZW50Py5sZW5ndGggPz8gMCkgPiAwIHx8XG4gICAgICAodGhpcy51c2VkPy5nbG9iYWw/Lmxlbmd0aCA/PyAwKSA+IDAgfHxcbiAgICAgICh0aGlzLnVzZWQ/LnRlc3REYXRhUHJvZmlsZXM/Lmxlbmd0aCA/PyAwKSA+IDBcbiAgICApO1xuICB9XG5cbiAgLy8gQXZvaWQgdW51c2VkLWltcG9ydCB3YXJuaW5nIGluIHRlbXBsYXRlLXN0cmljdCBjaGVja3MgZm9yIFZNcy5cbiAgYXNFbnZWYXIoaXRlbTogQXZhaWxhYmxlVmFyaWFibGVWbSk6IEF2YWlsYWJsZVZhcmlhYmxlVm0geyByZXR1cm4gaXRlbTsgfVxuICBhc1VzZWRWYXIoaXRlbTogVXNlZFZhcmlhYmxlVm0pOiBVc2VkVmFyaWFibGVWbSB7IHJldHVybiBpdGVtOyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS13LWZ1bGwgY3FhLWZsZXgtMSBjcWEtbWluLWgtMCBjcWEtYmctd2hpdGVcIj5cbiAgPCEtLSBIZWFkZXI6IHNlYXJjaCArIGVudiBiYW5uZXIgKyBzZWdtZW50LWNvbnRyb2wuIE5vdCBzdGlja3kg4oCUIGxhaWQgb3V0IGFzIGEgbm9ybWFsIGJsb2NrIGFib3ZlIHRoZSBzY3JvbGwgYm9keSBzbyB0aGUgUGFyYW1ldGVycyB0YWIgY2FuIGdyYW50IHRoZSBzbG90dGVkIGZvcm0gZnVsbCBoZWlnaHQuIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMyBjcWEtcHQtMiBjcWEtcGItMyBjcWEtYmctd2hpdGVcIj5cbiAgICA8Y3FhLXNlYXJjaC1iYXJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICBbdmFsdWVdPVwic2VhcmNoVGVybVwiXG4gICAgICBbc2hvd0NsZWFyXT1cInRydWVcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblNlYXJjaFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgKHNlYXJjaCk9XCJvblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgIChjbGVhcmVkKT1cIm9uU2VhcmNoQ2xlYXJlZCgpXCI+XG4gICAgPC9jcWEtc2VhcmNoLWJhcj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzQ3NTU2OV0gY3FhLWJnLVsjRjhGQUZDXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0UyRThGMF0gY3FhLXJvdW5kZWQtbWQgY3FhLXB4LTMgY3FhLXB5LTJcIj5cbiAgICAgIFZhcmlhYmxlcyBhcmUgcmVzb2x2ZWQgdXNpbmc6IDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMwRjE3MkFdXCI+e3sgYmFubmVyRW52TGFiZWwgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8Y3FhLXNlZ21lbnQtY29udHJvbFxuICAgICAgW3NlZ21lbnRzXT1cInRvcFNlZ21lbnRzXCJcbiAgICAgIFt2YWx1ZV09XCJhY3RpdmVTdWJUYWJcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblNlZ21lbnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvY3FhLXNlZ21lbnQtY29udHJvbD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTY3JvbGxpbmcgYm9keSBmb3IgQXZhaWxhYmxlICsgVXNlZC4gLS0+XG4gIDxkaXZcbiAgICBbaGlkZGVuXT1cImFjdGl2ZVN1YlRhYiA9PT0gJ3BhcmFtZXRlcnMnXCJcbiAgICBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi1oLTAgY3FhLW92ZXJmbG93LXktYXV0byBjcWEtb3ZlcmZsb3cteC1oaWRkZW5cIj5cblxuICAgIDwhLS0gQVZBSUxBQkxFIC0tPlxuICAgIDxkaXYgW2hpZGRlbl09XCJhY3RpdmVTdWJUYWIgIT09ICdhdmFpbGFibGUnXCIgY2xhc3M9XCJjcWEtcGItNlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdBdmFpbGFibGU7IGVsc2UgYXZhaWxhYmxlTG9hZGluZ1RwbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXZhaWxhYmxlRGF0YTsgZWxzZSBhdmFpbGFibGVFbXB0eVRwbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdmFpbGFibGUuZW52aXJvbm1lbnQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzlDQTNBRl1cIj5FbnZpcm9ubWVudCBWYXJpYWJsZXM8L3NwYW4+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TWFuYWdlRW52QW5kRGF0YUxpbmtcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NYW5hZ2VFbnZBbmREYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMnB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM0RjQ2RTVdIGNxYS1uby11bmRlcmxpbmUgaG92ZXI6Y3FhLXVuZGVybGluZVwiPlxuICAgICAgICAgICAgICAgIFZpZXcgZnVsbCBsaWJyYXJ5PHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1ub25lXCI+JnJzYXF1bzs8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVs2cHhdIGNxYS1tYi00XCI+XG4gICAgICAgICAgICAgIDxjcWEtYXZhaWxhYmxlLXZhcmlhYmxlLXJvd1xuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2IG9mIGF2YWlsYWJsZS5lbnZpcm9ubWVudDsgdHJhY2tCeTogdHJhY2tCeVJvd1wiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwidi5uYW1lXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwidi50eXBlXCJcbiAgICAgICAgICAgICAgICBbc291cmNlXT1cInYuc291cmNlXCJcbiAgICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJ2LnBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgIFtlbnZpcm9ubWVudE5hbWVdPVwiZW52aXJvbm1lbnROYW1lXCJcbiAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiaXNFeHBhbmRlZCgnYXZhaWxhYmxlJywgJ2VudicsIHYuaWQpXCJcbiAgICAgICAgICAgICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwic2V0RXhwYW5kZWQoJ2F2YWlsYWJsZScsICdlbnYnLCB2LmlkLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY3FhLWF2YWlsYWJsZS12YXJpYWJsZS1yb3c+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdmFpbGFibGUuZ2xvYmFsPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLW1iLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM5Q0EzQUZdXCI+R2xvYmFsIERhdGE8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XSBjcWEtbWItNFwiPlxuICAgICAgICAgICAgICA8Y3FhLWF2YWlsYWJsZS12YXJpYWJsZS1yb3dcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdiBvZiBhdmFpbGFibGUuZ2xvYmFsOyB0cmFja0J5OiB0cmFja0J5Um93XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJ2Lm5hbWVcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2LnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJ2LnR5cGVcIlxuICAgICAgICAgICAgICAgIFtzb3VyY2VdPVwidi5zb3VyY2VcIlxuICAgICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cInYucGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWQoJ2F2YWlsYWJsZScsICdnbG9iYWwnLCB2LmlkKVwiXG4gICAgICAgICAgICAgICAgKGV4cGFuZGVkQ2hhbmdlKT1cInNldEV4cGFuZGVkKCdhdmFpbGFibGUnLCAnZ2xvYmFsJywgdi5pZCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NxYS1hdmFpbGFibGUtdmFyaWFibGUtcm93PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXZhaWxhYmxlLnRlc3REYXRhUHJvZmlsZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzlDQTNBRl1cIj5UZXN0IERhdGEgUHJvZmlsZXM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XSBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICA8Y3FhLXRlc3QtZGF0YS1wcm9maWxlLWNhcmRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcCBvZiBhdmFpbGFibGUudGVzdERhdGFQcm9maWxlczsgdHJhY2tCeTogdHJhY2tCeVRkcFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwicC5uYW1lXCJcbiAgICAgICAgICAgICAgICBbcm93c0NvdW50XT1cInAucm93c0NvdW50XCJcbiAgICAgICAgICAgICAgICBbY29sdW1uc0NvdW50XT1cInAuY29sdW1uc0NvdW50XCJcbiAgICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJwLnBlcm1pc3Npb24gPz8gbnVsbFwiXG4gICAgICAgICAgICAgICAgW2Vudmlyb25tZW50TmFtZV09XCJwLmVudk5hbWVcIlxuICAgICAgICAgICAgICAgIFthY3RpdmVPblRlc3RDYXNlXT1cIiEhcC5hY3RpdmVPblRlc3RDYXNlXCI+XG4gICAgICAgICAgICAgIDwvY3FhLXRlc3QtZGF0YS1wcm9maWxlLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhdmFpbGFibGVFbXB0eVRwbD5cbiAgICAgICAgICA8Y3FhLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAqbmdJZj1cInNlYXJjaFRlcm07IGVsc2Ugbm9BdmFpbGFibGVBdEFsbFwiXG4gICAgICAgICAgICB0aXRsZT1cIk5vIHZhcmlhYmxlcyBmb3VuZFwiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ05vIHZhcmlhYmxlcyBtYXRjaCAmbGRxdW87JyArIHNlYXJjaFRlcm0gKyAnJnJkcXVvOy4nXCJcbiAgICAgICAgICAgIFtpbWFnZVVybF09XCJzZWFyY2hFbXB0eUltYWdlVXJsXCI+XG4gICAgICAgICAgPC9jcWEtZW1wdHktc3RhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0F2YWlsYWJsZUF0QWxsPlxuICAgICAgICAgICAgPGNxYS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICB0aXRsZT1cIk5vIHZhcmlhYmxlcyBhdmFpbGFibGVcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlRoZXJlIGFyZSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGdsb2JhbCBkYXRhLCBvciB0ZXN0IGRhdGEgcHJvZmlsZXMgYXZhaWxhYmxlIGZvciB0aGlzIHRlc3QgY2FzZSB5ZXQuXCJcbiAgICAgICAgICAgICAgW2ltYWdlVXJsXT1cIm5vRGF0YUltYWdlVXJsXCI+XG4gICAgICAgICAgICA8L2NxYS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYXZhaWxhYmxlTG9hZGluZ1RwbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLXB0LTJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBfIG9mIHNrZWxldG9uUm93c1wiIGNsYXNzPVwiY3FhLWgtWzQwcHhdIGNxYS1yb3VuZGVkLWxnIGNxYS1iZy1bI0YxRjVGOV0gY3FhLWFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBVU0VEIElOIFRFU1QgLS0+XG4gICAgPGRpdiBbaGlkZGVuXT1cImFjdGl2ZVN1YlRhYiAhPT0gJ3VzZWQnXCIgY2xhc3M9XCJjcWEtcGItNlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdVc2VkOyBlbHNlIHVzZWRMb2FkaW5nVHBsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNVc2VkRGF0YTsgZWxzZSB1c2VkRW1wdHlUcGxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlZC5lbnZpcm9ubWVudD8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtbWItMlwiPkVudmlyb25tZW50IFZhcmlhYmxlcyBVc2VkPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzZweF0gY3FhLW1iLTRcIj5cbiAgICAgICAgICAgICAgPGNxYS11c2VkLXZhcmlhYmxlLXJvd1xuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2IG9mIHVzZWQuZW52aXJvbm1lbnQ7IHRyYWNrQnk6IHRyYWNrQnlSb3dcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInYubmFtZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInYudmFsdWVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInYudHlwZVwiXG4gICAgICAgICAgICAgICAgW3NvdXJjZV09XCJ2LnNvdXJjZVwiXG4gICAgICAgICAgICAgICAgW3Blcm1pc3Npb25dPVwidi5wZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgICBbc3RlcExhYmVsXT1cIidTdGVwICcgKyB2LnN0ZXBOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJpc0V4cGFuZGVkKCd1c2VkJywgJ2VudicsIHYuaWQpXCJcbiAgICAgICAgICAgICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwic2V0RXhwYW5kZWQoJ3VzZWQnLCAnZW52Jywgdi5pZCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NxYS11c2VkLXZhcmlhYmxlLXJvdz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZWQuZ2xvYmFsPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS1tYi0yXCI+R2xvYmFsIERhdGEgVXNlZDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLVs2cHhdIGNxYS1tYi00XCI+XG4gICAgICAgICAgICAgIDxjcWEtdXNlZC12YXJpYWJsZS1yb3dcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdiBvZiB1c2VkLmdsb2JhbDsgdHJhY2tCeTogdHJhY2tCeVJvd1wiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwidi5uYW1lXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwidi50eXBlXCJcbiAgICAgICAgICAgICAgICBbc291cmNlXT1cInYuc291cmNlXCJcbiAgICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJ2LnBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgIFtzdGVwTGFiZWxdPVwiJ1N0ZXAgJyArIHYuc3RlcE51bWJlclwiXG4gICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWQoJ3VzZWQnLCAnZ2xvYmFsJywgdi5pZClcIlxuICAgICAgICAgICAgICAgIChleHBhbmRlZENoYW5nZSk9XCJzZXRFeHBhbmRlZCgndXNlZCcsICdnbG9iYWwnLCB2LmlkLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY3FhLXVzZWQtdmFyaWFibGUtcm93PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlZC50ZXN0RGF0YVByb2ZpbGVzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS1tYi0yXCI+VGVzdCBEYXRhIFByb2ZpbGVzIFVzZWQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XSBjcWEtbWItMlwiPlxuICAgICAgICAgICAgICA8Y3FhLXVzZWQtcHJvZmlsZS1yb3dcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcCBvZiB1c2VkLnRlc3REYXRhUHJvZmlsZXM7IHRyYWNrQnk6IHRyYWNrQnlVc2VkVGRwXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJwLm5hbWVcIlxuICAgICAgICAgICAgICAgIFtlbnZOYW1lXT1cInAuZW52TmFtZVwiXG4gICAgICAgICAgICAgICAgW3N0ZXBSYW5nZV09XCJwLnN0ZXBSYW5nZVwiPlxuICAgICAgICAgICAgICA8L2NxYS11c2VkLXByb2ZpbGUtcm93PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlZEVtcHR5VHBsPlxuICAgICAgICAgIDxjcWEtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoVGVybTsgZWxzZSBub1VzZWRBdEFsbFwiXG4gICAgICAgICAgICB0aXRsZT1cIk5vIHVzYWdlcyBmb3VuZFwiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ05vIHVzYWdlcyBtYXRjaCAmbGRxdW87JyArIHNlYXJjaFRlcm0gKyAnJnJkcXVvOy4nXCJcbiAgICAgICAgICAgIFtpbWFnZVVybF09XCJzZWFyY2hFbXB0eUltYWdlVXJsXCI+XG4gICAgICAgICAgPC9jcWEtZW1wdHktc3RhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub1VzZWRBdEFsbD5cbiAgICAgICAgICAgIDxjcWEtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgdGl0bGU9XCJObyB2YXJpYWJsZXMgdXNlZCB5ZXRcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlRoaXMgdGVzdCBjYXNlIGRvZXMgbm90IHJlZmVyZW5jZSBhbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBnbG9iYWwgZGF0YSwgb3IgdGVzdCBkYXRhIHByb2ZpbGVzLlwiXG4gICAgICAgICAgICAgIFtpbWFnZVVybF09XCJub0RhdGFJbWFnZVVybFwiPlxuICAgICAgICAgICAgPC9jcWEtZW1wdHktc3RhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3VzZWRMb2FkaW5nVHBsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcHQtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IF8gb2Ygc2tlbGV0b25Sb3dzXCIgY2xhc3M9XCJjcWEtaC1bNDBweF0gY3FhLXJvdW5kZWQtbGcgY3FhLWJnLVsjRjFGNUY5XSBjcWEtYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93TWFuYWdlRW52QW5kRGF0YUxpbmtcIiBjbGFzcz1cImNxYS1wdC0yXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgIChjbGljayk9XCJvbk1hbmFnZUVudkFuZERhdGEoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsycHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzRGNDZFNV0gY3FhLW5vLXVuZGVybGluZSBob3ZlcjpjcWEtdW5kZXJsaW5lXCI+XG4gICAgICAgICAgTWFuYWdlIGluIEVudmlyb25tZW50ICZhbXA7IERhdGEgTWFuYWdlbWVudDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWxlYWRpbmctbm9uZVwiPiZyc2FxdW87PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQQVJBTUVURVJTIOKAlCBob3N0IHNsb3RzIDxhcHAtc3RlcHMtdmFyaWFibGVzPiBoZXJlLiBVc2VzICpuZ0lmIHJhdGhlciB0aGFuXG4gICAgICAgW2hpZGRlbl0gYmVjYXVzZSB0aGUgYm9keSBuZWVkcyBgY3FhLWZsZXhgIHRvIGdpdmUgdGhlIHNsb3R0ZWQgZm9ybSBhIGJvdW5kZWRcbiAgICAgICBoZWlnaHQsIGFuZCBUYWlsd2luZCdzIGBpbXBvcnRhbnQ6ICcuY3FhLXVpLXJvb3QnYCBjb25maWcgY29tcGlsZXMgYGNxYS1mbGV4YFxuICAgICAgIHRvIGBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnRgLCB3aGljaCB3b3VsZCBvdmVycmlkZSBgW2hpZGRlbl1gJ3MgZGlzcGxheTogbm9uZVxuICAgICAgIGFuZCBsZWFrIHRoZSBwcm9qZWN0ZWQgY29udGVudCBpbnRvIEF2YWlsYWJsZS9Vc2VkLiAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiYWN0aXZlU3ViVGFiID09PSAncGFyYW1ldGVycydcIlxuICAgIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLWgtMCBjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGFyYW1ldGVyc1Nsb3RdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLXBhbmVsLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVzdC1jYXNlLWRldGFpbHMvdmFyaWFibGVzLXBhbmVsL3ZhcmlhYmxlcy1wYW5lbC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFZhcmlhYmxlc1BhbmVsVGFiID0gJ2F2YWlsYWJsZScgfCAndXNlZCcgfCAncGFyYW1ldGVycyc7XG5cbmV4cG9ydCB0eXBlIFZhcmlhYmxlUGVybWlzc2lvbiA9ICdSTycgfCAnUlcnO1xuXG5leHBvcnQgdHlwZSBWYXJpYWJsZVNvdXJjZSA9ICdlbnYnIHwgJ2dsb2JhbCcgfCAnbG9jYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZVZhcmlhYmxlVm0ge1xuICBpZDogbnVtYmVyIHwgc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBzb3VyY2U6IFZhcmlhYmxlU291cmNlO1xuICBwZXJtaXNzaW9uOiBWYXJpYWJsZVBlcm1pc3Npb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmxlVGRwVm0ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJvd3NDb3VudDogbnVtYmVyO1xuICBjb2x1bW5zQ291bnQ6IG51bWJlcjtcbiAgcGVybWlzc2lvbj86IFZhcmlhYmxlUGVybWlzc2lvbjtcbiAgZW52TmFtZT86IHN0cmluZztcbiAgYWN0aXZlT25UZXN0Q2FzZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmxlVmFyaWFibGVzVm0ge1xuICBlbnZpcm9ubWVudDogQXZhaWxhYmxlVmFyaWFibGVWbVtdO1xuICBnbG9iYWw6IEF2YWlsYWJsZVZhcmlhYmxlVm1bXTtcbiAgdGVzdERhdGFQcm9maWxlczogQXZhaWxhYmxlVGRwVm1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VkVmFyaWFibGVWbSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHNvdXJjZTogJ2VudicgfCAnZ2xvYmFsJztcbiAgcGVybWlzc2lvbjogVmFyaWFibGVQZXJtaXNzaW9uO1xuICB0eXBlPzogc3RyaW5nO1xuICBzdGVwTnVtYmVyOiBzdHJpbmc7XG4gIHN0ZXBJZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZWRUZHBWbSB7XG4gIGF0dGFjaG1lbnRJZDogbnVtYmVyO1xuICB0ZXN0RGF0YUlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgZW52TmFtZT86IHN0cmluZztcbiAgc3RlcFJhbmdlOiBzdHJpbmc7XG4gIHN0ZXBJZHM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZWRJblRlc3RWbSB7XG4gIGVudmlyb25tZW50OiBVc2VkVmFyaWFibGVWbVtdO1xuICBnbG9iYWw6IFVzZWRWYXJpYWJsZVZtW107XG4gIHRlc3REYXRhUHJvZmlsZXM6IFVzZWRUZHBWbVtdO1xufVxuIl19