@cqa-lib/cqa-ui 1.1.263 → 1.1.265
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/detail-side-panel/detail-side-panel.component.mjs +9 -127
- package/esm2020/lib/test-case-details/element-popup/element-form/element-form.component.mjs +15 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +571 -677
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +571 -677
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/detail-side-panel/detail-side-panel.component.d.ts +4 -62
- package/lib/test-case-details/element-popup/element-form/element-form.component.d.ts +4 -0
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -2,13 +2,11 @@ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostBi
|
|
|
2
2
|
import { DETAIL_SIDE_PANEL_SCROLL_STYLES } from './detail-side-panel.styles';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/material/icon";
|
|
5
|
-
import * as i2 from "
|
|
6
|
-
import * as i3 from "@angular/
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/material/tooltip";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
8
7
|
export class DetailSidePanelComponent {
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
11
|
-
/** Tabs - each tab has a side panel icon button; tabs and buttons are 1:1 */
|
|
8
|
+
constructor() {
|
|
9
|
+
/** Tabs - each tab has a side panel icon button; tabs and buttons are 1:1. Host defines tabs and content. */
|
|
12
10
|
this.tabs = [
|
|
13
11
|
{ label: 'Test Case', value: 'test-case', icon: 'description' },
|
|
14
12
|
{ label: 'Data Library', value: 'data-library', icon: 'folder' },
|
|
@@ -16,34 +14,8 @@ export class DetailSidePanelComponent {
|
|
|
16
14
|
];
|
|
17
15
|
/** Currently active tab value */
|
|
18
16
|
this.activeTab = 'test-case';
|
|
19
|
-
/** Description section title */
|
|
20
|
-
this.descriptionTitle = 'Description';
|
|
21
|
-
/** Description text content */
|
|
22
|
-
this.descriptionContent = '';
|
|
23
|
-
/** When true, description uses rich text editor and renders as HTML. Host app must load Trix. */
|
|
24
|
-
this.enableMarkdown = false;
|
|
25
|
-
/** Whether to show the Edit button in the Description header */
|
|
26
|
-
this.showEditButton = true;
|
|
27
|
-
/** Metadata items (Created on, Status, Priority, etc.) */
|
|
28
|
-
this.metadataItems = [];
|
|
29
|
-
/** Labels/tags (e.g. Automation, API, SDK, UI/UX) */
|
|
30
|
-
this.labels = [];
|
|
31
|
-
/** Configuration sections - full width (e.g. Execution, AI Configuration) */
|
|
32
|
-
this.configSections = [];
|
|
33
|
-
/** Optional config sections displayed in a 2-column row (e.g. Waits & Retries, Device) */
|
|
34
|
-
this.configSectionsRow2 = [];
|
|
35
|
-
/** Platform: 'web' or 'mobile'. Defaults to 'web'. Used for Device Settings. */
|
|
36
|
-
this.platform = 'web';
|
|
37
|
-
/** When true, hides Priority, Type, Test Data Set, and Prerequisite Case (step groups don't have these). Defaults to false. */
|
|
38
|
-
this.isStepGroup = false;
|
|
39
|
-
/** Configuration section title */
|
|
40
|
-
this.configTitle = 'Configuration';
|
|
41
17
|
/** Whether to show the close button in the side menu */
|
|
42
18
|
this.showCloseButton = false;
|
|
43
|
-
/** When true, test case details start in edit mode (useful for Storybook). */
|
|
44
|
-
this.startInEditMode = false;
|
|
45
|
-
/** Override config per select for API-driven options, server search, load more. */
|
|
46
|
-
this.selectConfigOverrides = {};
|
|
47
19
|
/** Whether the panel is expanded (affects expand button icon and panel width) */
|
|
48
20
|
this.expanded = true;
|
|
49
21
|
/** Panel width when expanded (e.g. '480px', '25%') */
|
|
@@ -59,15 +31,6 @@ export class DetailSidePanelComponent {
|
|
|
59
31
|
this.closeTooltip = 'Close';
|
|
60
32
|
this.back = new EventEmitter();
|
|
61
33
|
this.tabChange = new EventEmitter();
|
|
62
|
-
this.editDescription = new EventEmitter();
|
|
63
|
-
this.cancel = new EventEmitter();
|
|
64
|
-
this.saveChanges = new EventEmitter();
|
|
65
|
-
this.metadataLinkClick = new EventEmitter();
|
|
66
|
-
this.selectSearch = new EventEmitter();
|
|
67
|
-
this.selectLoadMore = new EventEmitter();
|
|
68
|
-
this.selectOpened = new EventEmitter();
|
|
69
|
-
this.selectionChange = new EventEmitter();
|
|
70
|
-
this.labelAdded = new EventEmitter();
|
|
71
34
|
this.expandToggle = new EventEmitter();
|
|
72
35
|
this.close = new EventEmitter();
|
|
73
36
|
}
|
|
@@ -83,12 +46,6 @@ export class DetailSidePanelComponent {
|
|
|
83
46
|
trackByTabValue(_i, tab) {
|
|
84
47
|
return tab.value;
|
|
85
48
|
}
|
|
86
|
-
trackByMetadataLabel(_i, item) {
|
|
87
|
-
return item.label;
|
|
88
|
-
}
|
|
89
|
-
trackByConfigTitle(_i, section) {
|
|
90
|
-
return section.title;
|
|
91
|
-
}
|
|
92
49
|
onBack() {
|
|
93
50
|
this.back.emit();
|
|
94
51
|
}
|
|
@@ -100,84 +57,27 @@ export class DetailSidePanelComponent {
|
|
|
100
57
|
this.tabChange.emit(tab.value);
|
|
101
58
|
}
|
|
102
59
|
}
|
|
103
|
-
onEditDescription() {
|
|
104
|
-
this.editDescription.emit();
|
|
105
|
-
}
|
|
106
|
-
onSaveChanges(data) {
|
|
107
|
-
this.saveChanges.emit(data);
|
|
108
|
-
}
|
|
109
|
-
onCancel() {
|
|
110
|
-
this.cancel.emit();
|
|
111
|
-
}
|
|
112
60
|
onExpandToggle() {
|
|
113
61
|
this.expandToggle.emit();
|
|
114
62
|
}
|
|
115
63
|
onClose() {
|
|
116
64
|
this.close.emit();
|
|
117
65
|
}
|
|
118
|
-
onMetadataLinkClick(item) {
|
|
119
|
-
if (item.link) {
|
|
120
|
-
this.metadataLinkClick.emit(item);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
getStatusDotClass(item) {
|
|
124
|
-
if (!item.statusColor)
|
|
125
|
-
return '';
|
|
126
|
-
switch (item.statusColor) {
|
|
127
|
-
case 'yellow':
|
|
128
|
-
return 'cqa-bg-[#EAB308]';
|
|
129
|
-
case 'red':
|
|
130
|
-
return 'cqa-bg-[#DC2626]';
|
|
131
|
-
case 'green':
|
|
132
|
-
return 'cqa-bg-[#16A34A]';
|
|
133
|
-
case 'gray':
|
|
134
|
-
default:
|
|
135
|
-
return 'cqa-bg-[#94A3B8]';
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
66
|
}
|
|
139
|
-
DetailSidePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailSidePanelComponent, deps: [
|
|
140
|
-
DetailSidePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailSidePanelComponent, selector: "cqa-detail-side-panel", inputs: { tabs: "tabs", activeTab: "activeTab",
|
|
67
|
+
DetailSidePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailSidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
DetailSidePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailSidePanelComponent, selector: "cqa-detail-side-panel", inputs: { tabs: "tabs", activeTab: "activeTab", showCloseButton: "showCloseButton", expanded: "expanded", expandedWidth: "expandedWidth", collapsedWidth: "collapsedWidth", expandTooltip: "expandTooltip", collapseTooltip: "collapseTooltip", closeTooltip: "closeTooltip" }, outputs: { back: "back", tabChange: "tabChange", expandToggle: "expandToggle", close: "close" }, host: { properties: { "style.width": "this.hostWidth", "style.min-width": "this.hostMinWidth", "style.max-width": "this.hostMaxWidth", "style.overflow": "this.hostOverflow" }, styleAttribute: "transition: width 0.3s ease-in-out", classAttribute: "cqa-ui-root cqa-flex cqa-flex-col cqa-h-full cqa-flex-shrink-0 cqa-flex-grow-0 cqa-bg-white cqa-shadow-[-4px_0_6px_-1px_rgba(0,0,0,0.05)]" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ expanded ? 'chevron_left' : 'chevron_right' }}</mat-icon>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ tab.icon || 'circle' }}</mat-icon>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Tab content: fully provided by host via content projection. Host uses *ngIf per tab so only active content is projected. Add/remove tabs in the host without changing cqa-ui-lib. -->\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [".detail-side-panel-scroll{overflow-y:auto!important;overflow-x:hidden!important;min-height:0!important;-webkit-overflow-scrolling:touch}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
141
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailSidePanelComponent, decorators: [{
|
|
142
70
|
type: Component,
|
|
143
71
|
args: [{ selector: 'cqa-detail-side-panel', styles: [DETAIL_SIDE_PANEL_SCROLL_STYLES], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
144
72
|
class: 'cqa-ui-root cqa-flex cqa-flex-col cqa-h-full cqa-flex-shrink-0 cqa-flex-grow-0 cqa-bg-white cqa-shadow-[-4px_0_6px_-1px_rgba(0,0,0,0.05)]',
|
|
145
73
|
style: 'transition: width 0.3s ease-in-out',
|
|
146
|
-
}, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ expanded ? 'chevron_left' : 'chevron_right' }}</mat-icon>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ tab.icon || 'circle' }}</mat-icon>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!--
|
|
147
|
-
}],
|
|
74
|
+
}, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ expanded ? 'chevron_left' : 'chevron_right' }}</mat-icon>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5\">{{ tab.icon || 'circle' }}</mat-icon>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Tab content: fully provided by host via content projection. Host uses *ngIf per tab so only active content is projected. Add/remove tabs in the host without changing cqa-ui-lib. -->\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
75
|
+
}], propDecorators: { tabs: [{
|
|
148
76
|
type: Input
|
|
149
77
|
}], activeTab: [{
|
|
150
78
|
type: Input
|
|
151
|
-
}], descriptionTitle: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], descriptionContent: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], enableMarkdown: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], showEditButton: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], metadataItems: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], labels: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], configSections: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], configSectionsRow2: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], platform: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], isStepGroup: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], configTitle: [{
|
|
172
|
-
type: Input
|
|
173
79
|
}], showCloseButton: [{
|
|
174
80
|
type: Input
|
|
175
|
-
}], startInEditMode: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], editing: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], selectConfigOverrides: [{
|
|
180
|
-
type: Input
|
|
181
81
|
}], expanded: [{
|
|
182
82
|
type: Input
|
|
183
83
|
}], expandedWidth: [{
|
|
@@ -206,27 +106,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
206
106
|
type: Output
|
|
207
107
|
}], tabChange: [{
|
|
208
108
|
type: Output
|
|
209
|
-
}], editDescription: [{
|
|
210
|
-
type: Output
|
|
211
|
-
}], cancel: [{
|
|
212
|
-
type: Output
|
|
213
|
-
}], saveChanges: [{
|
|
214
|
-
type: Output
|
|
215
|
-
}], metadataLinkClick: [{
|
|
216
|
-
type: Output
|
|
217
|
-
}], selectSearch: [{
|
|
218
|
-
type: Output
|
|
219
|
-
}], selectLoadMore: [{
|
|
220
|
-
type: Output
|
|
221
|
-
}], selectOpened: [{
|
|
222
|
-
type: Output
|
|
223
|
-
}], selectionChange: [{
|
|
224
|
-
type: Output
|
|
225
|
-
}], labelAdded: [{
|
|
226
|
-
type: Output
|
|
227
109
|
}], expandToggle: [{
|
|
228
110
|
type: Output
|
|
229
111
|
}], close: [{
|
|
230
112
|
type: Output
|
|
231
113
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBRXZCLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBZTdFLE1BQU0sT0FBTyx3QkFBd0I7SUFzR25DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBckcxQyw2RUFBNkU7UUFDcEUsU0FBSSxHQUF5QjtZQUNwQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQy9ELEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUN6RCxDQUFDO1FBRUYsaUNBQWlDO1FBQ3hCLGNBQVMsR0FBRyxXQUFXLENBQUM7UUFFakMsZ0NBQWdDO1FBQ3ZCLHFCQUFnQixHQUFHLGFBQWEsQ0FBQztRQUUxQywrQkFBK0I7UUFDdEIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBRWpDLGlHQUFpRztRQUN4RixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyxnRUFBZ0U7UUFDdkQs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LGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25JdGVtIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi1jYXJkL2NvbmZpZ3VyYXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRGV0YWlsU2lkZVBhbmVsVGFiLFxuICBEZXRhaWxTaWRlUGFuZWxNZXRhZGF0YUl0ZW0sXG4gIERldGFpbFNpZGVQYW5lbENvbmZpZ1NlY3Rpb24sXG59IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwubW9kZWxzJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlRGV0YWlsc0VkaXRGb3JtRGF0YSxcbiAgU2VsZWN0Q29uZmlnT3ZlcnJpZGVzLFxufSBmcm9tICcuLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1lZGl0L3Rlc3QtY2FzZS1kZXRhaWxzLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IERFVEFJTF9TSURFX1BBTkVMX1NDUk9MTF9TVFlMRVMgfSBmcm9tICcuL2RldGFpbC1zaWRlLXBhbmVsLnN0eWxlcyc7XG5cbmV4cG9ydCB0eXBlIHsgRGV0YWlsU2lkZVBhbmVsVGFiLCBEZXRhaWxTaWRlUGFuZWxNZXRhZGF0YUl0ZW0sIERldGFpbFNpZGVQYW5lbENvbmZpZ1NlY3Rpb24gfSBmcm9tICcuL2RldGFpbC1zaWRlLXBhbmVsLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1kZXRhaWwtc2lkZS1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW0RFVEFJTF9TSURFX1BBTkVMX1NDUk9MTF9TVFlMRVNdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOlxuICAgICAgJ2NxYS11aS1yb290IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaC1mdWxsIGNxYS1mbGV4LXNocmluay0wIGNxYS1mbGV4LWdyb3ctMCBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy1bLTRweF8wXzZweF8tMXB4X3JnYmEoMCwwLDAsMC4wNSldJyxcbiAgICBzdHlsZTogJ3RyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZS1pbi1vdXQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBEZXRhaWxTaWRlUGFuZWxDb21wb25lbnQge1xuICAvKiogVGFicyAtIGVhY2ggdGFiIGhhcyBhIHNpZGUgcGFuZWwgaWNvbiBidXR0b247IHRhYnMgYW5kIGJ1dHRvbnMgYXJlIDE6MSAqL1xuICBASW5wdXQoKSB0YWJzOiBEZXRhaWxTaWRlUGFuZWxUYWJbXSA9IFtcbiAgICB7IGxhYmVsOiAnVGVzdCBDYXNlJywgdmFsdWU6ICd0ZXN0LWNhc2UnLCBpY29uOiAnZGVzY3JpcHRpb24nIH0sXG4gICAgeyBsYWJlbDogJ0RhdGEgTGlicmFyeScsIHZhbHVlOiAnZGF0YS1saWJyYXJ5JywgaWNvbjogJ2ZvbGRlcicgfSxcbiAgICB7IGxhYmVsOiAnVmFyaWFibGVzJywgdmFsdWU6ICd2YXJpYWJsZXMnLCBpY29uOiAnY29kZScgfSxcbiAgXTtcblxuICAvKiogQ3VycmVudGx5IGFjdGl2ZSB0YWIgdmFsdWUgKi9cbiAgQElucHV0KCkgYWN0aXZlVGFiID0gJ3Rlc3QtY2FzZSc7XG5cbiAgLyoqIERlc2NyaXB0aW9uIHNlY3Rpb24gdGl0bGUgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25UaXRsZSA9ICdEZXNjcmlwdGlvbic7XG5cbiAgLyoqIERlc2NyaXB0aW9uIHRleHQgY29udGVudCAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbkNvbnRlbnQgPSAnJztcblxuICAvKiogV2hlbiB0cnVlLCBkZXNjcmlwdGlvbiB1c2VzIHJpY2ggdGV4dCBlZGl0b3IgYW5kIHJlbmRlcnMgYXMgSFRNTC4gSG9zdCBhcHAgbXVzdCBsb2FkIFRyaXguICovXG4gIEBJbnB1dCgpIGVuYWJsZU1hcmtkb3duID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgRWRpdCBidXR0b24gaW4gdGhlIERlc2NyaXB0aW9uIGhlYWRlciAqL1xuICBASW5wdXQoKSBzaG93RWRpdEJ1dHRvbiA9IHRydWU7XG5cbiAgLyoqIE1ldGFkYXRhIGl0ZW1zIChDcmVhdGVkIG9uLCBTdGF0dXMsIFByaW9yaXR5LCBldGMuKSAqL1xuICBASW5wdXQoKSBtZXRhZGF0YUl0ZW1zOiBEZXRhaWxTaWRlUGFuZWxNZXRhZGF0YUl0ZW1bXSA9IFtdO1xuXG4gIC8qKiBMYWJlbHMvdGFncyAoZS5nLiBBdXRvbWF0aW9uLCBBUEksIFNESywgVUkvVVgpICovXG4gIEBJbnB1dCgpIGxhYmVsczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ29uZmlndXJhdGlvbiBzZWN0aW9ucyAtIGZ1bGwgd2lkdGggKGUuZy4gRXhlY3V0aW9uLCBBSSBDb25maWd1cmF0aW9uKSAqL1xuICBASW5wdXQoKSBjb25maWdTZWN0aW9uczogRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIE9wdGlvbmFsIGNvbmZpZyBzZWN0aW9ucyBkaXNwbGF5ZWQgaW4gYSAyLWNvbHVtbiByb3cgKGUuZy4gV2FpdHMgJiBSZXRyaWVzLCBEZXZpY2UpICovXG4gIEBJbnB1dCgpIGNvbmZpZ1NlY3Rpb25zUm93MjogRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIFBsYXRmb3JtOiAnd2ViJyBvciAnbW9iaWxlJy4gRGVmYXVsdHMgdG8gJ3dlYicuIFVzZWQgZm9yIERldmljZSBTZXR0aW5ncy4gKi9cbiAgQElucHV0KCkgcGxhdGZvcm06ICd3ZWInIHwgJ21vYmlsZScgPSAnd2ViJztcblxuICAvKiogV2hlbiB0cnVlLCBoaWRlcyBQcmlvcml0eSwgVHlwZSwgVGVzdCBEYXRhIFNldCwgYW5kIFByZXJlcXVpc2l0ZSBDYXNlIChzdGVwIGdyb3VwcyBkb24ndCBoYXZlIHRoZXNlKS4gRGVmYXVsdHMgdG8gZmFsc2UuICovXG4gIEBJbnB1dCgpIGlzU3RlcEdyb3VwID0gZmFsc2U7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aXRsZSAqL1xuICBASW5wdXQoKSBjb25maWdUaXRsZSA9ICdDb25maWd1cmF0aW9uJztcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjbG9zZSBidXR0b24gaW4gdGhlIHNpZGUgbWVudSAqL1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSBmYWxzZTtcblxuICAvKiogV2hlbiB0cnVlLCB0ZXN0IGNhc2UgZGV0YWlscyBzdGFydCBpbiBlZGl0IG1vZGUgKHVzZWZ1bCBmb3IgU3Rvcnlib29rKS4gKi9cbiAgQElucHV0KCkgc3RhcnRJbkVkaXRNb2RlID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQsIHBhcmVudCBjb250cm9scyBlZGl0IG1vZGUgKGZpeGVzIFN0b3J5Ym9vayBldmVudCBmbG93KS4gKi9cbiAgQElucHV0KCkgZWRpdGluZz86IGJvb2xlYW47XG5cbiAgLyoqIE92ZXJyaWRlIGNvbmZpZyBwZXIgc2VsZWN0IGZvciBBUEktZHJpdmVuIG9wdGlvbnMsIHNlcnZlciBzZWFyY2gsIGxvYWQgbW9yZS4gKi9cbiAgQElucHV0KCkgc2VsZWN0Q29uZmlnT3ZlcnJpZGVzOiBTZWxlY3RDb25maWdPdmVycmlkZXMgPSB7fTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgZXhwYW5kZWQgKGFmZmVjdHMgZXhwYW5kIGJ1dHRvbiBpY29uIGFuZCBwYW5lbCB3aWR0aCkgKi9cbiAgQElucHV0KCkgZXhwYW5kZWQgPSB0cnVlO1xuXG4gIC8qKiBQYW5lbCB3aWR0aCB3aGVuIGV4cGFuZGVkIChlLmcuICc0ODBweCcsICcyNSUnKSAqL1xuICBASW5wdXQoKSBleHBhbmRlZFdpZHRoID0gJzM4MHB4JztcblxuICAvKiogUGFuZWwgd2lkdGggd2hlbiBjb2xsYXBzZWQgKGUuZy4gJzU2cHgnIC0gZml0cyBpY29uIGJhciArIGJhY2sgYnV0dG9uKSAqL1xuICBASW5wdXQoKSBjb2xsYXBzZWRXaWR0aCA9ICc1NnB4JztcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgZ2V0IGhvc3RXaWR0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkID8gdGhpcy5leHBhbmRlZFdpZHRoIDogdGhpcy5jb2xsYXBzZWRXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUubWluLXdpZHRoJykgZ2V0IGhvc3RNaW5XaWR0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkID8gdGhpcy5leHBhbmRlZFdpZHRoIDogdGhpcy5jb2xsYXBzZWRXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJykgZ2V0IGhvc3RNYXhXaWR0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkID8gdGhpcy5leHBhbmRlZFdpZHRoIDogdGhpcy5jb2xsYXBzZWRXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUub3ZlcmZsb3cnKSBob3N0T3ZlcmZsb3cgPSAnaGlkZGVuJztcblxuICAvKiogVG9vbHRpcCBmb3IgZXhwYW5kIGJ1dHRvbiB3aGVuIHBhbmVsIGlzIGNvbGxhcHNlZCAqL1xuICBASW5wdXQoKSBleHBhbmRUb29sdGlwID0gJ0V4cGFuZCc7XG5cbiAgLyoqIFRvb2x0aXAgZm9yIGV4cGFuZCBidXR0b24gd2hlbiBwYW5lbCBpcyBleHBhbmRlZCAoY29sbGFwc2UpICovXG4gIEBJbnB1dCgpIGNvbGxhcHNlVG9vbHRpcCA9ICdDb2xsYXBzZSc7XG5cbiAgLyoqIFRvb2x0aXAgZm9yIGNsb3NlIGJ1dHRvbiAqL1xuICBASW5wdXQoKSBjbG9zZVRvb2x0aXAgPSAnQ2xvc2UnO1xuXG4gIEBPdXRwdXQoKSBiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBlZGl0RGVzY3JpcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhPigpO1xuICBAT3V0cHV0KCkgbWV0YWRhdGFMaW5rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgcXVlcnk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0TG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdE9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9PigpO1xuICBAT3V0cHV0KCkgbGFiZWxBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZXhwYW5kVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHRyYWNrQnlUYWJWYWx1ZShfaTogbnVtYmVyLCB0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi52YWx1ZTtcbiAgfVxuXG4gIHRyYWNrQnlNZXRhZGF0YUxhYmVsKF9pOiBudW1iZXIsIGl0ZW06IERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gIH1cblxuICB0cmFja0J5Q29uZmlnVGl0bGUoX2k6IG51bWJlciwgc2VjdGlvbjogRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlY3Rpb24udGl0bGU7XG4gIH1cblxuICBvbkJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuXG4gIG9uVGFiQ2xpY2sodGFiOiBEZXRhaWxTaWRlUGFuZWxUYWIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQoKTtcbiAgICB9XG4gICAgaWYgKHRhYi52YWx1ZSAhPT0gdGhpcy5hY3RpdmVUYWIpIHtcbiAgICAgIHRoaXMudGFiQ2hhbmdlLmVtaXQodGFiLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbkVkaXREZXNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXREZXNjcmlwdGlvbi5lbWl0KCk7XG4gIH1cblxuICBvblNhdmVDaGFuZ2VzKGRhdGE6IFRlc3RDYXNlRGV0YWlsc0VkaXRGb3JtRGF0YSk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZUNoYW5nZXMuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uRXhwYW5kVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICBvbk1ldGFkYXRhTGlua0NsaWNrKGl0ZW06IERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmxpbmspIHtcbiAgICAgIHRoaXMubWV0YWRhdGFMaW5rQ2xpY2suZW1pdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXNEb3RDbGFzcyhpdGVtOiBEZXRhaWxTaWRlUGFuZWxNZXRhZGF0YUl0ZW0pOiBzdHJpbmcge1xuICAgIGlmICghaXRlbS5zdGF0dXNDb2xvcikgcmV0dXJuICcnO1xuICAgIHN3aXRjaCAoaXRlbS5zdGF0dXNDb2xvcikge1xuICAgICAgY2FzZSAneWVsbG93JzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNFQUIzMDhdJztcbiAgICAgIGNhc2UgJ3JlZCc6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjREMyNjI2XSc7XG4gICAgICBjYXNlICdncmVlbic6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjMTZBMzRBXSc7XG4gICAgICBjYXNlICdncmF5JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjOTRBM0I4XSc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1oLWZ1bGwgY3FhLW1pbi13LTAgY3FhLWJnLXdoaXRlXCI+XG4gIDwhLS0gTWFpbiBjb250ZW50OiBTaWRlIG1lbnUgKyBTY3JvbGxhYmxlIGNvbnRlbnQgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1ncmlkIGNxYS1mbGV4LTEgY3FhLW1pbi1oLTAgY3FhLW1pbi13LTAgY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJleHBhbmRlZCA/ICdhdXRvIDFmcicgOiAnYXV0byAwZnInXCJcbiAgICBzdHlsZT1cInRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtY29sdW1ucyAwLjNzIGVhc2UtaW4tb3V0XCI+XG4gICAgPCEtLSBMZWZ0IHZlcnRpY2FsIGljb24gbWVudSAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcHktNCBjcWEtcHgtMiBjcWEtYm9yZGVyLXIgY3FhLWJvcmRlci1bI0Y1RjVGNV0gY3FhLWZsZXgtc2hyaW5rLTAgY3FhLXRleHQtWyMwQTBBMEFdXCJcbiAgICAgIHN0eWxlPVwiYm94LXNoYWRvdzogMXB4IDRweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1wiPlxuICAgICAgPCEtLSBFeHBhbmQgLyBDb2xsYXBzZSBidXR0b24gKGFsd2F5cyB2aXNpYmxlKSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImV4cGFuZGVkID8gY29sbGFwc2VUb29sdGlwIDogZXhwYW5kVG9vbHRpcFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctOSBjcWEtaC05IGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsjNjQ3NDhCXSBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvbkV4cGFuZFRvZ2dsZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsyMHB4XSBjcWEtdy01IGNxYS1oLTVcIj57eyBleHBhbmRlZCA/ICdjaGV2cm9uX2xlZnQnIDogJ2NoZXZyb25fcmlnaHQnIH19PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBDbG9zZSBidXR0b24gLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImNsb3NlVG9vbHRpcFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctOSBjcWEtaC05IGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsjNjQ3NDhCXSBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBUYWIgYnV0dG9ucyAoMToxIHdpdGggdGFicykgLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgdHJhY2tCeTogdHJhY2tCeVRhYlZhbHVlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRhYi5sYWJlbFwiXG4gICAgICAgIFtjbGFzcy5jcWEtYmctWyMzRjQzRUVdXT1cImFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS10ZXh0LXdoaXRlXT1cImFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlXCJcbiAgICAgICAgW2NsYXNzLmNxYS10ZXh0LVsjNjQ3NDhCXV09XCJhY3RpdmVUYWIgIT09IHRhYi52YWx1ZVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctOSBjcWEtaC05IGNxYS1yb3VuZGVkLWxnIGhvdmVyOmNxYS1iZy1bI0UyRThGMF0gaG92ZXI6Y3FhLXRleHQtWyMzMzQxNTVdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2sodGFiKVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bMjBweF0gY3FhLXctNSBjcWEtaC01XCI+e3sgdGFiLmljb24gfHwgJ2NpcmNsZScgfX08L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNjcm9sbGFibGUgY29udGVudCBhcmVhIChjb2xsYXBzZXMgd2l0aCBhbmltYXRpb24gd2hlbiBleHBhbmRlZCBpcyBmYWxzZSkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtbWluLWgtMCBjcWEtbWluLXctMCBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS13LWZ1bGwgY3FhLWgtZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1zaWRlLXBhbmVsLXNjcm9sbCBjcWEtZmxleC0xIGNxYS1taW4taC0wIGNxYS1taW4tdy0wIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLW92ZXJmbG93LXgtaGlkZGVuIGNxYS1wLTQgY3FhLXNwYWNlLXktNFwiIHN0eWxlPVwib3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuOyBtaW4taGVpZ2h0OiAwOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XCI+XG4gICAgICA8IS0tIFRhYnM6IGVxdWFsbHkgZGlzdHJpYnV0ZWQgKEZpZ21hOiBwdXJwbGUgYWN0aXZlLCBncmF5IGluYWN0aXZlKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLVszLjVweF0gY3FhLXAtWzMuNXB4XSBjcWEtYmctWyNGMUY1RjldIGNxYS1yb3VuZGVkLWxnIGNxYS13LWZ1bGxcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5VGFiVmFsdWVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtYmctWyMzRjQzRUVdXT1cImFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLXRleHQtd2hpdGVdPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtdGV4dC1bIzY0NzQ4Ql1dPVwiYWN0aXZlVGFiICE9PSB0YWIudmFsdWVcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktMiBjcWEtcm91bmRlZC1sZyBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmNxYS1vcGFjaXR5LTkwIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0yIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctWyMzRjQzRUVdIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTJcIlxuICAgICAgICAgIChjbGljayk9XCJvblRhYkNsaWNrKHRhYilcIj5cbiAgICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUZXN0IENhc2UgdGFiOiB1c2UgY3FhLXRlc3QtY2FzZS1kZXRhaWxzIChGaWdtYSBkZXNpZ24pIC0tPlxuICAgICAgPGNxYS10ZXN0LWNhc2UtZGV0YWlsc1xuICAgICAgICAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ3Rlc3QtY2FzZSdcIlxuICAgICAgICBbZGVzY3JpcHRpb25UaXRsZV09XCJkZXNjcmlwdGlvblRpdGxlXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uQ29udGVudF09XCJkZXNjcmlwdGlvbkNvbnRlbnRcIlxuICAgICAgICBbZW5hYmxlTWFya2Rvd25dPVwiZW5hYmxlTWFya2Rvd25cIlxuICAgICAgICBbc2hvd0VkaXRCdXR0b25dPVwic2hvd0VkaXRCdXR0b25cIlxuICAgICAgICBbc3RhcnRJbkVkaXRNb2RlXT1cInN0YXJ0SW5FZGl0TW9kZVwiXG4gICAgICAgIFtlZGl0aW5nXT1cImVkaXRpbmdcIlxuICAgICAgICBbc2VsZWN0Q29uZmlnT3ZlcnJpZGVzXT1cInNlbGVjdENvbmZpZ092ZXJyaWRlc1wiXG4gICAgICAgIFttZXRhZGF0YUl0ZW1zXT1cIm1ldGFkYXRhSXRlbXNcIlxuICAgICAgICBbbGFiZWxzXT1cImxhYmVsc1wiXG4gICAgICAgIFtjb25maWdUaXRsZV09XCJjb25maWdUaXRsZVwiXG4gICAgICAgIFtjb25maWdTZWN0aW9uc109XCJjb25maWdTZWN0aW9uc1wiXG4gICAgICAgIFtjb25maWdTZWN0aW9uc1JvdzJdPVwiY29uZmlnU2VjdGlvbnNSb3cyXCJcbiAgICAgICAgW3BsYXRmb3JtXT1cInBsYXRmb3JtXCJcbiAgICAgICAgW2lzU3RlcEdyb3VwXT1cImlzU3RlcEdyb3VwXCJcbiAgICAgICAgKGVkaXREZXNjcmlwdGlvbik9XCJvbkVkaXREZXNjcmlwdGlvbigpXCJcbiAgICAgICAgKGNhbmNlbCk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgKHNhdmVDaGFuZ2VzKT1cIm9uU2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gICAgICAgIChtZXRhZGF0YUxpbmtDbGljayk9XCJvbk1ldGFkYXRhTGlua0NsaWNrKCRldmVudClcIlxuICAgICAgICAoc2VsZWN0U2VhcmNoKT1cInNlbGVjdFNlYXJjaC5lbWl0KCRldmVudClcIlxuICAgICAgICAoc2VsZWN0TG9hZE1vcmUpPVwic2VsZWN0TG9hZE1vcmUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdE9wZW5lZCk9XCJzZWxlY3RPcGVuZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKGxhYmVsQWRkZWQpPVwibGFiZWxBZGRlZC5lbWl0KCRldmVudClcIj5cbiAgICAgIDwvY3FhLXRlc3QtY2FzZS1kZXRhaWxzPlxuXG4gICAgICA8IS0tIFBsYWNlaG9sZGVyIGZvciBvdGhlciB0YWJzIChEYXRhIExpYnJhcnksIFZhcmlhYmxlcykgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiICE9PSAndGVzdC1jYXNlJ1wiIGNsYXNzPVwiY3FhLXAtNCBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLXRleHQtc21cIj5cbiAgICAgICAge3sgYWN0aXZlVGFiID09PSAnZGF0YS1saWJyYXJ5JyA/ICdEYXRhIExpYnJhcnkgY29udGVudCcgOiAnVmFyaWFibGVzIGNvbnRlbnQnIH19IOKAkyBjb21pbmcgc29vblxuICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFlN0UsTUFBTSxPQUFPLHdCQUF3QjtJQVhyQztRQVlFLDZHQUE2RztRQUNwRyxTQUFJLEdBQXlCO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0QsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3pELENBQUM7UUFFRixpQ0FBaUM7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUVqQyx3REFBd0Q7UUFDL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsaUZBQWlGO1FBQ3hFLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsc0RBQXNEO1FBQzdDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBRWpDLDZFQUE2RTtRQUNwRSxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQWNGLGlCQUFZLEdBQUcsUUFBUSxDQUFD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XG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV0YWlsU2lkZVBhbmVsVGFiIH0gZnJvbSAnLi9kZXRhaWwtc2lkZS1wYW5lbC5tb2RlbHMnO1xuaW1wb3J0IHsgREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFUyB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwuc3R5bGVzJztcblxuZXhwb3J0IHR5cGUgeyBEZXRhaWxTaWRlUGFuZWxUYWIsIERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSwgRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbiB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRldGFpbC1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFU10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6XG4gICAgICAnY3FhLXVpLXJvb3QgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1oLWZ1bGwgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWZsZXgtZ3Jvdy0wIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LVstNHB4XzBfNnB4Xy0xcHhfcmdiYSgwLDAsMCwwLjA1KV0nLFxuICAgIHN0eWxlOiAndHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLWluLW91dCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIERldGFpbFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIC8qKiBUYWJzIC0gZWFjaCB0YWIgaGFzIGEgc2lkZSBwYW5lbCBpY29uIGJ1dHRvbjsgdGFicyBhbmQgYnV0dG9ucyBhcmUgMToxLiBIb3N0IGRlZmluZXMgdGFicyBhbmQgY29udGVudC4gKi9cbiAgQElucHV0KCkgdGFiczogRGV0YWlsU2lkZVBhbmVsVGFiW10gPSBbXG4gICAgeyBsYWJlbDogJ1Rlc3QgQ2FzZScsIHZhbHVlOiAndGVzdC1jYXNlJywgaWNvbjogJ2Rlc2NyaXB0aW9uJyB9LFxuICAgIHsgbGFiZWw6ICdEYXRhIExpYnJhcnknLCB2YWx1ZTogJ2RhdGEtbGlicmFyeScsIGljb246ICdmb2xkZXInIH0sXG4gICAgeyBsYWJlbDogJ1ZhcmlhYmxlcycsIHZhbHVlOiAndmFyaWFibGVzJywgaWNvbjogJ2NvZGUnIH0sXG4gIF07XG5cbiAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdGFiIHZhbHVlICovXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYiA9ICd0ZXN0LWNhc2UnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgc2lkZSBtZW51ICovXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZCAoYWZmZWN0cyBleHBhbmQgYnV0dG9uIGljb24gYW5kIHBhbmVsIHdpZHRoKSAqL1xuICBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqIFBhbmVsIHdpZHRoIHdoZW4gZXhwYW5kZWQgKGUuZy4gJzQ4MHB4JywgJzI1JScpICovXG4gIEBJbnB1dCgpIGV4cGFuZGVkV2lkdGggPSAnMzgwcHgnO1xuXG4gIC8qKiBQYW5lbCB3aWR0aCB3aGVuIGNvbGxhcHNlZCAoZS5nLiAnNTZweCcgLSBmaXRzIGljb24gYmFyICsgYmFjayBidXR0b24pICovXG4gIEBJbnB1dCgpIGNvbGxhcHNlZFdpZHRoID0gJzU2cHgnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBnZXQgaG9zdFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBnZXQgaG9zdE1pbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBnZXQgaG9zdE1heFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpIGhvc3RPdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIC8qKiBUb29sdGlwIGZvciBleHBhbmQgYnV0dG9uIHdoZW4gcGFuZWwgaXMgY29sbGFwc2VkICovXG4gIEBJbnB1dCgpIGV4cGFuZFRvb2x0aXAgPSAnRXhwYW5kJztcblxuICAvKiogVG9vbHRpcCBmb3IgZXhwYW5kIGJ1dHRvbiB3aGVuIHBhbmVsIGlzIGV4cGFuZGVkIChjb2xsYXBzZSkgKi9cbiAgQElucHV0KCkgY29sbGFwc2VUb29sdGlwID0gJ0NvbGxhcHNlJztcblxuICAvKiogVG9vbHRpcCBmb3IgY2xvc2UgYnV0dG9uICovXG4gIEBJbnB1dCgpIGNsb3NlVG9vbHRpcCA9ICdDbG9zZSc7XG5cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRyYWNrQnlUYWJWYWx1ZShfaTogbnVtYmVyLCB0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi52YWx1ZTtcbiAgfVxuXG4gIG9uQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHZvaWQge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5leHBhbmRUb2dnbGUuZW1pdCgpO1xuICAgIH1cbiAgICBpZiAodGFiLnZhbHVlICE9PSB0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh0YWIudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRXhwYW5kVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWgtZnVsbCBjcWEtbWluLXctMCBjcWEtYmctd2hpdGVcIj5cbiAgPCEtLSBNYWluIGNvbnRlbnQ6IFNpZGUgbWVudSArIFNjcm9sbGFibGUgY29udGVudCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWdyaWQgY3FhLWZsZXgtMSBjcWEtbWluLWgtMCBjcWEtbWluLXctMCBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImV4cGFuZGVkID8gJ2F1dG8gMWZyJyA6ICdhdXRvIDBmcidcIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIDAuM3MgZWFzZS1pbi1vdXRcIj5cbiAgICA8IS0tIExlZnQgdmVydGljYWwgaWNvbiBtZW51IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1weS00IGNxYS1weC0yIGNxYS1ib3JkZXItciBjcWEtYm9yZGVyLVsjRjVGNUY1XSBjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bIzBBMEEwQV1cIlxuICAgICAgc3R5bGU9XCJib3gtc2hhZG93OiAxcHggNHB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XCI+XG4gICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGJ1dHRvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZXhwYW5kZWQgPyBjb2xsYXBzZVRvb2x0aXAgOiBleHBhbmRUb29sdGlwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWyM2NDc0OEJdIGhvdmVyOmNxYS1iZy1bI0UyRThGMF0gaG92ZXI6Y3FhLXRleHQtWyMzMzQxNTVdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kVG9nZ2xlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNVwiPnt7IGV4cGFuZGVkID8gJ2NoZXZyb25fbGVmdCcgOiAnY2hldnJvbl9yaWdodCcgfX08L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tIENsb3NlIGJ1dHRvbiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiY2xvc2VUb29sdGlwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWyM2NDc0OEJdIGhvdmVyOmNxYS1iZy1bI0UyRThGMF0gaG92ZXI6Y3FhLXRleHQtWyMzMzQxNTVdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bMjBweF0gY3FhLXctNSBjcWEtaC01XCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tIFRhYiBidXR0b25zICgxOjEgd2l0aCB0YWJzKSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5VGFiVmFsdWVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwidGFiLmxhYmVsXCJcbiAgICAgICAgW2NsYXNzLmNxYS1iZy1bIzNGNDNFRV1dPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICBbY2xhc3MuY3FhLXRleHQtd2hpdGVdPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICBbY2xhc3MuY3FhLXRleHQtWyM2NDc0OEJdXT1cImFjdGl2ZVRhYiAhPT0gdGFiLnZhbHVlXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQtbGcgaG92ZXI6Y3FhLWJnLVsjRTJFOEYwXSBob3ZlcjpjcWEtdGV4dC1bIzMzNDE1NV0gY3FhLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0yIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctWyMzRjQzRUVdIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTJcIlxuICAgICAgICAoY2xpY2spPVwib25UYWJDbGljayh0YWIpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsyMHB4XSBjcWEtdy01IGNxYS1oLTVcIj57eyB0YWIuaWNvbiB8fCAnY2lyY2xlJyB9fTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2Nyb2xsYWJsZSBjb250ZW50IGFyZWEgKGNvbGxhcHNlcyB3aXRoIGFuaW1hdGlvbiB3aGVuIGV4cGFuZGVkIGlzIGZhbHNlKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1taW4taC0wIGNxYS1taW4tdy0wIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLXctZnVsbCBjcWEtaC1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXNpZGUtcGFuZWwtc2Nyb2xsIGNxYS1mbGV4LTEgY3FhLW1pbi1oLTAgY3FhLW1pbi13LTAgY3FhLW92ZXJmbG93LXktYXV0byBjcWEtb3ZlcmZsb3cteC1oaWRkZW4gY3FhLXAtNCBjcWEtc3BhY2UteS00XCIgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW47IG1pbi1oZWlnaHQ6IDA7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcIj5cbiAgICAgIDwhLS0gVGFiczogZXF1YWxseSBkaXN0cmlidXRlZCAoRmlnbWE6IHB1cnBsZSBhY3RpdmUsIGdyYXkgaW5hY3RpdmUpIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtWzMuNXB4XSBjcWEtcC1bMy41cHhdIGNxYS1iZy1bI0YxRjVGOV0gY3FhLXJvdW5kZWQtbGcgY3FhLXctZnVsbFwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlUYWJWYWx1ZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgW2NsYXNzLmNxYS1iZy1bIzNGNDNFRV1dPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtdGV4dC13aGl0ZV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgW2NsYXNzLmNxYS10ZXh0LVsjNjQ3NDhCXV09XCJhY3RpdmVUYWIgIT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weS0yIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LXhzIGNxYS1mb250LW1lZGl1bSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6Y3FhLW9wYWNpdHktOTAgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2sodGFiKVwiPlxuICAgICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFRhYiBjb250ZW50OiBmdWxseSBwcm92aWRlZCBieSBob3N0IHZpYSBjb250ZW50IHByb2plY3Rpb24uIEhvc3QgdXNlcyAqbmdJZiBwZXIgdGFiIHNvIG9ubHkgYWN0aXZlIGNvbnRlbnQgaXMgcHJvamVjdGVkLiBBZGQvcmVtb3ZlIHRhYnMgaW4gdGhlIGhvc3Qgd2l0aG91dCBjaGFuZ2luZyBjcWEtdWktbGliLiAtLT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|