@cqa-lib/cqa-ui 1.1.40 → 1.1.43

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.
@@ -32,6 +32,10 @@ export class CoverageModuleCardComponent {
32
32
  this.ctaDisabled = false;
33
33
  /** Generation duration in milliseconds (default ~12s) */
34
34
  this.generationMs = 200;
35
+ /** Whether the component is currently generating (configurable) */
36
+ this.isGenerating = false;
37
+ /** Whether the generation has completed (configurable) */
38
+ this.isGenerated = false;
35
39
  this.view = new EventEmitter();
36
40
  this.issuesClicked = new EventEmitter();
37
41
  this.ctaClicked = new EventEmitter();
@@ -43,9 +47,6 @@ export class CoverageModuleCardComponent {
43
47
  this.negativeClicked = new EventEmitter();
44
48
  /** Emits when the Edge Case count/label is clicked */
45
49
  this.edgeCaseClicked = new EventEmitter();
46
- /** Internal generation state */
47
- this.isGenerating = false;
48
- this.isGenerated = false;
49
50
  }
50
51
  statusColorClass(item) {
51
52
  const status = item.status ?? 'neutral';
@@ -93,21 +94,31 @@ export class CoverageModuleCardComponent {
93
94
  }
94
95
  this.ctaClicked.emit();
95
96
  this.aiCoverageClick.emit();
96
- // Start generating state for ~12 seconds
97
+ // Start generating state
97
98
  this.isGenerated = false;
98
99
  this.isGenerating = true;
99
100
  // Clear any existing timer defensively
100
- setTimeout(() => {
101
+ if (this.generationTimerId !== undefined) {
102
+ clearTimeout(this.generationTimerId);
103
+ }
104
+ this.generationTimerId = window.setTimeout(() => {
101
105
  this.isGenerating = false;
102
106
  this.isGenerated = true;
103
- }, 200);
107
+ this.generationTimerId = undefined;
108
+ }, this.generationMs);
109
+ }
110
+ ngOnDestroy() {
111
+ if (this.generationTimerId !== undefined) {
112
+ clearTimeout(this.generationTimerId);
113
+ this.generationTimerId = undefined;
114
+ }
104
115
  }
105
116
  }
106
117
  CoverageModuleCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CoverageModuleCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
- CoverageModuleCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CoverageModuleCardComponent, selector: "cqa-coverage-module-card", inputs: { title: "title", issues: "issues", showViewAction: "showViewAction", layout: "layout", positiveCount: "positiveCount", negativeCount: "negativeCount", edgeCaseCount: "edgeCaseCount", positiveLabel: "positiveLabel", negativeLabel: "negativeLabel", edgeCaseLabel: "edgeCaseLabel", aiCount: "aiCount", humanCount: "humanCount", aiLabel: "aiLabel", humanLabel: "humanLabel", items: "items", ctaText: "ctaText", ctaDisabled: "ctaDisabled", generationMs: "generationMs" }, outputs: { view: "view", issuesClicked: "issuesClicked", ctaClicked: "ctaClicked", aiCoverageClick: "aiCoverageClick", positiveClicked: "positiveClicked", negativeClicked: "negativeClicked", edgeCaseClicked: "edgeCaseClicked" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"height: 100%;\">\n <div\n class=\"cqa-w-full cqa-h-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card cqa-flex cqa-flex-col\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3 cqa-shrink-0 cqa-min-h-[28px]\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-font-inter cqa-text-dialog cqa-flex-shrink\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0 cqa-flex-nowrap\">\n <span (click)=\"issuesClicked.emit()\"\n class=\"cqa-cursor-pointer cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-font-inter cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger cqa-whitespace-nowrap cqa-flex-shrink-0\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-1 cqa-whitespace-nowrap cqa-flex-shrink-0\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Default Layout: Middle metrics row -->\n <ng-container *ngIf=\"layout === 'default'\">\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px] cqa-cursor-pointer\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n </ng-container>\n\n <!-- Mobile Layout: Stacked metrics -->\n <ng-container *ngIf=\"layout === 'mobile'\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- First row: Positive / Negative / Edge Case -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n </div>\n <!-- Separator -->\n <div class=\"cqa-w-full cqa-h-[1px] cqa-bg-[#F3F4F6]\"></div>\n <!-- Second row: AI / Human (aligned between Positive-Negative and Negative-Edge Case) -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3 cqa-flex-1\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-w-[45%] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0\">\n <svg *ngIf=\"it.status=='success'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <svg *ngIf=\"it.status=='error'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ it.label }}\n </span>\n <div class=\"cqa-w-[45%] cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-shrink-0\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-shrink-0\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"ctaButtonClass\" (click)=\"onAiCoverageClick()\" class=\"cqa-mt-auto\">\n <ng-container *ngIf=\"!isGenerating; else generatingTpl\">\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ ctaText }}\n <svg *ngIf=\"!isGenerating && !isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </ng-container>\n <ng-template #generatingTpl>\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-2\">\n <svg *ngIf=\"!isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n Generating\n </span>\n </ng-template>\n </cqa-button>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
118
+ CoverageModuleCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CoverageModuleCardComponent, selector: "cqa-coverage-module-card", inputs: { title: "title", issues: "issues", showViewAction: "showViewAction", layout: "layout", positiveCount: "positiveCount", negativeCount: "negativeCount", edgeCaseCount: "edgeCaseCount", positiveLabel: "positiveLabel", negativeLabel: "negativeLabel", edgeCaseLabel: "edgeCaseLabel", aiCount: "aiCount", humanCount: "humanCount", aiLabel: "aiLabel", humanLabel: "humanLabel", items: "items", ctaText: "ctaText", ctaDisabled: "ctaDisabled", generationMs: "generationMs", isGenerating: "isGenerating", isGenerated: "isGenerated" }, outputs: { view: "view", issuesClicked: "issuesClicked", ctaClicked: "ctaClicked", aiCoverageClick: "aiCoverageClick", positiveClicked: "positiveClicked", negativeClicked: "negativeClicked", edgeCaseClicked: "edgeCaseClicked" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div class=\"cqa-ui-root\" style=\"height: 100%;\">\n <div\n class=\"cqa-w-full cqa-h-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card cqa-flex cqa-flex-col\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3 cqa-shrink-0 cqa-min-h-[28px]\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-font-inter cqa-text-dialog cqa-flex-shrink\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0 cqa-flex-nowrap\">\n <span (click)=\"issuesClicked.emit()\"\n class=\"cqa-cursor-pointer cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-font-inter cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger cqa-whitespace-nowrap cqa-flex-shrink-0\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-1 cqa-whitespace-nowrap cqa-flex-shrink-0\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Default Layout: Middle metrics row -->\n <ng-container *ngIf=\"layout === 'default'\">\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px] cqa-cursor-pointer\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n </ng-container>\n\n <!-- Mobile Layout: Stacked metrics -->\n <ng-container *ngIf=\"layout === 'mobile'\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- First row: Positive / Negative / Edge Case -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n </div>\n <!-- Separator -->\n <div class=\"cqa-w-full cqa-h-[1px] cqa-bg-[#F3F4F6]\"></div>\n <!-- Second row: AI / Human (aligned between Positive-Negative and Negative-Edge Case) -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3 cqa-flex-1\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-w-[45%] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0\">\n <svg *ngIf=\"it.status=='success'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <svg *ngIf=\"it.status=='error'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ it.label }}\n </span>\n <div class=\"cqa-w-[45%] cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-shrink-0\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-shrink-0\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"ctaButtonClass\" (click)=\"onAiCoverageClick()\" class=\"cqa-mt-auto\">\n <ng-container *ngIf=\"!isGenerating; else generatingTpl\">\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ ctaText }}\n <svg *ngIf=\"!isGenerating && !isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </ng-container>\n <ng-template #generatingTpl>\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-2\">\n <svg *ngIf=\"!isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n Generating\n </span>\n </ng-template>\n </cqa-button>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
108
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CoverageModuleCardComponent, decorators: [{
109
120
  type: Component,
110
- args: [{ selector: 'cqa-coverage-module-card', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"height: 100%;\">\n <div\n class=\"cqa-w-full cqa-h-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card cqa-flex cqa-flex-col\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3 cqa-shrink-0 cqa-min-h-[28px]\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-font-inter cqa-text-dialog cqa-flex-shrink\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0 cqa-flex-nowrap\">\n <span (click)=\"issuesClicked.emit()\"\n class=\"cqa-cursor-pointer cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-font-inter cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger cqa-whitespace-nowrap cqa-flex-shrink-0\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-1 cqa-whitespace-nowrap cqa-flex-shrink-0\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Default Layout: Middle metrics row -->\n <ng-container *ngIf=\"layout === 'default'\">\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px] cqa-cursor-pointer\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n </ng-container>\n\n <!-- Mobile Layout: Stacked metrics -->\n <ng-container *ngIf=\"layout === 'mobile'\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- First row: Positive / Negative / Edge Case -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n </div>\n <!-- Separator -->\n <div class=\"cqa-w-full cqa-h-[1px] cqa-bg-[#F3F4F6]\"></div>\n <!-- Second row: AI / Human (aligned between Positive-Negative and Negative-Edge Case) -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3 cqa-flex-1\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-w-[45%] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0\">\n <svg *ngIf=\"it.status=='success'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <svg *ngIf=\"it.status=='error'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ it.label }}\n </span>\n <div class=\"cqa-w-[45%] cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-shrink-0\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-shrink-0\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"ctaButtonClass\" (click)=\"onAiCoverageClick()\" class=\"cqa-mt-auto\">\n <ng-container *ngIf=\"!isGenerating; else generatingTpl\">\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ ctaText }}\n <svg *ngIf=\"!isGenerating && !isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </ng-container>\n <ng-template #generatingTpl>\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-2\">\n <svg *ngIf=\"!isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n Generating\n </span>\n </ng-template>\n </cqa-button>\n </div>\n</div>", styles: [] }]
121
+ args: [{ selector: 'cqa-coverage-module-card', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\" style=\"height: 100%;\">\n <div\n class=\"cqa-w-full cqa-h-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] md:cqa-px-[17px] cqa-px-3 cqa-shadow-card cqa-flex cqa-flex-col\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-mb-3 cqa-shrink-0 cqa-min-h-[28px]\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-font-inter cqa-text-dialog cqa-flex-shrink\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0 cqa-flex-nowrap\">\n <span (click)=\"issuesClicked.emit()\"\n class=\"cqa-cursor-pointer cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-font-inter cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger cqa-whitespace-nowrap cqa-flex-shrink-0\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-1 cqa-whitespace-nowrap cqa-flex-shrink-0\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Default Layout: Middle metrics row -->\n <ng-container *ngIf=\"layout === 'default'\">\n <div class=\"cqa-grid md:cqa-grid-cols-4 cqa-grid-cols-2 cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-text-center cqa-flex cqa-items-center cqa-justify-center cqa-flex-col\">\n <div class=\"cqa-flex cqa-items-center cqa-justify-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px] cqa-cursor-pointer\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n <div class=\"cqa-bg-primary-surface cqa-w-[2px] cqa-h-full cqa-mx-[3.5px]\"></div>\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center cqa-w-[60px]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-font-inter cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[14px] cqa-leading-[20px] cqa-font-bold cqa-font-inter cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-muted cqa-pt-[2px] cqa-pb-1\">Coverage</div>\n </div>\n </div>\n </ng-container>\n\n <!-- Mobile Layout: Stacked metrics -->\n <ng-container *ngIf=\"layout === 'mobile'\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-mb-4 cqa-py-2\" style=\"border-top: 1px solid #F3F4F6; border-bottom: 1px solid #F3F4F6; border-left: none; border-right: none;\">\n <!-- First row: Positive / Negative / Edge Case -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"positiveClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#059669]\">{{ positiveCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ positiveLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"negativeClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#EF4444]\">{{ negativeCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ negativeLabel }}</div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center cqa-cursor-pointer\" (click)=\"edgeCaseClicked.emit()\">\n <div class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</div>\n <div class=\"cqa-text-[11px] cqa-leading-[14px] cqa-text-dialog-muted\">{{ edgeCaseLabel }}</div>\n </div>\n </div>\n <!-- Separator -->\n <div class=\"cqa-w-full cqa-h-[1px] cqa-bg-[#F3F4F6]\"></div>\n <!-- Second row: AI / Human (aligned between Positive-Negative and Negative-Edge Case) -->\n <div class=\"cqa-grid cqa-grid-cols-5 cqa-gap-2\">\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-primary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#clip0_7415_11751)\"><path d=\"M4.9685 7.75012C4.92386 7.57709 4.83367 7.41918 4.70731 7.29282C4.58095 7.16646 4.42304 7.07626 4.25 7.03162L1.1825 6.24062C1.13017 6.22577 1.08411 6.19425 1.05131 6.15085C1.01851 6.10744 1.00076 6.05453 1.00076 6.00012C1.00076 5.94572 1.01851 5.89281 1.05131 5.8494C1.08411 5.806 1.13017 5.77448 1.1825 5.75962L4.25 4.96812C4.42298 4.92353 4.58085 4.83341 4.7072 4.70714C4.83356 4.58088 4.92378 4.42307 4.9685 4.25012L5.7595 1.18262C5.7742 1.13008 5.80569 1.0838 5.84916 1.05082C5.89263 1.01785 5.94569 1 6.00025 1C6.05481 1 6.10787 1.01785 6.15134 1.05082C6.19481 1.0838 6.2263 1.13008 6.241 1.18262L7.0315 4.25012C7.07614 4.42316 7.16633 4.58107 7.29269 4.70743C7.41905 4.83379 7.57696 4.92399 7.75 4.96862L10.8175 5.75912C10.8703 5.77367 10.9168 5.80513 10.9499 5.84866C10.9831 5.8922 11.001 5.94541 11.001 6.00012C11.001 6.05484 10.9831 6.10805 10.9499 6.15159C10.9168 6.19512 10.8703 6.22657 10.8175 6.24112L7.75 7.03162C7.57696 7.07626 7.41905 7.16646 7.29269 7.29282C7.16633 7.41918 7.07614 7.57709 7.0315 7.75012L6.2405 10.8176C6.2258 10.8702 6.19431 10.9165 6.15084 10.9494C6.10737 10.9824 6.05431 11.0002 5.99975 11.0002C5.94519 11.0002 5.89213 10.9824 5.84866 10.9494C5.80519 10.9165 5.7737 10.8702 5.759 10.8176L4.9685 7.75012Z\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M10 1.5V3.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11 2.5H9\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2 8.5V9.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.5 9H1.5\" stroke=\"#7C3AED\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><defs><clipPath id=\"clip0_7415_11751\"><rect width=\"12\" height=\"12\" fill=\"white\"/></clipPath></defs></svg>\n {{ aiLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ aiCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n <div class=\"cqa-col-span-1 cqa-text-center\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-items-center cqa-justify-center\">\n <span class=\"cqa-text-[11px] cqa-leading-[14px] cqa-font-bold cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-[2px]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5 10.5V9.5C9.5 8.96957 9.28929 8.46086 8.91421 8.08579C8.53914 7.71071 8.03043 7.5 7.5 7.5H4.5C3.96957 7.5 3.46086 7.71071 3.08579 8.08579C2.71071 8.46086 2.5 8.96957 2.5 9.5V10.5\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 5.5C7.10457 5.5 8 4.60457 8 3.5C8 2.39543 7.10457 1.5 6 1.5C4.89543 1.5 4 2.39543 4 3.5C4 4.60457 4.89543 5.5 6 5.5Z\" stroke=\"#3F43EE\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ humanLabel }}\n </span>\n <span class=\"cqa-text-[13px] cqa-leading-[18px] cqa-font-bold cqa-text-dialog\">{{ humanCount }}</span>\n </div>\n </div>\n <div class=\"cqa-col-span-1\"></div>\n </div>\n </div>\n </ng-container>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-mb-3 cqa-flex-1\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-w-[45%] cqa-text-[12px] cqa-leading-[16px] cqa-text-dialog-secondary cqa-flex cqa-items-center cqa-gap-2 cqa-shrink-0\">\n <svg *ngIf=\"it.status=='success'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <svg *ngIf=\"it.status=='error'\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"cqa-shrink-0\"><path d=\"M7 12.8337C10.2217 12.8337 12.8333 10.222 12.8333 7.00033C12.8333 3.77866 10.2217 1.16699 7 1.16699C3.77834 1.16699 1.16666 3.77866 1.16666 7.00033C1.16666 10.222 3.77834 12.8337 7 12.8337Z\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 4.66699V7.00033\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 9.33301H7.00583\" stroke=\"#EF4444\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ it.label }}\n </span>\n <div class=\"cqa-w-[45%] cqa-h-[6px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-shrink-0\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-bold cqa-shrink-0\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <cqa-button variant=\"filled\" [customClass]=\"ctaButtonClass\" (click)=\"onAiCoverageClick()\" class=\"cqa-mt-auto\">\n <ng-container *ngIf=\"!isGenerating; else generatingTpl\">\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.8333 6.46309V6.99976C12.8326 8.25767 12.4253 9.48165 11.6721 10.4892C10.9189 11.4967 9.86025 12.2337 8.65396 12.5904C7.44767 12.947 6.1584 12.9042 4.97844 12.4683C3.79848 12.0323 2.79105 11.2266 2.10639 10.1714C1.42174 9.11611 1.09654 7.8678 1.17931 6.61261C1.26208 5.35742 1.74837 4.16262 2.56566 3.20638C3.38295 2.25015 4.48746 1.58373 5.71444 1.30651C6.94143 1.02929 8.22515 1.15612 9.37417 1.66809\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.25 6.41634L7 8.16634L12.8333 2.33301\" stroke=\"#10B981\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n {{ ctaText }}\n <svg *ngIf=\"!isGenerating && !isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3V15M3 9H15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </ng-container>\n <ng-template #generatingTpl>\n <span class=\"cqa-inline-flex cqa-items-center cqa-gap-2\">\n <svg *ngIf=\"!isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n <svg *ngIf=\"isGenerated\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\">\n <circle cx=\"9\" cy=\"9\" r=\"7\" stroke-width=\"2\" stroke-opacity=\"0.25\"/>\n <path d=\"M16 9a7 7 0 0 1-7 7\" stroke-width=\"2\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 9 9\" to=\"360 9 9\" dur=\"0.8s\" repeatCount=\"indefinite\"/>\n </path>\n </svg>\n Generating\n </span>\n </ng-template>\n </cqa-button>\n </div>\n</div>", styles: [] }]
111
122
  }], propDecorators: { title: [{
112
123
  type: Input
113
124
  }], issues: [{
@@ -144,6 +155,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
144
155
  type: Input
145
156
  }], generationMs: [{
146
157
  type: Input
158
+ }], isGenerating: [{
159
+ type: Input
160
+ }], isGenerated: [{
161
+ type: Input
147
162
  }], view: [{
148
163
  type: Output
149
164
  }], issuesClicked: [{
@@ -159,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
159
174
  }], edgeCaseClicked: [{
160
175
  type: Output
161
176
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kYXNoYm9hcmRzL2NvdmVyYWdlLW1vZHVsZS1jYXJkL2NvdmVyYWdlLW1vZHVsZS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBb0IzRyxNQUFNLE9BQU8sMkJBQTJCO0lBUHhDO1FBUUUsZ0NBQWdDO1FBQ3ZCLFVBQUssR0FBVyxVQUFVLENBQUM7UUFDcEMsZ0RBQWdEO1FBQ3ZDLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDNUIsd0NBQXdDO1FBQy9CLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQ3hDLDJDQUEyQztRQUNsQyxXQUFNLEdBQXlCLFNBQVMsQ0FBQztRQUNsRCxpQ0FBaUM7UUFDeEIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxXQUFXLENBQUM7UUFDN0Msa0NBQWtDO1FBQ3pCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFDdEMsNENBQTRDO1FBQ25DLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBQ3BDLHVCQUF1QjtRQUNkLFlBQU8sR0FBVyxhQUFhLENBQUM7UUFDekMsa0JBQWtCO1FBQ1QsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDdEMseURBQXlEO1FBQ2hELGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTFCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoRCxpREFBaUQ7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JELHFEQUFxRDtRQUMzQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckQscURBQXFEO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyRCxzREFBc0Q7UUFDNUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJELGdDQUFnQztRQUNoQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztLQWdFOUI7SUE3REMsZ0JBQWdCLENBQUMsSUFBa0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDeEMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVE7WUFDckMsS0FBSyxPQUFPO2dCQUNWLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxNQUFNO1lBQ25DO2dCQUNFLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxPQUFPO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFrQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUN4QyxRQUFRLE1BQU0sRUFBRTtZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLG9CQUFvQixDQUFDO1lBQzlCLEtBQUssT0FBTztnQkFDVixPQUFPLG9CQUFvQixDQUFDO1lBQzlCO2dCQUNFLE9BQU8sb0JBQW9CLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVc7UUFDdkIsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLElBQUksY0FBYztRQUNoQixNQUFNLElBQUksR0FBRyxpRUFBaUUsQ0FBQztRQUMvRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsK0RBQStEO1lBQy9ELE9BQU8sR0FBRyxJQUFJLDJEQUEyRCxDQUFDO1NBQzNFO1FBQ0QsSUFBRyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxJQUFJLDBDQUEwQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU1Qix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsdUNBQXVDO1FBRXZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOzt3SEEzR1UsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMHlCQ3BCeEMsMm5qQkFpS007MkZEN0lPLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzhCQUlyQixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIENvdmVyYWdlU3RhdHVzID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICduZXV0cmFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDb3ZlcmFnZUl0ZW0ge1xuICAvKiogUm93IGxhYmVsLCBlLmcuIFwiSW5wdXQgVmFsaWRhdGlvblwiICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBWYWx1ZSBpbiBwZXJjZW50ICgwLTEwMCkgKi9cbiAgcGVyY2VudDogbnVtYmVyO1xuICAvKiogVmlzdWFsIHN0YXR1cyB0byBjb2xvcml6ZSB0aGUgYmFyL3RleHQgKi9cbiAgc3RhdHVzPzogQ292ZXJhZ2VTdGF0dXM7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1jb3ZlcmFnZS1tb2R1bGUtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQ292ZXJhZ2VNb2R1bGVDYXJkQ29tcG9uZW50IHtcbiAgLyoqIENhcmQgdGl0bGUsIGUuZy4gXCJBSSBBc2tcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0NvdmVyYWdlJztcbiAgLyoqIE51bWJlciBvZiBpc3N1ZXMgdG8gZGlzcGxheSBuZXh0IHRvIHRpdGxlICovXG4gIEBJbnB1dCgpIGlzc3VlczogbnVtYmVyID0gMDtcbiAgLyoqIE9wdGlvbmFsIFwiVmlld1wiIGFjdGlvbiB2aXNpYmlsaXR5ICovXG4gIEBJbnB1dCgpIHNob3dWaWV3QWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExheW91dCBvcHRpb246ICdkZWZhdWx0JyBvciAnbW9iaWxlJyAqL1xuICBASW5wdXQoKSBsYXlvdXQ6ICdkZWZhdWx0JyB8ICdtb2JpbGUnID0gJ2RlZmF1bHQnO1xuICAvKiogTWlkZGxlIG1ldHJpY3M6IGxlZnQgZ3JvdXAgKi9cbiAgQElucHV0KCkgcG9zaXRpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbmVnYXRpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZWRnZUNhc2VDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgcG9zaXRpdmVMYWJlbDogc3RyaW5nID0gJ1Bvc2l0aXZlJztcbiAgQElucHV0KCkgbmVnYXRpdmVMYWJlbDogc3RyaW5nID0gJ05lZ2F0aXZlJztcbiAgQElucHV0KCkgZWRnZUNhc2VMYWJlbDogc3RyaW5nID0gJ0VkZ2UgQ2FzZSc7XG4gIC8qKiBNaWRkbGUgbWV0cmljczogcmlnaHQgZ3JvdXAgKi9cbiAgQElucHV0KCkgYWlDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgaHVtYW5Db3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgYWlMYWJlbDogc3RyaW5nID0gJ0FJJztcbiAgQElucHV0KCkgaHVtYW5MYWJlbDogc3RyaW5nID0gJ0h1bWFuJztcbiAgLyoqIFJvd3Mgb2YgY292ZXJhZ2Ugd2l0aCBwZXJjZW50YWdlIGJhcnMgKi9cbiAgQElucHV0KCkgaXRlbXM6IENvdmVyYWdlSXRlbVtdID0gW107XG4gIC8qKiBDVEEgYnV0dG9uIGxhYmVsICovXG4gIEBJbnB1dCgpIGN0YVRleHQ6IHN0cmluZyA9ICdBSSBDb3ZlcmFnZSc7XG4gIC8qKiBEaXNhYmxlIENUQSAqL1xuICBASW5wdXQoKSBjdGFEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogR2VuZXJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQgfjEycykgKi9cbiAgQElucHV0KCkgZ2VuZXJhdGlvbk1zOiBudW1iZXIgPSAyMDA7XG5cbiAgQE91dHB1dCgpIHZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBpc3N1ZXNDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY3RhQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIEFJIGNvdmVyYWdlIGFyZWEgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgYWlDb3ZlcmFnZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgUG9zaXRpdmUgY291bnQvbGFiZWwgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgcG9zaXRpdmVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgTmVnYXRpdmUgY291bnQvbGFiZWwgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgbmVnYXRpdmVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgRWRnZSBDYXNlIGNvdW50L2xhYmVsIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIGVkZ2VDYXNlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogSW50ZXJuYWwgZ2VuZXJhdGlvbiBzdGF0ZSAqL1xuICBpc0dlbmVyYXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNHZW5lcmF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBnZW5lcmF0aW9uVGltZXJJZD86IG51bWJlcjtcblxuICBzdGF0dXNDb2xvckNsYXNzKGl0ZW06IENvdmVyYWdlSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHVzID0gaXRlbS5zdGF0dXMgPz8gJ25ldXRyYWwnO1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyMxMEI5ODFdJzsgLy8gZ3JlZW5cbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNFRjQ0NDRdJzsgLy8gcmVkXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bIzNCODJGNl0nOyAvLyBibHVlXG4gICAgfVxuICB9XG5cbiAgdGV4dENvbG9yQ2xhc3MoaXRlbTogQ292ZXJhZ2VJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXMgPSBpdGVtLnN0YXR1cyA/PyAnbmV1dHJhbCc7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjMTBCOTgxXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyNFRjQ0NDRdJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyMzNzQxNTFdJztcbiAgICB9XG4gIH1cblxuICBmb3JtYXRQZXJjZW50KHBjdDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAocGN0ID09PSB1bmRlZmluZWQgfHwgcGN0ID09PSBudWxsIHx8IE51bWJlci5pc05hTihwY3QpKSByZXR1cm4gJzAlJztcbiAgICBjb25zdCBjbGFtcGVkID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBwY3QpKTtcbiAgICByZXR1cm4gYCR7Y2xhbXBlZH0lYDtcbiAgfVxuXG4gIC8qKiBDb21wdXRlZCBDVEEgYnV0dG9uIGNsYXNzIHRvIHN3aXRjaCB0byBsaWdodCBncmVlbiBhZnRlciBnZW5lcmF0aW9uICovXG4gIGdldCBjdGFCdXR0b25DbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSAnY3FhLXctZnVsbCBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1mb250LXNlbWlib2xkJztcbiAgICBpZiAodGhpcy5pc0dlbmVyYXRlZCkge1xuICAgICAgLy8gbGlnaHQgZ3JlZW4gYmFja2dyb3VuZCwgZGFyayBncmVlbiB0ZXh0LCBzdWJ0bGUgZ3JlZW4gYm9yZGVyXG4gICAgICByZXR1cm4gYCR7YmFzZX0gY3FhLWJnLVsjRDFGQUU1XSBjcWEtdGV4dC1bIzA2NUY0Nl0gY3FhLWJvcmRlci1bI0E3RjNEMF1gO1xuICAgIH1cbiAgICBpZih0aGlzLmlzR2VuZXJhdGluZykge1xuICAgICAgcmV0dXJuIGAke2Jhc2V9IGNxYS1iZy1wcmltYXJ5LXN1cmZhY2UgY3FhLXRleHQtcHJpbWFyeWA7XG4gICAgfVxuICAgIHJldHVybiBiYXNlO1xuICB9XG5cbiAgb25BaUNvdmVyYWdlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNHZW5lcmF0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3RhQ2xpY2tlZC5lbWl0KCk7XG4gICAgdGhpcy5haUNvdmVyYWdlQ2xpY2suZW1pdCgpO1xuXG4gICAgLy8gU3RhcnQgZ2VuZXJhdGluZyBzdGF0ZSBmb3IgfjEyIHNlY29uZHNcbiAgICB0aGlzLmlzR2VuZXJhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc0dlbmVyYXRpbmcgPSB0cnVlO1xuXG4gICAgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIHRpbWVyIGRlZmVuc2l2ZWx5XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzR2VuZXJhdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0dlbmVyYXRlZCA9IHRydWU7XG4gICAgfSwgMjAwKTtcbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtcHktWzEwcHhdIG1kOmNxYS1weC1bMTdweF0gY3FhLXB4LTMgY3FhLXNoYWRvdy1jYXJkIGNxYS1mbGV4IGNxYS1mbGV4LWNvbFwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLW1iLTMgY3FhLXNocmluay0wIGNxYS1taW4taC1bMjhweF1cIj5cbiAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLWZvbnQtYm9sZCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1kaWFsb2cgY3FhLWZsZXgtc2hyaW5rXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXNocmluay0wIGNxYS1mbGV4LW5vd3JhcFwiPlxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJpc3N1ZXNDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcHgtWzEwcHhdIGNxYS1weS1bNHB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWludGVyIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLXdhcm5pbmctbGlnaHQgY3FhLXRleHQtZGFuZ2VyIGNxYS13aGl0ZXNwYWNlLW5vd3JhcCBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAge3sgaXNzdWVzIH19IHt7IGlzc3VlcyA9PT0gMSA/ICdpc3N1ZScgOiAnaXNzdWVzJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1mb250LWludGVyIGNxYS10ZXh0LXByaW1hcnkgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLXdoaXRlc3BhY2Utbm93cmFwIGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZpZXdBY3Rpb25cIiAoY2xpY2spPVwidmlldy5lbWl0KClcIj5cbiAgICAgICAgICAgIFZpZXdcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMTJMMTAgOEw2IDRcIiBzdHJva2U9XCIjNEY0NkU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEZWZhdWx0IExheW91dDogTWlkZGxlIG1ldHJpY3Mgcm93IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXQgPT09ICdkZWZhdWx0J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIG1kOmNxYS1ncmlkLWNvbHMtNCBjcWEtZ3JpZC1jb2xzLTIgY3FhLWdhcC0zIGNxYS1tYi00IGNxYS1weS0yXCIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0YzRjRGNjsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGM0Y0RjY7IGJvcmRlci1sZWZ0OiBub25lOyBib3JkZXItcmlnaHQ6IG5vbmU7XCI+XG4gICAgICAgIDwhLS0gTGVmdDogUG9zaXRpdmUgLyBOZWdhdGl2ZSAvIEVkZ2UgQ2FzZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicG9zaXRpdmVDbGlja2VkLmVtaXQoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWxlYWRpbmctWzI4cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMwNTk2NjldXCI+e3sgcG9zaXRpdmVDb3VudCB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IHBvc2l0aXZlTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1jZW50ZXIgY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5lZ2F0aXZlQ2xpY2tlZC5lbWl0KClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIGNxYS1sZWFkaW5nLVsyOHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPnt7IG5lZ2F0aXZlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBuZWdhdGl2ZUxhYmVsIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJlZGdlQ2FzZUNsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bI0Y1OUUwQl1cIj57eyBlZGdlQ2FzZUNvdW50IH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgZWRnZUNhc2VMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFJpZ2h0OiBBSSAvIEh1bWFuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtY2VudGVyIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1mbGV4LWNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctWzYwcHhdIGNxYS1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZvbnQtYm9sZCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1wcmltYXJ5IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMnB4XVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNzQxNV8xMTc1MSlcIj48cGF0aCBkPVwiTTQuOTY4NSA3Ljc1MDEyQzQuOTIzODYgNy41NzcwOSA0LjgzMzY3IDcuNDE5MTggNC43MDczMSA3LjI5MjgyQzQuNTgwOTUgNy4xNjY0NiA0LjQyMzA0IDcuMDc2MjYgNC4yNSA3LjAzMTYyTDEuMTgyNSA2LjI0MDYyQzEuMTMwMTcgNi4yMjU3NyAxLjA4NDExIDYuMTk0MjUgMS4wNTEzMSA2LjE1MDg1QzEuMDE4NTEgNi4xMDc0NCAxLjAwMDc2IDYuMDU0NTMgMS4wMDA3NiA2LjAwMDEyQzEuMDAwNzYgNS45NDU3MiAxLjAxODUxIDUuODkyODEgMS4wNTEzMSA1Ljg0OTRDMS4wODQxMSA1LjgwNiAxLjEzMDE3IDUuNzc0NDggMS4xODI1IDUuNzU5NjJMNC4yNSA0Ljk2ODEyQzQuNDIyOTggNC45MjM1MyA0LjU4MDg1IDQuODMzNDEgNC43MDcyIDQuNzA3MTRDNC44MzM1NiA0LjU4MDg4IDQuOTIzNzggNC40MjMwNyA0Ljk2ODUgNC4yNTAxMkw1Ljc1OTUgMS4xODI2MkM1Ljc3NDIgMS4xMzAwOCA1LjgwNTY5IDEuMDgzOCA1Ljg0OTE2IDEuMDUwODJDNS44OTI2MyAxLjAxNzg1IDUuOTQ1NjkgMSA2LjAwMDI1IDFDNi4wNTQ4MSAxIDYuMTA3ODcgMS4wMTc4NSA2LjE1MTM0IDEuMDUwODJDNi4xOTQ4MSAxLjA4MzggNi4yMjYzIDEuMTMwMDggNi4yNDEgMS4xODI2Mkw3LjAzMTUgNC4yNTAxMkM3LjA3NjE0IDQuNDIzMTYgNy4xNjYzMyA0LjU4MTA3IDcuMjkyNjkgNC43MDc0M0M3LjQxOTA1IDQuODMzNzkgNy41NzY5NiA0LjkyMzk5IDcuNzUgNC45Njg2MkwxMC44MTc1IDUuNzU5MTJDMTAuODcwMyA1Ljc3MzY3IDEwLjkxNjggNS44MDUxMyAxMC45NDk5IDUuODQ4NjZDMTAuOTgzMSA1Ljg5MjIgMTEuMDAxIDUuOTQ1NDEgMTEuMDAxIDYuMDAwMTJDMTEuMDAxIDYuMDU0ODQgMTAuOTgzMSA2LjEwODA1IDEwLjk0OTkgNi4xNTE1OUMxMC45MTY4IDYuMTk1MTIgMTAuODcwMyA2LjIyNjU3IDEwLjgxNzUgNi4yNDExMkw3Ljc1IDcuMDMxNjJDNy41NzY5NiA3LjA3NjI2IDcuNDE5MDUgNy4xNjY0NiA3LjI5MjY5IDcuMjkyODJDNy4xNjYzMyA3LjQxOTE4IDcuMDc2MTQgNy41NzcwOSA3LjAzMTUgNy43NTAxMkw2LjI0MDUgMTAuODE3NkM2LjIyNTggMTAuODcwMiA2LjE5NDMxIDEwLjkxNjUgNi4xNTA4NCAxMC45NDk0QzYuMTA3MzcgMTAuOTgyNCA2LjA1NDMxIDExLjAwMDIgNS45OTk3NSAxMS4wMDAyQzUuOTQ1MTkgMTEuMDAwMiA1Ljg5MjEzIDEwLjk4MjQgNS44NDg2NiAxMC45NDk0QzUuODA1MTkgMTAuOTE2NSA1Ljc3MzcgMTAuODcwMiA1Ljc1OSAxMC44MTc2TDQuOTY4NSA3Ljc1MDEyWlwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMCAxLjVWMy41XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExIDIuNUg5XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTIgOC41VjkuNVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yLjUgOUgxLjVcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XCJjbGlwMF83NDE1XzExNzUxXCI+PHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlxuICAgICAgICAgICAgICAgIHt7IGFpTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLWZvbnQtYm9sZCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1kaWFsb2dcIj57eyBhaUNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXByaW1hcnktc3VyZmFjZSBjcWEtdy1bMnB4XSBjcWEtaC1mdWxsIGNxYS1teC1bMy41cHhdXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy1bNjBweF1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGQgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtZGlhbG9nLXNlY29uZGFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzJweF1cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuNSAxMC41VjkuNUM5LjUgOC45Njk1NyA5LjI4OTI5IDguNDYwODYgOC45MTQyMSA4LjA4NTc5QzguNTM5MTQgNy43MTA3MSA4LjAzMDQzIDcuNSA3LjUgNy41SDQuNUMzLjk2OTU3IDcuNSAzLjQ2MDg2IDcuNzEwNzEgMy4wODU3OSA4LjA4NTc5QzIuNzEwNzEgOC40NjA4NiAyLjUgOC45Njk1NyAyLjUgOS41VjEwLjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiA1LjVDNy4xMDQ1NyA1LjUgOCA0LjYwNDU3IDggMy41QzggMi4zOTU0MyA3LjEwNDU3IDEuNSA2IDEuNUM0Ljg5NTQzIDEuNSA0IDIuMzk1NDMgNCAzLjVDNCA0LjYwNDU3IDQuODk1NDMgNS41IDYgNS41WlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAge3sgaHVtYW5MYWJlbCB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtZm9udC1ib2xkIGNxYS1mb250LWludGVyIGNxYS10ZXh0LWRpYWxvZ1wiPnt7IGh1bWFuQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLXB0LVsycHhdIGNxYS1wYi0xXCI+Q292ZXJhZ2U8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gTW9iaWxlIExheW91dDogU3RhY2tlZCBtZXRyaWNzIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXlvdXQgPT09ICdtb2JpbGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMyBjcWEtbWItNCBjcWEtcHktMlwiIHN0eWxlPVwiYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGM0Y0RjY7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRjNGNEY2OyBib3JkZXItbGVmdDogbm9uZTsgYm9yZGVyLXJpZ2h0OiBub25lO1wiPlxuICAgICAgICA8IS0tIEZpcnN0IHJvdzogUG9zaXRpdmUgLyBOZWdhdGl2ZSAvIEVkZ2UgQ2FzZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtNSBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTEgY3FhLXRleHQtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwb3NpdGl2ZUNsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMDU5NjY5XVwiPnt7IHBvc2l0aXZlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IHBvc2l0aXZlTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTEgY3FhLXRleHQtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZWdhdGl2ZUNsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjRUY0NDQ0XVwiPnt7IG5lZ2F0aXZlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IG5lZ2F0aXZlTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTEgY3FhLXRleHQtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJlZGdlQ2FzZUNsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjRjU5RTBCXVwiPnt7IGVkZ2VDYXNlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IGVkZ2VDYXNlTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1bMXB4XSBjcWEtYmctWyNGM0Y0RjZdXCI+PC9kaXY+XG4gICAgICAgIDwhLS0gU2Vjb25kIHJvdzogQUkgLyBIdW1hbiAoYWxpZ25lZCBiZXR3ZWVuIFBvc2l0aXZlLU5lZ2F0aXZlIGFuZCBOZWdhdGl2ZS1FZGdlIENhc2UpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWdyaWQgY3FhLWdyaWQtY29scy01IGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tMVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtY29sLXNwYW4tMSBjcWEtdGV4dC1jZW50ZXIgY3FhLWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1wcmltYXJ5IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMnB4XVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNzQxNV8xMTc1MSlcIj48cGF0aCBkPVwiTTQuOTY4NSA3Ljc1MDEyQzQuOTIzODYgNy41NzcwOSA0LjgzMzY3IDcuNDE5MTggNC43MDczMSA3LjI5MjgyQzQuNTgwOTUgNy4xNjY0NiA0LjQyMzA0IDcuMDc2MjYgNC4yNSA3LjAzMTYyTDEuMTgyNSA2LjI0MDYyQzEuMTMwMTcgNi4yMjU3NyAxLjA4NDExIDYuMTk0MjUgMS4wNTEzMSA2LjE1MDg1QzEuMDE4NTEgNi4xMDc0NCAxLjAwMDc2IDYuMDU0NTMgMS4wMDA3NiA2LjAwMDEyQzEuMDAwNzYgNS45NDU3MiAxLjAxODUxIDUuODkyODEgMS4wNTEzMSA1Ljg0OTRDMS4wODQxMSA1LjgwNiAxLjEzMDE3IDUuNzc0NDggMS4xODI1IDUuNzU5NjJMNC4yNSA0Ljk2ODEyQzQuNDIyOTggNC45MjM1MyA0LjU4MDg1IDQuODMzNDEgNC43MDcyIDQuNzA3MTRDNC44MzM1NiA0LjU4MDg4IDQuOTIzNzggNC40MjMwNyA0Ljk2ODUgNC4yNTAxMkw1Ljc1OTUgMS4xODI2MkM1Ljc3NDIgMS4xMzAwOCA1LjgwNTY5IDEuMDgzOCA1Ljg0OTE2IDEuMDUwODJDNS44OTI2MyAxLjAxNzg1IDUuOTQ1NjkgMSA2LjAwMDI1IDFDNi4wNTQ4MSAxIDYuMTA3ODcgMS4wMTc4NSA2LjE1MTM0IDEuMDUwODJDNi4xOTQ4MSAxLjA4MzggNi4yMjYzIDEuMTMwMDggNi4yNDEgMS4xODI2Mkw3LjAzMTUgNC4yNTAxMkM3LjA3NjE0IDQuNDIzMTYgNy4xNjYzMyA0LjU4MTA3IDcuMjkyNjkgNC43MDc0M0M3LjQxOTA1IDQuODMzNzkgNy41NzY5NiA0LjkyMzk5IDcuNzUgNC45Njg2MkwxMC44MTc1IDUuNzU5MTJDMTAuODcwMyA1Ljc3MzY3IDEwLjkxNjggNS44MDUxMyAxMC45NDk5IDUuODQ4NjZDMTAuOTgzMSA1Ljg5MjIgMTEuMDAxIDUuOTQ1NDEgMTEuMDAxIDYuMDAwMTJDMTEuMDAxIDYuMDU0ODQgMTAuOTgzMSA2LjEwODA1IDEwLjk0OTkgNi4xNTE1OUMxMC45MTY4IDYuMTk1MTIgMTAuODcwMyA2LjIyNjU3IDEwLjgxNzUgNi4yNDExMkw3Ljc1IDcuMDMxNjJDNy41NzY5NiA3LjA3NjI2IDcuNDE5MDUgNy4xNjY0NiA3LjI5MjY5IDcuMjkyODJDNy4xNjYzMyA3LjQxOTE4IDcuMDc2MTQgNy41NzcwOSA3LjAzMTUgNy43NTAxMkw2LjI0MDUgMTAuODE3NkM2LjIyNTggMTAuODcwMiA2LjE5NDMxIDEwLjkxNjUgNi4xNTA4NCAxMC45NDk0QzYuMTA3MzcgMTAuOTgyNCA2LjA1NDMxIDExLjAwMDIgNS45OTk3NSAxMS4wMDAyQzUuOTQ1MTkgMTEuMDAwMiA1Ljg5MjEzIDEwLjk4MjQgNS44NDg2NiAxMC45NDk0QzUuODA1MTkgMTAuOTE2NSA1Ljc3MzcgMTAuODcwMiA1Ljc1OSAxMC44MTc2TDQuOTY4NSA3Ljc1MDEyWlwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMCAxLjVWMy41XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExIDIuNUg5XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTIgOC41VjkuNVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yLjUgOUgxLjVcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XCJjbGlwMF83NDE1XzExNzUxXCI+PHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlxuICAgICAgICAgICAgICAgIHt7IGFpTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxM3B4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj57eyBhaUNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xIGNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LWRpYWxvZy1zZWNvbmRhcnkgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsycHhdXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjUgMTAuNVY5LjVDOS41IDguOTY5NTcgOS4yODkyOSA4LjQ2MDg2IDguOTE0MjEgOC4wODU3OUM4LjUzOTE0IDcuNzEwNzEgOC4wMzA0MyA3LjUgNy41IDcuNUg0LjVDMy45Njk1NyA3LjUgMy40NjA4NiA3LjcxMDcxIDMuMDg1NzkgOC4wODU3OUMyLjcxMDcxIDguNDYwODYgMi41IDguOTY5NTcgMi41IDkuNVYxMC41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgNS41QzcuMTA0NTcgNS41IDggNC42MDQ1NyA4IDMuNUM4IDIuMzk1NDMgNy4xMDQ1NyAxLjUgNiAxLjVDNC44OTU0MyAxLjUgNCAyLjM5NTQzIDQgMy41QzQgNC42MDQ1NyA0Ljg5NTQzIDUuNSA2IDUuNVpcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgICAgICAgIHt7IGh1bWFuTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxM3B4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj57eyBodW1hbkNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEJvZHkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLW1iLTMgY3FhLWZsZXgtMVwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXQgb2YgaXRlbXNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXctWzQ1JV0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1kaWFsb2ctc2Vjb25kYXJ5IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1zaHJpbmstMFwiPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJpdC5zdGF0dXM9PSdzdWNjZXNzJ1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1zaHJpbmstMFwiPjxwYXRoIGQ9XCJNMTIuODMzMyA2LjQ2MzA5VjYuOTk5NzZDMTIuODMyNiA4LjI1NzY3IDEyLjQyNTMgOS40ODE2NSAxMS42NzIxIDEwLjQ4OTJDMTAuOTE4OSAxMS40OTY3IDkuODYwMjUgMTIuMjMzNyA4LjY1Mzk2IDEyLjU5MDRDNy40NDc2NyAxMi45NDcgNi4xNTg0IDEyLjkwNDIgNC45Nzg0NCAxMi40NjgzQzMuNzk4NDggMTIuMDMyMyAyLjc5MTA1IDExLjIyNjYgMi4xMDYzOSAxMC4xNzE0QzEuNDIxNzQgOS4xMTYxMSAxLjA5NjU0IDcuODY3OCAxLjE3OTMxIDYuNjEyNjFDMS4yNjIwOCA1LjM1NzQyIDEuNzQ4MzcgNC4xNjI2MiAyLjU2NTY2IDMuMjA2MzhDMy4zODI5NSAyLjI1MDE1IDQuNDg3NDYgMS41ODM3MyA1LjcxNDQ0IDEuMzA2NTFDNi45NDE0MyAxLjAyOTI5IDguMjI1MTUgMS4xNTYxMiA5LjM3NDE3IDEuNjY4MDlcIiBzdHJva2U9XCIjMTBCOTgxXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUuMjUgNi40MTYzNEw3IDguMTY2MzRMMTIuODMzMyAyLjMzMzAxXCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cIml0LnN0YXR1cz09J2Vycm9yJ1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1zaHJpbmstMFwiPjxwYXRoIGQ9XCJNNyAxMi44MzM3QzEwLjIyMTcgMTIuODMzNyAxMi44MzMzIDEwLjIyMiAxMi44MzMzIDcuMDAwMzNDMTIuODMzMyAzLjc3ODY2IDEwLjIyMTcgMS4xNjY5OSA3IDEuMTY2OTlDMy43NzgzNCAxLjE2Njk5IDEuMTY2NjYgMy43Nzg2NiAxLjE2NjY2IDcuMDAwMzNDMS4xNjY2NiAxMC4yMjIgMy43NzgzNCAxMi44MzM3IDcgMTIuODMzN1pcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcgNC42NjY5OVY3LjAwMDMzXCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03IDkuMzMzMDFINy4wMDU4M1wiIHN0cm9rZT1cIiNFRjQ0NDRcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIHt7IGl0LmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LVs0NSVdIGNxYS1oLVs2cHhdIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLVsjRjNGNEY2XSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS1zaHJpbmstMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1mdWxsIGNxYS1yb3VuZGVkLWZ1bGxcIiBbbmdDbGFzc109XCJzdGF0dXNDb2xvckNsYXNzKGl0KVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZm9ybWF0UGVyY2VudChpdC5wZXJjZW50KVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGQgY3FhLXNocmluay0wXCIgW25nQ2xhc3NdPVwidGV4dENvbG9yQ2xhc3MoaXQpXCI+e3tcbiAgICAgICAgICBmb3JtYXRQZXJjZW50KGl0LnBlcmNlbnQpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgPGNxYS1idXR0b24gdmFyaWFudD1cImZpbGxlZFwiIFtjdXN0b21DbGFzc109XCJjdGFCdXR0b25DbGFzc1wiIChjbGljayk9XCJvbkFpQ292ZXJhZ2VDbGljaygpXCIgY2xhc3M9XCJjcWEtbXQtYXV0b1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0dlbmVyYXRpbmc7IGVsc2UgZ2VuZXJhdGluZ1RwbFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiaXNHZW5lcmF0ZWRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMi44MzMzIDYuNDYzMDlWNi45OTk3NkMxMi44MzI2IDguMjU3NjcgMTIuNDI1MyA5LjQ4MTY1IDExLjY3MjEgMTAuNDg5MkMxMC45MTg5IDExLjQ5NjcgOS44NjAyNSAxMi4yMzM3IDguNjUzOTYgMTIuNTkwNEM3LjQ0NzY3IDEyLjk0NyA2LjE1ODQgMTIuOTA0MiA0Ljk3ODQ0IDEyLjQ2ODNDMy43OTg0OCAxMi4wMzIzIDIuNzkxMDUgMTEuMjI2NiAyLjEwNjM5IDEwLjE3MTRDMS40MjE3NCA5LjExNjExIDEuMDk2NTQgNy44Njc4IDEuMTc5MzEgNi42MTI2MUMxLjI2MjA4IDUuMzU3NDIgMS43NDgzNyA0LjE2MjYyIDIuNTY1NjYgMy4yMDYzOEMzLjM4Mjk1IDIuMjUwMTUgNC40ODc0NiAxLjU4MzczIDUuNzE0NDQgMS4zMDY1MUM2Ljk0MTQzIDEuMDI5MjkgOC4yMjUxNSAxLjE1NjEyIDkuMzc0MTcgMS42NjgwOVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNS4yNSA2LjQxNjM0TDcgOC4xNjYzNEwxMi44MzMzIDIuMzMzMDFcIiBzdHJva2U9XCIjMTBCOTgxXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAge3sgY3RhVGV4dCB9fVxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzR2VuZXJhdGluZyAmJiAhaXNHZW5lcmF0ZWRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk05IDNWMTVNMyA5SDE1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0dlbmVyYXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTkgM1YxNU0zIDlIMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmF0aW5nVHBsPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNHZW5lcmF0ZWRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1vcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgOWE3IDcgMCAwIDEtNyA3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxuICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDkgOVwiIHRvPVwiMzYwIDkgOVwiIGR1cj1cIjAuOHNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cImlzR2VuZXJhdGVkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjlcIiByPVwiN1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2Utb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDlhNyA3IDAgMCAxLTcgN1wiIHN0cm9rZS13aWR0aD1cIjJcIj5cbiAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiIHR5cGU9XCJyb3RhdGVcIiBmcm9tPVwiMCA5IDlcIiB0bz1cIjM2MCA5IDlcIiBkdXI9XCIwLjhzXCIgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCIvPlxuICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIEdlbmVyYXRpbmdcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kYXNoYm9hcmRzL2NvdmVyYWdlLW1vZHVsZS1jYXJkL2NvdmVyYWdlLW1vZHVsZS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9jb3ZlcmFnZS1tb2R1bGUtY2FyZC9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBb0IzRyxNQUFNLE9BQU8sMkJBQTJCO0lBUHhDO1FBUUUsZ0NBQWdDO1FBQ3ZCLFVBQUssR0FBVyxVQUFVLENBQUM7UUFDcEMsZ0RBQWdEO1FBQ3ZDLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDNUIsd0NBQXdDO1FBQy9CLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQ3hDLDJDQUEyQztRQUNsQyxXQUFNLEdBQXlCLFNBQVMsQ0FBQztRQUNsRCxpQ0FBaUM7UUFDeEIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxXQUFXLENBQUM7UUFDN0Msa0NBQWtDO1FBQ3pCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFDdEMsNENBQTRDO1FBQ25DLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBQ3BDLHVCQUF1QjtRQUNkLFlBQU8sR0FBVyxhQUFhLENBQUM7UUFDekMsa0JBQWtCO1FBQ1QsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDdEMseURBQXlEO1FBQ2hELGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBQ3BDLG1FQUFtRTtRQUMxRCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUN2QywwREFBMEQ7UUFDakQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFNUIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hELGlEQUFpRDtRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckQscURBQXFEO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyRCxxREFBcUQ7UUFDM0Msb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JELHNEQUFzRDtRQUM1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0EyRXREO0lBeEVDLGdCQUFnQixDQUFDLElBQWtCO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDO1FBQ3hDLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxTQUFTO2dCQUNaLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxRQUFRO1lBQ3JDLEtBQUssT0FBTztnQkFDVixPQUFPLGtCQUFrQixDQUFDLENBQUMsTUFBTTtZQUNuQztnQkFDRSxPQUFPLGtCQUFrQixDQUFDLENBQUMsT0FBTztTQUNyQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsSUFBa0I7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDeEMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLG9CQUFvQixDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxJQUFJLGNBQWM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsaUVBQWlFLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLCtEQUErRDtZQUMvRCxPQUFPLEdBQUcsSUFBSSwyREFBMkQsQ0FBQztTQUMzRTtRQUNELElBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixPQUFPLEdBQUcsSUFBSSwwQ0FBMEMsQ0FBQztTQUMxRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUIseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUU7WUFDeEMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDckMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUN4QyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztTQUNwQztJQUNILENBQUM7O3dIQXRIVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixvMkJDcEJ4QyxxbGpCQWlLTTsyRkQ3SU8sMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OEJBSXJCLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIENvdmVyYWdlU3RhdHVzID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICduZXV0cmFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDb3ZlcmFnZUl0ZW0ge1xuICAvKiogUm93IGxhYmVsLCBlLmcuIFwiSW5wdXQgVmFsaWRhdGlvblwiICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBWYWx1ZSBpbiBwZXJjZW50ICgwLTEwMCkgKi9cbiAgcGVyY2VudDogbnVtYmVyO1xuICAvKiogVmlzdWFsIHN0YXR1cyB0byBjb2xvcml6ZSB0aGUgYmFyL3RleHQgKi9cbiAgc3RhdHVzPzogQ292ZXJhZ2VTdGF0dXM7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1jb3ZlcmFnZS1tb2R1bGUtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3ZlcmFnZS1tb2R1bGUtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQ292ZXJhZ2VNb2R1bGVDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIENhcmQgdGl0bGUsIGUuZy4gXCJBSSBBc2tcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0NvdmVyYWdlJztcbiAgLyoqIE51bWJlciBvZiBpc3N1ZXMgdG8gZGlzcGxheSBuZXh0IHRvIHRpdGxlICovXG4gIEBJbnB1dCgpIGlzc3VlczogbnVtYmVyID0gMDtcbiAgLyoqIE9wdGlvbmFsIFwiVmlld1wiIGFjdGlvbiB2aXNpYmlsaXR5ICovXG4gIEBJbnB1dCgpIHNob3dWaWV3QWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExheW91dCBvcHRpb246ICdkZWZhdWx0JyBvciAnbW9iaWxlJyAqL1xuICBASW5wdXQoKSBsYXlvdXQ6ICdkZWZhdWx0JyB8ICdtb2JpbGUnID0gJ2RlZmF1bHQnO1xuICAvKiogTWlkZGxlIG1ldHJpY3M6IGxlZnQgZ3JvdXAgKi9cbiAgQElucHV0KCkgcG9zaXRpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbmVnYXRpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZWRnZUNhc2VDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgcG9zaXRpdmVMYWJlbDogc3RyaW5nID0gJ1Bvc2l0aXZlJztcbiAgQElucHV0KCkgbmVnYXRpdmVMYWJlbDogc3RyaW5nID0gJ05lZ2F0aXZlJztcbiAgQElucHV0KCkgZWRnZUNhc2VMYWJlbDogc3RyaW5nID0gJ0VkZ2UgQ2FzZSc7XG4gIC8qKiBNaWRkbGUgbWV0cmljczogcmlnaHQgZ3JvdXAgKi9cbiAgQElucHV0KCkgYWlDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgaHVtYW5Db3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgYWlMYWJlbDogc3RyaW5nID0gJ0FJJztcbiAgQElucHV0KCkgaHVtYW5MYWJlbDogc3RyaW5nID0gJ0h1bWFuJztcbiAgLyoqIFJvd3Mgb2YgY292ZXJhZ2Ugd2l0aCBwZXJjZW50YWdlIGJhcnMgKi9cbiAgQElucHV0KCkgaXRlbXM6IENvdmVyYWdlSXRlbVtdID0gW107XG4gIC8qKiBDVEEgYnV0dG9uIGxhYmVsICovXG4gIEBJbnB1dCgpIGN0YVRleHQ6IHN0cmluZyA9ICdBSSBDb3ZlcmFnZSc7XG4gIC8qKiBEaXNhYmxlIENUQSAqL1xuICBASW5wdXQoKSBjdGFEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogR2VuZXJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQgfjEycykgKi9cbiAgQElucHV0KCkgZ2VuZXJhdGlvbk1zOiBudW1iZXIgPSAyMDA7XG4gIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgY3VycmVudGx5IGdlbmVyYXRpbmcgKGNvbmZpZ3VyYWJsZSkgKi9cbiAgQElucHV0KCkgaXNHZW5lcmF0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRoZSBnZW5lcmF0aW9uIGhhcyBjb21wbGV0ZWQgKGNvbmZpZ3VyYWJsZSkgKi9cbiAgQElucHV0KCkgaXNHZW5lcmF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGlzc3Vlc0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjdGFDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgQUkgY292ZXJhZ2UgYXJlYSBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBhaUNvdmVyYWdlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBQb3NpdGl2ZSBjb3VudC9sYWJlbCBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBwb3NpdGl2ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBOZWdhdGl2ZSBjb3VudC9sYWJlbCBpcyBjbGlja2VkICovXG4gIEBPdXRwdXQoKSBuZWdhdGl2ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBFZGdlIENhc2UgY291bnQvbGFiZWwgaXMgY2xpY2tlZCAqL1xuICBAT3V0cHV0KCkgZWRnZUNhc2VDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwcml2YXRlIGdlbmVyYXRpb25UaW1lcklkPzogbnVtYmVyO1xuXG4gIHN0YXR1c0NvbG9yQ2xhc3MoaXRlbTogQ292ZXJhZ2VJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXMgPSBpdGVtLnN0YXR1cyA/PyAnbmV1dHJhbCc7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bIzEwQjk4MV0nOyAvLyBncmVlblxuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1iZy1bI0VGNDQ0NF0nOyAvLyByZWRcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjM0I4MkY2XSc7IC8vIGJsdWVcbiAgICB9XG4gIH1cblxuICB0ZXh0Q29sb3JDbGFzcyhpdGVtOiBDb3ZlcmFnZUl0ZW0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1cyA9IGl0ZW0uc3RhdHVzID8/ICduZXV0cmFsJztcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyMxMEI5ODFdJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bI0VGNDQ0NF0nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtdGV4dC1bIzM3NDE1MV0nO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFBlcmNlbnQocGN0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChwY3QgPT09IHVuZGVmaW5lZCB8fCBwY3QgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKHBjdCkpIHJldHVybiAnMCUnO1xuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHBjdCkpO1xuICAgIHJldHVybiBgJHtjbGFtcGVkfSVgO1xuICB9XG5cbiAgLyoqIENvbXB1dGVkIENUQSBidXR0b24gY2xhc3MgdG8gc3dpdGNoIHRvIGxpZ2h0IGdyZWVuIGFmdGVyIGdlbmVyYXRpb24gKi9cbiAgZ2V0IGN0YUJ1dHRvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZSA9ICdjcWEtdy1mdWxsIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLWZvbnQtc2VtaWJvbGQnO1xuICAgIGlmICh0aGlzLmlzR2VuZXJhdGVkKSB7XG4gICAgICAvLyBsaWdodCBncmVlbiBiYWNrZ3JvdW5kLCBkYXJrIGdyZWVuIHRleHQsIHN1YnRsZSBncmVlbiBib3JkZXJcbiAgICAgIHJldHVybiBgJHtiYXNlfSBjcWEtYmctWyNEMUZBRTVdIGNxYS10ZXh0LVsjMDY1RjQ2XSBjcWEtYm9yZGVyLVsjQTdGM0QwXWA7XG4gICAgfVxuICAgIGlmKHRoaXMuaXNHZW5lcmF0aW5nKSB7XG4gICAgICByZXR1cm4gYCR7YmFzZX0gY3FhLWJnLXByaW1hcnktc3VyZmFjZSBjcWEtdGV4dC1wcmltYXJ5YDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICBvbkFpQ292ZXJhZ2VDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0dlbmVyYXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdGFDbGlja2VkLmVtaXQoKTtcbiAgICB0aGlzLmFpQ292ZXJhZ2VDbGljay5lbWl0KCk7XG5cbiAgICAvLyBTdGFydCBnZW5lcmF0aW5nIHN0YXRlXG4gICAgdGhpcy5pc0dlbmVyYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNHZW5lcmF0aW5nID0gdHJ1ZTtcblxuICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lciBkZWZlbnNpdmVseVxuICAgIGlmICh0aGlzLmdlbmVyYXRpb25UaW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmdlbmVyYXRpb25UaW1lcklkKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5nZW5lcmF0aW9uVGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNHZW5lcmF0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmlzR2VuZXJhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2VuZXJhdGlvblRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgfSwgdGhpcy5nZW5lcmF0aW9uTXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2VuZXJhdGlvblRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZ2VuZXJhdGlvblRpbWVySWQpO1xuICAgICAgdGhpcy5nZW5lcmF0aW9uVGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXVpLXJvb3RcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtaC1mdWxsIGNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXB5LVsxMHB4XSBtZDpjcWEtcHgtWzE3cHhdIGNxYS1weC0zIGNxYS1zaGFkb3ctY2FyZCBjcWEtZmxleCBjcWEtZmxleC1jb2xcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1tYi0zIGNxYS1zaHJpbmstMCBjcWEtbWluLWgtWzI4cHhdXCI+XG4gICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWxlYWRpbmctWzI4cHhdIGNxYS1mb250LWJvbGQgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtZGlhbG9nIGNxYS1mbGV4LXNocmlua1wiPnt7IHRpdGxlIH19PC9oMz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1zaHJpbmstMCBjcWEtZmxleC1ub3dyYXBcIj5cbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiaXNzdWVzQ2xpY2tlZC5lbWl0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXB4LVsxMHB4XSBjcWEtcHktWzRweF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtZm9udC1pbnRlciBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy13YXJuaW5nLWxpZ2h0IGNxYS10ZXh0LWRhbmdlciBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgIHt7IGlzc3VlcyB9fSB7eyBpc3N1ZXMgPT09IDEgPyAnaXNzdWUnIDogJ2lzc3VlcycgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1wcmltYXJ5IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS13aGl0ZXNwYWNlLW5vd3JhcCBjcWEtZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dWaWV3QWN0aW9uXCIgKGNsaWNrKT1cInZpZXcuZW1pdCgpXCI+XG4gICAgICAgICAgICBWaWV3XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCIgc3Ryb2tlPVwiIzRGNDZFNVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwhLS0gRGVmYXVsdCBMYXlvdXQ6IE1pZGRsZSBtZXRyaWNzIHJvdyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0ID09PSAnZGVmYXVsdCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBtZDpjcWEtZ3JpZC1jb2xzLTQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAtMyBjcWEtbWItNCBjcWEtcHktMlwiIHN0eWxlPVwiYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGM0Y0RjY7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRjNGNEY2OyBib3JkZXItbGVmdDogbm9uZTsgYm9yZGVyLXJpZ2h0OiBub25lO1wiPlxuICAgICAgICA8IS0tIExlZnQ6IFBvc2l0aXZlIC8gTmVnYXRpdmUgLyBFZGdlIENhc2UgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1jZW50ZXIgY3FhLWN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInBvc2l0aXZlQ2xpY2tlZC5lbWl0KClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzE4cHhdIGNxYS1sZWFkaW5nLVsyOHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMDU5NjY5XVwiPnt7IHBvc2l0aXZlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBwb3NpdGl2ZUxhYmVsIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZWdhdGl2ZUNsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtbGVhZGluZy1bMjhweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bI0VGNDQ0NF1cIj57eyBuZWdhdGl2ZUNvdW50IH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgbmVnYXRpdmVMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZWRnZUNhc2VDbGlja2VkLmVtaXQoKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMThweF0gY3FhLWxlYWRpbmctWzI4cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtWyNGNTlFMEJdXCI+e3sgZWRnZUNhc2VDb3VudCB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LWRpYWxvZy1tdXRlZFwiPnt7IGVkZ2VDYXNlTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSaWdodDogQUkgLyBIdW1hbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LWNlbnRlciBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtZmxleC1jb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LVs2MHB4XSBjcWEtY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LWJvbGQgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtcHJpbWFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzJweF1cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc0MTVfMTE3NTEpXCI+PHBhdGggZD1cIk00Ljk2ODUgNy43NTAxMkM0LjkyMzg2IDcuNTc3MDkgNC44MzM2NyA3LjQxOTE4IDQuNzA3MzEgNy4yOTI4MkM0LjU4MDk1IDcuMTY2NDYgNC40MjMwNCA3LjA3NjI2IDQuMjUgNy4wMzE2MkwxLjE4MjUgNi4yNDA2MkMxLjEzMDE3IDYuMjI1NzcgMS4wODQxMSA2LjE5NDI1IDEuMDUxMzEgNi4xNTA4NUMxLjAxODUxIDYuMTA3NDQgMS4wMDA3NiA2LjA1NDUzIDEuMDAwNzYgNi4wMDAxMkMxLjAwMDc2IDUuOTQ1NzIgMS4wMTg1MSA1Ljg5MjgxIDEuMDUxMzEgNS44NDk0QzEuMDg0MTEgNS44MDYgMS4xMzAxNyA1Ljc3NDQ4IDEuMTgyNSA1Ljc1OTYyTDQuMjUgNC45NjgxMkM0LjQyMjk4IDQuOTIzNTMgNC41ODA4NSA0LjgzMzQxIDQuNzA3MiA0LjcwNzE0QzQuODMzNTYgNC41ODA4OCA0LjkyMzc4IDQuNDIzMDcgNC45Njg1IDQuMjUwMTJMNS43NTk1IDEuMTgyNjJDNS43NzQyIDEuMTMwMDggNS44MDU2OSAxLjA4MzggNS44NDkxNiAxLjA1MDgyQzUuODkyNjMgMS4wMTc4NSA1Ljk0NTY5IDEgNi4wMDAyNSAxQzYuMDU0ODEgMSA2LjEwNzg3IDEuMDE3ODUgNi4xNTEzNCAxLjA1MDgyQzYuMTk0ODEgMS4wODM4IDYuMjI2MyAxLjEzMDA4IDYuMjQxIDEuMTgyNjJMNy4wMzE1IDQuMjUwMTJDNy4wNzYxNCA0LjQyMzE2IDcuMTY2MzMgNC41ODEwNyA3LjI5MjY5IDQuNzA3NDNDNy40MTkwNSA0LjgzMzc5IDcuNTc2OTYgNC45MjM5OSA3Ljc1IDQuOTY4NjJMMTAuODE3NSA1Ljc1OTEyQzEwLjg3MDMgNS43NzM2NyAxMC45MTY4IDUuODA1MTMgMTAuOTQ5OSA1Ljg0ODY2QzEwLjk4MzEgNS44OTIyIDExLjAwMSA1Ljk0NTQxIDExLjAwMSA2LjAwMDEyQzExLjAwMSA2LjA1NDg0IDEwLjk4MzEgNi4xMDgwNSAxMC45NDk5IDYuMTUxNTlDMTAuOTE2OCA2LjE5NTEyIDEwLjg3MDMgNi4yMjY1NyAxMC44MTc1IDYuMjQxMTJMNy43NSA3LjAzMTYyQzcuNTc2OTYgNy4wNzYyNiA3LjQxOTA1IDcuMTY2NDYgNy4yOTI2OSA3LjI5MjgyQzcuMTY2MzMgNy40MTkxOCA3LjA3NjE0IDcuNTc3MDkgNy4wMzE1IDcuNzUwMTJMNi4yNDA1IDEwLjgxNzZDNi4yMjU4IDEwLjg3MDIgNi4xOTQzMSAxMC45MTY1IDYuMTUwODQgMTAuOTQ5NEM2LjEwNzM3IDEwLjk4MjQgNi4wNTQzMSAxMS4wMDAyIDUuOTk5NzUgMTEuMDAwMkM1Ljk0NTE5IDExLjAwMDIgNS44OTIxMyAxMC45ODI0IDUuODQ4NjYgMTAuOTQ5NEM1LjgwNTE5IDEwLjkxNjUgNS43NzM3IDEwLjg3MDIgNS43NTkgMTAuODE3Nkw0Ljk2ODUgNy43NTAxMlpcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTAgMS41VjMuNVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMSAyLjVIOVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yIDguNVY5LjVcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMi41IDlIMS41XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVwiY2xpcDBfNzQxNV8xMTc1MVwiPjxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz5cbiAgICAgICAgICAgICAgICB7eyBhaUxhYmVsIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1mb250LWJvbGQgY3FhLWZvbnQtaW50ZXIgY3FhLXRleHQtZGlhbG9nXCI+e3sgYWlDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1iZy1wcmltYXJ5LXN1cmZhY2UgY3FhLXctWzJweF0gY3FhLWgtZnVsbCBjcWEtbXgtWzMuNXB4XVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctWzYwcHhdXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtZm9udC1ib2xkIGNxYS1mb250LWludGVyIGNxYS10ZXh0LWRpYWxvZy1zZWNvbmRhcnkgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsycHhdXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk05LjUgMTAuNVY5LjVDOS41IDguOTY5NTcgOS4yODkyOSA4LjQ2MDg2IDguOTE0MjEgOC4wODU3OUM4LjUzOTE0IDcuNzEwNzEgOC4wMzA0MyA3LjUgNy41IDcuNUg0LjVDMy45Njk1NyA3LjUgMy40NjA4NiA3LjcxMDcxIDMuMDg1NzkgOC4wODU3OUMyLjcxMDcxIDguNDYwODYgMi41IDguOTY5NTcgMi41IDkuNVYxMC41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgNS41QzcuMTA0NTcgNS41IDggNC42MDQ1NyA4IDMuNUM4IDIuMzk1NDMgNy4xMDQ1NyAxLjUgNiAxLjVDNC44OTU0MyAxLjUgNCAyLjM5NTQzIDQgMy41QzQgNC42MDQ1NyA0Ljg5NTQzIDUuNSA2IDUuNVpcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgICAgICAgIHt7IGh1bWFuTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLWZvbnQtYm9sZCBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1kaWFsb2dcIj57eyBodW1hbkNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkIGNxYS1wdC1bMnB4XSBjcWEtcGItMVwiPkNvdmVyYWdlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE1vYmlsZSBMYXlvdXQ6IFN0YWNrZWQgbWV0cmljcyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGF5b3V0ID09PSAnbW9iaWxlJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTMgY3FhLW1iLTQgY3FhLXB5LTJcIiBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjRjNGNEY2OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0YzRjRGNjsgYm9yZGVyLWxlZnQ6IG5vbmU7IGJvcmRlci1yaWdodDogbm9uZTtcIj5cbiAgICAgICAgPCEtLSBGaXJzdCByb3c6IFBvc2l0aXZlIC8gTmVnYXRpdmUgLyBFZGdlIENhc2UgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ3JpZC1jb2xzLTUgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xIGNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicG9zaXRpdmVDbGlja2VkLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzA1OTY2OV1cIj57eyBwb3NpdGl2ZUNvdW50IH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBwb3NpdGl2ZUxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xIGNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwibmVnYXRpdmVDbGlja2VkLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bI0VGNDQ0NF1cIj57eyBuZWdhdGl2ZUNvdW50IH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBuZWdhdGl2ZUxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xIGNxYS10ZXh0LWNlbnRlciBjcWEtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZWRnZUNhc2VDbGlja2VkLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bI0Y1OUUwQl1cIj57eyBlZGdlQ2FzZUNvdW50IH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj57eyBlZGdlQ2FzZUxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNlcGFyYXRvciAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWgtWzFweF0gY3FhLWJnLVsjRjNGNEY2XVwiPjwvZGl2PlxuICAgICAgICA8IS0tIFNlY29uZCByb3c6IEFJIC8gSHVtYW4gKGFsaWduZWQgYmV0d2VlbiBQb3NpdGl2ZS1OZWdhdGl2ZSBhbmQgTmVnYXRpdmUtRWRnZSBDYXNlKSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtNSBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTFcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTEgY3FhLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1wcmltYXJ5IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC1bMnB4XVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNzQxNV8xMTc1MSlcIj48cGF0aCBkPVwiTTQuOTY4NSA3Ljc1MDEyQzQuOTIzODYgNy41NzcwOSA0LjgzMzY3IDcuNDE5MTggNC43MDczMSA3LjI5MjgyQzQuNTgwOTUgNy4xNjY0NiA0LjQyMzA0IDcuMDc2MjYgNC4yNSA3LjAzMTYyTDEuMTgyNSA2LjI0MDYyQzEuMTMwMTcgNi4yMjU3NyAxLjA4NDExIDYuMTk0MjUgMS4wNTEzMSA2LjE1MDg1QzEuMDE4NTEgNi4xMDc0NCAxLjAwMDc2IDYuMDU0NTMgMS4wMDA3NiA2LjAwMDEyQzEuMDAwNzYgNS45NDU3MiAxLjAxODUxIDUuODkyODEgMS4wNTEzMSA1Ljg0OTRDMS4wODQxMSA1LjgwNiAxLjEzMDE3IDUuNzc0NDggMS4xODI1IDUuNzU5NjJMNC4yNSA0Ljk2ODEyQzQuNDIyOTggNC45MjM1MyA0LjU4MDg1IDQuODMzNDEgNC43MDcyIDQuNzA3MTRDNC44MzM1NiA0LjU4MDg4IDQuOTIzNzggNC40MjMwNyA0Ljk2ODUgNC4yNTAxMkw1Ljc1OTUgMS4xODI2MkM1Ljc3NDIgMS4xMzAwOCA1LjgwNTY5IDEuMDgzOCA1Ljg0OTE2IDEuMDUwODJDNS44OTI2MyAxLjAxNzg1IDUuOTQ1NjkgMSA2LjAwMDI1IDFDNi4wNTQ4MSAxIDYuMTA3ODcgMS4wMTc4NSA2LjE1MTM0IDEuMDUwODJDNi4xOTQ4MSAxLjA4MzggNi4yMjYzIDEuMTMwMDggNi4yNDEgMS4xODI2Mkw3LjAzMTUgNC4yNTAxMkM3LjA3NjE0IDQuNDIzMTYgNy4xNjYzMyA0LjU4MTA3IDcuMjkyNjkgNC43MDc0M0M3LjQxOTA1IDQuODMzNzkgNy41NzY5NiA0LjkyMzk5IDcuNzUgNC45Njg2MkwxMC44MTc1IDUuNzU5MTJDMTAuODcwMyA1Ljc3MzY3IDEwLjkxNjggNS44MDUxMyAxMC45NDk5IDUuODQ4NjZDMTAuOTgzMSA1Ljg5MjIgMTEuMDAxIDUuOTQ1NDEgMTEuMDAxIDYuMDAwMTJDMTEuMDAxIDYuMDU0ODQgMTAuOTgzMSA2LjEwODA1IDEwLjk0OTkgNi4xNTE1OUMxMC45MTY4IDYuMTk1MTIgMTAuODcwMyA2LjIyNjU3IDEwLjgxNzUgNi4yNDExMkw3Ljc1IDcuMDMxNjJDNy41NzY5NiA3LjA3NjI2IDcuNDE5MDUgNy4xNjY0NiA3LjI5MjY5IDcuMjkyODJDNy4xNjYzMyA3LjQxOTE4IDcuMDc2MTQgNy41NzcwOSA3LjAzMTUgNy43NTAxMkw2LjI0MDUgMTAuODE3NkM2LjIyNTggMTAuODcwMiA2LjE5NDMxIDEwLjkxNjUgNi4xNTA4NCAxMC45NDk0QzYuMTA3MzcgMTAuOTgyNCA2LjA1NDMxIDExLjAwMDIgNS45OTk3NSAxMS4wMDAyQzUuOTQ1MTkgMTEuMDAwMiA1Ljg5MjEzIDEwLjk4MjQgNS44NDg2NiAxMC45NDk0QzUuODA1MTkgMTAuOTE2NSA1Ljc3MzcgMTAuODcwMiA1Ljc1OSAxMC44MTc2TDQuOTY4NSA3Ljc1MDEyWlwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMCAxLjVWMy41XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExIDIuNUg5XCIgc3Ryb2tlPVwiIzdDM0FFRFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTIgOC41VjkuNVwiIHN0cm9rZT1cIiM3QzNBRURcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yLjUgOUgxLjVcIiBzdHJva2U9XCIjN0MzQUVEXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XCJjbGlwMF83NDE1XzExNzUxXCI+PHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlxuICAgICAgICAgICAgICAgIHt7IGFpTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxM3B4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj57eyBhaUNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1jb2wtc3Bhbi0xIGNxYS10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS1mb250LWJvbGQgY3FhLXRleHQtZGlhbG9nLXNlY29uZGFyeSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzJweF1cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuNSAxMC41VjkuNUM5LjUgOC45Njk1NyA5LjI4OTI5IDguNDYwODYgOC45MTQyMSA4LjA4NTc5QzguNTM5MTQgNy43MTA3MSA4LjAzMDQzIDcuNSA3LjUgNy41SDQuNUMzLjk2OTU3IDcuNSAzLjQ2MDg2IDcuNzEwNzEgMy4wODU3OSA4LjA4NTc5QzIuNzEwNzEgOC40NjA4NiAyLjUgOC45Njk1NyAyLjUgOS41VjEwLjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiA1LjVDNy4xMDQ1NyA1LjUgOCA0LjYwNDU3IDggMy41QzggMi4zOTU0MyA3LjEwNDU3IDEuNSA2IDEuNUM0Ljg5NTQzIDEuNSA0IDIuMzk1NDMgNCAzLjVDNCA0LjYwNDU3IDQuODk1NDMgNS41IDYgNS41WlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAge3sgaHVtYW5MYWJlbCB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEzcHhdIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LWRpYWxvZ1wiPnt7IGh1bWFuQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWNvbC1zcGFuLTFcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gQm9keSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtbWItMyBjcWEtZmxleC0xXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdCBvZiBpdGVtc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdy1bNDUlXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LWRpYWxvZy1zZWNvbmRhcnkgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXNocmluay0wXCI+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cIml0LnN0YXR1cz09J3N1Y2Nlc3MnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY3FhLXNocmluay0wXCI+PHBhdGggZD1cIk0xMi44MzMzIDYuNDYzMDlWNi45OTk3NkMxMi44MzI2IDguMjU3NjcgMTIuNDI1MyA5LjQ4MTY1IDExLjY3MjEgMTAuNDg5MkMxMC45MTg5IDExLjQ5NjcgOS44NjAyNSAxMi4yMzM3IDguNjUzOTYgMTIuNTkwNEM3LjQ0NzY3IDEyLjk0NyA2LjE1ODQgMTIuOTA0MiA0Ljk3ODQ0IDEyLjQ2ODNDMy43OTg0OCAxMi4wMzIzIDIuNzkxMDUgMTEuMjI2NiAyLjEwNjM5IDEwLjE3MTRDMS40MjE3NCA5LjExNjExIDEuMDk2NTQgNy44Njc4IDEuMTc5MzEgNi42MTI2MUMxLjI2MjA4IDUuMzU3NDIgMS43NDgzNyA0LjE2MjYyIDIuNTY1NjYgMy4yMDYzOEMzLjM4Mjk1IDIuMjUwMTUgNC40ODc0NiAxLjU4MzczIDUuNzE0NDQgMS4zMDY1MUM2Ljk0MTQzIDEuMDI5MjkgOC4yMjUxNSAxLjE1NjEyIDkuMzc0MTcgMS42NjgwOVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNS4yNSA2LjQxNjM0TDcgOC4xNjYzNEwxMi44MzMzIDIuMzMzMDFcIiBzdHJva2U9XCIjMTBCOTgxXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXQuc3RhdHVzPT0nZXJyb3InXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY3FhLXNocmluay0wXCI+PHBhdGggZD1cIk03IDEyLjgzMzdDMTAuMjIxNyAxMi44MzM3IDEyLjgzMzMgMTAuMjIyIDEyLjgzMzMgNy4wMDAzM0MxMi44MzMzIDMuNzc4NjYgMTAuMjIxNyAxLjE2Njk5IDcgMS4xNjY5OUMzLjc3ODM0IDEuMTY2OTkgMS4xNjY2NiAzLjc3ODY2IDEuMTY2NjYgNy4wMDAzM0MxLjE2NjY2IDEwLjIyMiAzLjc3ODM0IDEyLjgzMzcgNyAxMi44MzM3WlwiIHN0cm9rZT1cIiNFRjQ0NDRcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNyA0LjY2Njk5VjcuMDAwMzNcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcgOS4zMzMwMUg3LjAwNTgzXCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAge3sgaXQubGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctWzQ1JV0gY3FhLWgtWzZweF0gY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctWyNGM0Y0RjZdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLXNocmluay0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLXJvdW5kZWQtZnVsbFwiIFtuZ0NsYXNzXT1cInN0YXR1c0NvbG9yQ2xhc3MoaXQpXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJmb3JtYXRQZXJjZW50KGl0LnBlcmNlbnQpXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZvbnQtYm9sZCBjcWEtc2hyaW5rLTBcIiBbbmdDbGFzc109XCJ0ZXh0Q29sb3JDbGFzcyhpdClcIj57e1xuICAgICAgICAgIGZvcm1hdFBlcmNlbnQoaXQucGVyY2VudCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICA8Y3FhLWJ1dHRvbiB2YXJpYW50PVwiZmlsbGVkXCIgW2N1c3RvbUNsYXNzXT1cImN0YUJ1dHRvbkNsYXNzXCIgKGNsaWNrKT1cIm9uQWlDb3ZlcmFnZUNsaWNrKClcIiBjbGFzcz1cImNxYS1tdC1hdXRvXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR2VuZXJhdGluZzsgZWxzZSBnZW5lcmF0aW5nVHBsXCI+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJpc0dlbmVyYXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjgzMzMgNi40NjMwOVY2Ljk5OTc2QzEyLjgzMjYgOC4yNTc2NyAxMi40MjUzIDkuNDgxNjUgMTEuNjcyMSAxMC40ODkyQzEwLjkxODkgMTEuNDk2NyA5Ljg2MDI1IDEyLjIzMzcgOC42NTM5NiAxMi41OTA0QzcuNDQ3NjcgMTIuOTQ3IDYuMTU4NCAxMi45MDQyIDQuOTc4NDQgMTIuNDY4M0MzLjc5ODQ4IDEyLjAzMjMgMi43OTEwNSAxMS4yMjY2IDIuMTA2MzkgMTAuMTcxNEMxLjQyMTc0IDkuMTE2MTEgMS4wOTY1NCA3Ljg2NzggMS4xNzkzMSA2LjYxMjYxQzEuMjYyMDggNS4zNTc0MiAxLjc0ODM3IDQuMTYyNjIgMi41NjU2NiAzLjIwNjM4QzMuMzgyOTUgMi4yNTAxNSA0LjQ4NzQ2IDEuNTgzNzMgNS43MTQ0NCAxLjMwNjUxQzYuOTQxNDMgMS4wMjkyOSA4LjIyNTE1IDEuMTU2MTIgOS4zNzQxNyAxLjY2ODA5XCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk01LjI1IDYuNDE2MzRMNyA4LjE2NjM0TDEyLjgzMzMgMi4zMzMwMVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICB7eyBjdGFUZXh0IH19XG4gICAgICAgIDxzdmcgKm5nSWY9XCIhaXNHZW5lcmF0aW5nICYmICFpc0dlbmVyYXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTkgM1YxNU0zIDlIMTVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImlzR2VuZXJhdGVkXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzVjE1TTMgOUgxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2dlbmVyYXRpbmdUcGw+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0dlbmVyYXRlZFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLW9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNiA5YTcgNyAwIDAgMS03IDdcIiBzdHJva2Utd2lkdGg9XCIyXCI+XG4gICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIiB0eXBlPVwicm90YXRlXCIgZnJvbT1cIjAgOSA5XCIgdG89XCIzNjAgOSA5XCIgZHVyPVwiMC44c1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz5cbiAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNHZW5lcmF0ZWRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1vcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgOWE3IDcgMCAwIDEtNyA3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxuICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIGZyb209XCIwIDkgOVwiIHRvPVwiMzYwIDkgOVwiIGR1cj1cIjAuOHNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgR2VuZXJhdGluZ1xuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -2,4 +2,4 @@
2
2
  * Models and interfaces for execution screen step components
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2V4ZWN1dGlvbi1zdGVwLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciBleGVjdXRpb24gc2NyZWVuIHN0ZXAgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB0eXBlIFN0ZXBTdGF0dXMgPSAnc3VjY2VzcycgfCAnZmFpbGVkJyB8ICdwZW5kaW5nJyB8ICdydW5uaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBUaW1pbmdCcmVha2Rvd24ge1xuICBhcHA6IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xuICB0b29sOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJTdGVwIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBkdXJhdGlvbjogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIHRpbWVzdGFtcD86IHN0cmluZzsgLy8gb3B0aW9uYWwgdGltZXN0YW1wIGxpa2UgXCIwMDoxMlwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcEl0ZXJhdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7IC8vIGUuZy4sIFwiSXRlciAyIChwcm9kdWN0aW9uKVwiXG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgc3ViU3RlcHM/OiBTdWJTdGVwW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQnJhbmNoIHtcbiAgdHlwZTogJ2lmJyB8ICdlbHNlJyB8ICdlbHNlIGlmJztcbiAgbGFiZWw6IHN0cmluZzsgLy8gZS5nLiwgXCJQcmVtaXVtIHVzZXJcIiBvciBcIkZyZWUgdXNlclwiXG4gIGV4ZWN1dGVkOiBib29sZWFuO1xuICBzdWJTdGVwcz86IFN1YlN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW5zaG90RGF0YSB7XG4gIGJhc2VsaW5lPzogc3RyaW5nOyAvLyBVUkwgb3IgYmFzZTY0XG4gIGN1cnJlbnQ/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgZGlmZmVyZW5jZT86IHN0cmluZzsgLy8gVVJMIG9yIGJhc2U2NFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0VudHJ5IHtcbiAgbGV2ZWw6ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmVEZXRhaWxzIHtcbiAgZXhwZWN0ZWQ6IHN0cmluZztcbiAgYWN0dWFsOiBzdHJpbmc7XG4gIGZhaWxlZEFjdGlvbj86IHN0cmluZzsgLy8gVGhlIGFjdGlvbiB0aGF0IGZhaWxlZFxuICBhaUZpeEFwcGxpZWQ/OiBib29sZWFuO1xuICBhaUZpeE1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNjcmVlbnNob3RzPzogU2NyZWVuc2hvdERhdGE7XG4gIGxvZ3M/OiBMb2dFbnRyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VTdGVwQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgdGVzdFN0ZXBSZXN1bHRJZDogc3RyaW5nO1xuICBzdGVwTnVtYmVyOiBzdHJpbmc7IC8vIGUuZy4sIFwiMVwiLCBcIjIuMVwiLCBcIjMuMi4xXCJcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBkdXJhdGlvbjogbnVtYmVyOyAvLyB0b3RhbCBkdXJhdGlvbiBpbiBzZWNvbmRzXG4gIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuOyAvLyB3aGV0aGVyIHRoZSBzdGVwIGlzIGV4cGFuZGVkIGJ5IGRlZmF1bHRcbiAgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZkhlYWxBbmFseXNpc0RhdGEge1xuICBvcmlnaW5hbExvY2F0b3I6IHN0cmluZztcbiAgaGVhbGVkTG9jYXRvcjogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7IC8vIDAtMTAwXG4gIGhlYWxNZXRob2Q6IHN0cmluZzsgLy8gZS5nLiwgXCJTZW1hbnRpYyBBdHRyaWJ1dGUgTWF0Y2hpbmdcIlxufVxuXG5leHBvcnQgdHlwZSBTZWxmSGVhbEFjdGlvbiA9ICdhY2NlcHQnIHwgJ3JlamVjdCcgfCAnbW9kaWZ5LWFjY2VwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnYmFzaWMnO1xuICBzdWJTdGVwczogU3ViU3RlcFtdO1xuICBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIHNlbGZIZWFsZWQ/OiBib29sZWFuOyAvLyBJbmRpY2F0ZXMgaWYgc2VsZi1oZWFsaW5nIHdhcyBhcHBsaWVkXG4gIHNlbGZIZWFsRHVyYXRpb24/OiBudW1iZXI7IC8vIER1cmF0aW9uIG9mIHNlbGYtaGVhbGluZyBwcm9jZXNzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEdyb3VwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnc3RlcC1ncm91cCc7XG4gIGdyb3VwTmFtZTogc3RyaW5nOyAvLyBlLmcuLCBcIk5hdmlnYXRpb25cIiwgXCJDaGVja291dCBmbG93XCJcbiAgc3RlcHM6IEV4ZWN1dGlvblN0ZXBDb25maWdbXTsgLy8gbmVzdGVkIHN0ZXBzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdsb29wJztcbiAgbG9vcFR5cGU/OiAnZm9yJyB8ICd3aGlsZSc7XG4gIGl0ZXJhdGlvbnM6IExvb3BJdGVyYXRpb25bXTtcbiAgc2VsZWN0ZWRJdGVyYXRpb25JZD86IHN0cmluZzsgLy8gd2hpY2ggaXRlcmF0aW9uIHRvIGRpc3BsYXlcbiAgZGVmYXVsdEl0ZXJhdGlvbj86ICdmaXJzdCcgfCAnbGFzdCc7IC8vIGRlZmF1bHQgaXRlcmF0aW9uIHRvIHNob3dcbiAgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107IC8vIHN0ZXBzIG5lc3RlZCB3aXRoaW4gdGhlIGxvb3BcbiAgc2hvd1ZpZXdBbGxJdGVyYXRpb25zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnY29uZGl0aW9uJztcbiAgY29uZGl0aW9uVGV4dDogc3RyaW5nOyAvLyBlLmcuLCBcImlmIHVzZXIgdHlwZSBpcyAnUHJlbWl1bSdcIlxuICBicmFuY2hlczogQ29uZGl0aW9uQnJhbmNoW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbGVkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2ZhaWxlZCc7XG4gIHN1YlN0ZXBzOiBTdWJTdGVwW107XG4gIGZhaWx1cmVEZXRhaWxzOiBGYWlsdXJlRGV0YWlscztcbiAgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlBZ2VudEFjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU6ICdleHRyYWN0JyB8ICd2YWxpZGF0ZSc7XG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgY29uZmlkZW5jZT86IG51bWJlcjsgLy8gMC0xMDBcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSUFnZW50U3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2FpLWFnZW50JztcbiAgcHJvbXB0OiBzdHJpbmc7XG4gIG9wdGltaXplZFJ1bj86IGJvb2xlYW47XG4gIGFjdGlvbkNvdW50PzogbnVtYmVyO1xuICBhY3Rpb25zOiBBSUFnZW50QWN0aW9uW107XG4gIHNlbGVjdGVkVGFiPzogJ2FjdGlvbi10cmFjZScgfCAncGxhbm5lci10aW1lbGluZScgfCAnYWktcmVhc29uaW5nJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlBc3NlcnRpb24ge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG4gIGFjdHVhbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdhcGknO1xuICBtZXRob2Q6IHN0cmluZzsgLy8gR0VULCBQT1NULCBQVVQsIERFTEVURSwgZXRjLlxuICBlbmRwb2ludDogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIHJlc3BvbnNlVGltZTogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgcmVxdWVzdEJvZHk/OiBhbnk7XG4gIHJlc3BvbnNlQm9keT86IGFueTtcbiAgcmVxdWVzdEhlYWRlcnM/OiBhbnk7XG4gIHJlc3BvbnNlSGVhZGVycz86IGFueTtcbiAgYXNzZXJ0aW9ucz86IEFwaUFzc2VydGlvbltdO1xuICBpbml0aWFsQWN0aW9ucz86IFN1YlN0ZXBbXTsgLy8gQWN0aW9ucyBiZWZvcmUgdGhlIEFQSSBjYWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2ZpbGUtZG93bmxvYWQnO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlVHlwZTogc3RyaW5nOyAvLyBQREYsIENTViwgZXRjLlxuICBmaWxlU2l6ZT86IHN0cmluZzsgLy8gZS5nLiwgXCIyLjQgTUJcIlxuICBmaWxlUGF0aD86IHN0cmluZztcbiAgZG93bmxvYWRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRGaWVsZCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjsgLy8gMC0xMDBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZmljYXRpb25DaGVjayB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1czogJ3Bhc3MnIHwgJ2ZhaWwnO1xuICBleHBlY3RlZDogc3RyaW5nO1xuICBhY3R1YWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdkb2N1bWVudC12ZXJpZmljYXRpb24nO1xuICBkb2N1bWVudFNjcmVlbnNob3Q/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgZXh0cmFjdGVkRmllbGRzOiBFeHRyYWN0ZWRGaWVsZFtdO1xuICB2ZXJpZmljYXRpb25DaGVja3M6IFZlcmlmaWNhdGlvbkNoZWNrW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcmVxdWlzaXRlSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7IC8vIGUuZy4sIFwiUHJlcmVxdWlzaXRlIDE6IExvZ2luIGZsb3dcIlxuICBzdGF0dXM6IFN0ZXBTdGF0dXM7XG4gIGR1cmF0aW9uOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbiAgc3RlcENvbmZpZz86IEV4ZWN1dGlvblN0ZXBDb25maWc7IC8vIE9wdGlvbmFsOiBmdWxsIHN0ZXAgY29uZmlnIHRvIHZpZXcgZGV0YWlsc1xufVxuXG5leHBvcnQgdHlwZSBFeGVjdXRpb25TdGVwQ29uZmlnID1cbiAgfCBCYXNpY1N0ZXBDb25maWdcbiAgfCBTdGVwR3JvdXBDb25maWdcbiAgfCBMb29wU3RlcENvbmZpZ1xuICB8IENvbmRpdGlvblN0ZXBDb25maWdcbiAgfCBGYWlsZWRTdGVwQ29uZmlnXG4gIHwgQUlBZ2VudFN0ZXBDb25maWdcbiAgfCBBcGlTdGVwQ29uZmlnXG4gIHwgRmlsZURvd25sb2FkU3RlcENvbmZpZ1xuICB8IERvY3VtZW50VmVyaWZpY2F0aW9uU3RlcENvbmZpZztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXN0ZXAubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2V4ZWN1dGlvbi1zdGVwLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWxzIGFuZCBpbnRlcmZhY2VzIGZvciBleGVjdXRpb24gc2NyZWVuIHN0ZXAgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB0eXBlIFN0ZXBTdGF0dXMgPSAnc3VjY2VzcycgfCAnZmFpbGVkJyB8ICdwZW5kaW5nJyB8ICdydW5uaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBUaW1pbmdCcmVha2Rvd24ge1xuICBhcHA6IG51bWJlcjsgLy8gaW4gc2Vjb25kc1xuICB0b29sOiBudW1iZXI7IC8vIGluIHNlY29uZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJTdGVwIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBkdXJhdGlvbjogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIHRpbWVzdGFtcD86IHN0cmluZzsgLy8gb3B0aW9uYWwgdGltZXN0YW1wIGxpa2UgXCIwMDoxMlwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcEl0ZXJhdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7IC8vIGUuZy4sIFwiSXRlciAyIChwcm9kdWN0aW9uKVwiXG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgc3ViU3RlcHM/OiBTdWJTdGVwW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQnJhbmNoIHtcbiAgdHlwZTogJ2lmJyB8ICdlbHNlJyB8ICdlbHNlIGlmJztcbiAgbGFiZWw6IHN0cmluZzsgLy8gZS5nLiwgXCJQcmVtaXVtIHVzZXJcIiBvciBcIkZyZWUgdXNlclwiXG4gIGV4ZWN1dGVkOiBib29sZWFuO1xuICBzdWJTdGVwcz86IFN1YlN0ZXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW5zaG90RGF0YSB7XG4gIGJhc2VsaW5lPzogc3RyaW5nOyAvLyBVUkwgb3IgYmFzZTY0XG4gIGN1cnJlbnQ/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgZGlmZmVyZW5jZT86IHN0cmluZzsgLy8gVVJMIG9yIGJhc2U2NFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0VudHJ5IHtcbiAgbGV2ZWw6ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmVEZXRhaWxzIHtcbiAgZXhwZWN0ZWQ6IHN0cmluZztcbiAgYWN0dWFsOiBzdHJpbmc7XG4gIGZhaWxlZEFjdGlvbj86IHN0cmluZzsgLy8gVGhlIGFjdGlvbiB0aGF0IGZhaWxlZFxuICBhaUZpeEFwcGxpZWQ/OiBib29sZWFuO1xuICBhaUZpeE1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNjcmVlbnNob3RzPzogU2NyZWVuc2hvdERhdGE7XG4gIGxvZ3M/OiBMb2dFbnRyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VTdGVwQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgdGVzdFN0ZXBSZXN1bHRJZDogc3RyaW5nO1xuICBzdGVwTnVtYmVyOiBzdHJpbmc7IC8vIGUuZy4sIFwiMVwiLCBcIjIuMVwiLCBcIjMuMi4xXCJcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBkdXJhdGlvbjogbnVtYmVyOyAvLyB0b3RhbCBkdXJhdGlvbiBpbiBzZWNvbmRzXG4gIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuOyAvLyB3aGV0aGVyIHRoZSBzdGVwIGlzIGV4cGFuZGVkIGJ5IGRlZmF1bHRcbiAgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZkhlYWxBbmFseXNpc0RhdGEge1xuICBvcmlnaW5hbExvY2F0b3I6IHN0cmluZztcbiAgaGVhbGVkTG9jYXRvcjogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7IC8vIDAtMTAwXG4gIGhlYWxNZXRob2Q6IHN0cmluZzsgLy8gZS5nLiwgXCJTZW1hbnRpYyBBdHRyaWJ1dGUgTWF0Y2hpbmdcIlxufVxuXG5leHBvcnQgdHlwZSBTZWxmSGVhbEFjdGlvbiA9ICdhY2NlcHQnIHwgJ3JlamVjdCcgfCAnbW9kaWZ5LWFjY2VwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnYmFzaWMnO1xuICBzdWJTdGVwczogU3ViU3RlcFtdO1xuICBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIHNlbGZIZWFsZWQ/OiBib29sZWFuOyAvLyBJbmRpY2F0ZXMgaWYgc2VsZi1oZWFsaW5nIHdhcyBhcHBsaWVkXG4gIHNlbGZIZWFsRHVyYXRpb24/OiBudW1iZXI7IC8vIER1cmF0aW9uIG9mIHNlbGYtaGVhbGluZyBwcm9jZXNzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEdyb3VwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnc3RlcC1ncm91cCc7XG4gIGdyb3VwTmFtZTogc3RyaW5nOyAvLyBlLmcuLCBcIk5hdmlnYXRpb25cIiwgXCJDaGVja291dCBmbG93XCJcbiAgc3RlcHM6IEV4ZWN1dGlvblN0ZXBDb25maWdbXTsgLy8gbmVzdGVkIHN0ZXBzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdsb29wJztcbiAgbG9vcFR5cGU/OiAnZm9yJyB8ICd3aGlsZSc7XG4gIGl0ZXJhdGlvbnM6IExvb3BJdGVyYXRpb25bXTtcbiAgc2VsZWN0ZWRJdGVyYXRpb25JZD86IHN0cmluZzsgLy8gd2hpY2ggaXRlcmF0aW9uIHRvIGRpc3BsYXlcbiAgZGVmYXVsdEl0ZXJhdGlvbj86ICdmaXJzdCcgfCAnbGFzdCc7IC8vIGRlZmF1bHQgaXRlcmF0aW9uIHRvIHNob3dcbiAgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107IC8vIHN0ZXBzIG5lc3RlZCB3aXRoaW4gdGhlIGxvb3BcbiAgc2hvd1ZpZXdBbGxJdGVyYXRpb25zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25TdGVwQ29uZmlnIGV4dGVuZHMgQmFzZVN0ZXBDb25maWcge1xuICB0eXBlOiAnY29uZGl0aW9uJztcbiAgY29uZGl0aW9uVGV4dDogc3RyaW5nOyAvLyBlLmcuLCBcImlmIHVzZXIgdHlwZSBpcyAnUHJlbWl1bSdcIlxuICBicmFuY2hlczogQ29uZGl0aW9uQnJhbmNoW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbGVkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2ZhaWxlZCc7XG4gIHN1YlN0ZXBzOiBTdWJTdGVwW107XG4gIGZhaWx1cmVEZXRhaWxzOiBGYWlsdXJlRGV0YWlscztcbiAgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQUlBZ2VudEFjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU6ICdleHRyYWN0JyB8ICd2YWxpZGF0ZSc7XG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgY29uZmlkZW5jZT86IG51bWJlcjsgLy8gMC0xMDBcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBSUFnZW50U3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2FpLWFnZW50JztcbiAgcHJvbXB0OiBzdHJpbmc7XG4gIG9wdGltaXplZFJ1bj86IGJvb2xlYW47XG4gIGFjdGlvbkNvdW50PzogbnVtYmVyO1xuICBhY3Rpb25zOiBBSUFnZW50QWN0aW9uW107XG4gIHNlbGVjdGVkVGFiPzogJ2FjdGlvbi10cmFjZScgfCAncGxhbm5lci10aW1lbGluZScgfCAnYWktcmVhc29uaW5nJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlBc3NlcnRpb24ge1xuICBpZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG4gIGFjdHVhbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdhcGknO1xuICBtZXRob2Q6IHN0cmluZzsgLy8gR0VULCBQT1NULCBQVVQsIERFTEVURSwgZXRjLlxuICBlbmRwb2ludDogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIHJlc3BvbnNlVGltZTogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgcmVxdWVzdEJvZHk/OiBhbnk7XG4gIHJlc3BvbnNlQm9keT86IGFueTtcbiAgcmVxdWVzdEhlYWRlcnM/OiBhbnk7XG4gIHJlc3BvbnNlSGVhZGVycz86IGFueTtcbiAgYXNzZXJ0aW9ucz86IEFwaUFzc2VydGlvbltdO1xuICBpbml0aWFsQWN0aW9ucz86IFN1YlN0ZXBbXTsgLy8gQWN0aW9ucyBiZWZvcmUgdGhlIEFQSSBjYWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkU3RlcENvbmZpZyBleHRlbmRzIEJhc2VTdGVwQ29uZmlnIHtcbiAgdHlwZTogJ2ZpbGUtZG93bmxvYWQnO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlVHlwZTogc3RyaW5nOyAvLyBQREYsIENTViwgZXRjLlxuICBmaWxlU2l6ZT86IHN0cmluZzsgLy8gZS5nLiwgXCIyLjQgTUJcIlxuICBmaWxlUGF0aD86IHN0cmluZztcbiAgZG93bmxvYWRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRGaWVsZCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjsgLy8gMC0xMDBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZmljYXRpb25DaGVjayB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1czogJ3Bhc3MnIHwgJ2ZhaWwnO1xuICBleHBlY3RlZDogc3RyaW5nO1xuICBhY3R1YWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdkb2N1bWVudC12ZXJpZmljYXRpb24nO1xuICBkb2N1bWVudFNjcmVlbnNob3Q/OiBzdHJpbmc7IC8vIFVSTCBvciBiYXNlNjRcbiAgZXh0cmFjdGVkRmllbGRzOiBFeHRyYWN0ZWRGaWVsZFtdO1xuICB2ZXJpZmljYXRpb25DaGVja3M6IFZlcmlmaWNhdGlvbkNoZWNrW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVN1YlN0ZXAge1xuICBpZDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7IC8vIFRleHQgZnJvbSBzb2NrZXRcbiAgaXNSdW5uaW5nOiBib29sZWFuOyAvLyB0cnVlID0gc2hvdyBsb2FkZXIsIGZhbHNlID0gc2hvdyBpY29uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZUV4ZWN1dGlvblN0ZXBDb25maWcgZXh0ZW5kcyBCYXNlU3RlcENvbmZpZyB7XG4gIHR5cGU6ICdsaXZlLWV4ZWN1dGlvbic7XG4gIHN1YlN0ZXBzOiBMaXZlU3ViU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlcXVpc2l0ZUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nOyAvLyBlLmcuLCBcIlByZXJlcXVpc2l0ZSAxOiBMb2dpbiBmbG93XCJcbiAgc3RhdHVzOiBTdGVwU3RhdHVzO1xuICBkdXJhdGlvbjogbnVtYmVyOyAvLyBpbiBzZWNvbmRzXG4gIHN0ZXBDb25maWc/OiBFeGVjdXRpb25TdGVwQ29uZmlnOyAvLyBPcHRpb25hbDogZnVsbCBzdGVwIGNvbmZpZyB0byB2aWV3IGRldGFpbHNcbn1cblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uU3RlcENvbmZpZyA9XG4gIHwgQmFzaWNTdGVwQ29uZmlnXG4gIHwgU3RlcEdyb3VwQ29uZmlnXG4gIHwgTG9vcFN0ZXBDb25maWdcbiAgfCBDb25kaXRpb25TdGVwQ29uZmlnXG4gIHwgRmFpbGVkU3RlcENvbmZpZ1xuICB8IEFJQWdlbnRTdGVwQ29uZmlnXG4gIHwgQXBpU3RlcENvbmZpZ1xuICB8IEZpbGVEb3dubG9hZFN0ZXBDb25maWdcbiAgfCBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb25maWdcbiAgfCBMaXZlRXhlY3V0aW9uU3RlcENvbmZpZztcbiJdfQ==