@cqa-lib/cqa-ui 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -84,6 +84,36 @@ Or in `styles.css`:
84
84
  @import url('https://fonts.googleapis.com/icon?family=Material+Icons');
85
85
  ```
86
86
 
87
+ ### Step 4: Copy Image Assets (Required for Empty State Components)
88
+
89
+ The library includes image assets that need to be copied to your application's assets folder. Add this to your `angular.json`:
90
+
91
+ ```json
92
+ {
93
+ "projects": {
94
+ "your-project": {
95
+ "architect": {
96
+ "build": {
97
+ "options": {
98
+ "assets": [
99
+ "src/favicon.ico",
100
+ "src/assets",
101
+ {
102
+ "glob": "**/*",
103
+ "input": "node_modules/@cqa-lib/cqa-ui/src/lib/assets/images",
104
+ "output": "/assets/images"
105
+ }
106
+ ]
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ This ensures that empty state images are available at runtime.
116
+
87
117
  ---
88
118
 
89
119
  ## 💡 Usage Examples
@@ -191,6 +221,28 @@ If you see `<cqa-search-bar></cqa-search-bar>` without any inner content, check:
191
221
  npm start # or ng serve
192
222
  ```
193
223
 
224
+ ### Empty state images not showing
225
+
226
+ If empty state components are not displaying images:
227
+
228
+ 1. **Missing asset configuration** - Ensure you've added the asset copy configuration in `angular.json` (see Step 4 in Quick Start):
229
+ ```json
230
+ {
231
+ "glob": "**/*",
232
+ "input": "node_modules/@cqa-lib/cqa-ui/src/lib/assets/images",
233
+ "output": "/assets/images"
234
+ }
235
+ ```
236
+
237
+ 2. **Rebuild after adding assets** - After updating `angular.json`, restart your development server:
238
+ ```bash
239
+ npm start # or ng serve
240
+ ```
241
+
242
+ 3. **Check browser console** - Look for 404 errors on image paths like `/assets/images/TestCaseIcon.png`
243
+
244
+ 4. **Verify assets are copied** - Check that files exist in your `dist/your-project/assets/images/` folder after building
245
+
194
246
  ---
195
247
 
196
248
  ## 📚 Storybook
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
3
+ import * as i1 from "@angular/material/icon";
4
+ import * as i2 from "@angular/common";
4
5
  export class FailedTestCasesCardComponent {
5
6
  constructor() {
6
7
  /** E.g., "C-62: Upload Content" */
@@ -36,12 +37,45 @@ export class FailedTestCasesCardComponent {
36
37
  onCardClick() {
37
38
  this.cardClick.emit();
38
39
  }
40
+ onCopyTitle(event) {
41
+ event.stopPropagation(); // Prevent card click from firing
42
+ if (navigator.clipboard && this.title) {
43
+ navigator.clipboard.writeText(this.title).catch((err) => {
44
+ console.error('Failed to copy title:', err);
45
+ // Fallback for older browsers
46
+ this.fallbackCopyToClipboard(this.title);
47
+ });
48
+ }
49
+ else {
50
+ // Fallback for browsers without clipboard API
51
+ this.fallbackCopyToClipboard(this.title);
52
+ }
53
+ }
54
+ fallbackCopyToClipboard(text) {
55
+ const textArea = document.createElement('textarea');
56
+ textArea.value = text;
57
+ textArea.style.position = 'fixed';
58
+ textArea.style.left = '-999999px';
59
+ textArea.style.top = '-999999px';
60
+ document.body.appendChild(textArea);
61
+ textArea.focus();
62
+ textArea.select();
63
+ try {
64
+ document.execCommand('copy');
65
+ }
66
+ catch (err) {
67
+ console.error('Fallback copy failed:', err);
68
+ }
69
+ finally {
70
+ document.body.removeChild(textArea);
71
+ }
72
+ }
39
73
  }
40
74
  FailedTestCasesCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FailedTestCasesCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- FailedTestCasesCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FailedTestCasesCardComponent, selector: "cqa-failed-test-cases-card", inputs: { title: "title", failures: "failures", failuresLabel: "failuresLabel", pillClass: "pillClass", rootCause: "rootCause", rootCauseLabel: "rootCauseLabel", showRootCause: "showRootCause", lastFailed: "lastFailed", lastFailedLabel: "lastFailedLabel", cardClass: "cardClass", leftAccentClass: "leftAccentClass", tags: "tags" }, outputs: { cardClick: "cardClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px] cqa-cursor-pointer cqa-transition-shadow cqa-duration-200 hover:cqa-shadow-md\"\n [ngClass]=\"[leftAccentClass, cardClass]\"\n (click)=\"onCardClick()\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title -->\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A]\">{{ title }}</h3>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <!-- Tags -->\n <div *ngIf=\"tags?.length\" class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <span\n *ngFor=\"let tag of tags\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-border-solid cqa-rounded-full cqa-bg-white cqa-border cqa-border-[#E5E7EB] cqa-text-[#1F1F24] cqa-text-[11px] cqa-leading-[14px] cqa-font-semibold cqa-px-[10px] cqa-py-[4px]\">\n {{ tag }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F] cqa-flex-1 cqa-min-w-0 cqa-mr-2 cqa-truncate\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "number": i1.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
75
+ FailedTestCasesCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FailedTestCasesCardComponent, selector: "cqa-failed-test-cases-card", inputs: { title: "title", failures: "failures", failuresLabel: "failuresLabel", pillClass: "pillClass", rootCause: "rootCause", rootCauseLabel: "rootCauseLabel", showRootCause: "showRootCause", lastFailed: "lastFailed", lastFailedLabel: "lastFailedLabel", cardClass: "cardClass", leftAccentClass: "leftAccentClass", tags: "tags" }, outputs: { cardClick: "cardClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px] cqa-cursor-pointer cqa-transition-shadow cqa-duration-200 hover:cqa-shadow-md\"\n [ngClass]=\"[leftAccentClass, cardClass]\"\n (click)=\"onCardClick()\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title with Copy Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-flex-1 cqa-min-w-0\">\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A] cqa-truncate\">{{ title }}</h3>\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[20px] cqa-min-h-[20px] cqa-flex-shrink-0 cqa-text-[#6B7280] hover:cqa-text-[#1A1A1A] cqa-transition-colors\"\n (click)=\"onCopyTitle($event)\"\n [attr.aria-label]=\"'Copy title'\"\n title=\"Copy title\"\n >\n <mat-icon class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">content_copy</mat-icon>\n </button>\n </div>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <!-- Tags -->\n <div *ngIf=\"tags?.length\" class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <span\n *ngFor=\"let tag of tags\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-border-solid cqa-rounded-full cqa-bg-white cqa-border cqa-border-[#E5E7EB] cqa-text-[#1F1F24] cqa-text-[11px] cqa-leading-[14px] cqa-font-semibold cqa-px-[10px] cqa-py-[4px]\">\n {{ tag }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F] cqa-flex-1 cqa-min-w-0 cqa-mr-2 cqa-truncate\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "number": i2.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
42
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FailedTestCasesCardComponent, decorators: [{
43
77
  type: Component,
44
- args: [{ selector: 'cqa-failed-test-cases-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px] cqa-cursor-pointer cqa-transition-shadow cqa-duration-200 hover:cqa-shadow-md\"\n [ngClass]=\"[leftAccentClass, cardClass]\"\n (click)=\"onCardClick()\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title -->\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A]\">{{ title }}</h3>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <!-- Tags -->\n <div *ngIf=\"tags?.length\" class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <span\n *ngFor=\"let tag of tags\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-border-solid cqa-rounded-full cqa-bg-white cqa-border cqa-border-[#E5E7EB] cqa-text-[#1F1F24] cqa-text-[11px] cqa-leading-[14px] cqa-font-semibold cqa-px-[10px] cqa-py-[4px]\">\n {{ tag }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F] cqa-flex-1 cqa-min-w-0 cqa-mr-2 cqa-truncate\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
78
+ args: [{ selector: 'cqa-failed-test-cases-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-[#FEF2F240] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-border-l-[#EF4444] cqa-rounded-[10px] cqa-p-[10px] cqa-pl-[20px] cqa-cursor-pointer cqa-transition-shadow cqa-duration-200 hover:cqa-shadow-md\"\n [ngClass]=\"[leftAccentClass, cardClass]\"\n (click)=\"onCardClick()\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2 cqa-flex-wrap\">\n <!-- Title with Copy Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-flex-1 cqa-min-w-0\">\n <h3 class=\"cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-text-[#1A1A1A] cqa-truncate\">{{ title }}</h3>\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[20px] cqa-min-h-[20px] cqa-flex-shrink-0 cqa-text-[#6B7280] hover:cqa-text-[#1A1A1A] cqa-transition-colors\"\n (click)=\"onCopyTitle($event)\"\n [attr.aria-label]=\"'Copy title'\"\n title=\"Copy title\"\n >\n <mat-icon class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">content_copy</mat-icon>\n </button>\n </div>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-[11px] cqa-py-[3px] cqa-rounded-full cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-tracking-[0.3px]\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <!-- Tags -->\n <div *ngIf=\"tags?.length\" class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <span\n *ngFor=\"let tag of tags\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-border-solid cqa-rounded-full cqa-bg-white cqa-border cqa-border-[#E5E7EB] cqa-text-[#1F1F24] cqa-text-[11px] cqa-leading-[14px] cqa-font-semibold cqa-px-[10px] cqa-py-[4px]\">\n {{ tag }}\n </span>\n </div>\n </div>\n\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-wrap cqa-mt-2\">\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"cqa-text-[12px] cqa-leading-[15px] cqa-text-[#F15F5F] cqa-flex-1 cqa-min-w-0 cqa-mr-2 cqa-truncate\">\n <span class=\"cqa-font-semibold\">{{ rootCauseLabel }}: </span>{{ rootCauseDisplay }}\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-py-[3px] cqa-flex cqa-items-center cqa-gap-1 cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-text-dialog-muted\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 11C8.76142 11 11 8.76142 11 6C11 3.23858 8.76142 1 6 1C3.23858 1 1 3.23858 1 6C1 8.76142 3.23858 11 6 11Z\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 3V6L8 7\" stroke=\"#6B7280\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
45
79
  }], propDecorators: { title: [{
46
80
  type: Input
47
81
  }], failures: [{
@@ -69,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
69
103
  }], cardClick: [{
70
104
  type: Output
71
105
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhHLE1BQU0sT0FBTyw0QkFBNEI7SUFOekM7UUFPRSxtQ0FBbUM7UUFDMUIsVUFBSyxHQUFXLGtCQUFrQixDQUFDO1FBQzVDLGdEQUFnRDtRQUN2QyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLG9DQUFvQztRQUMzQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUM1QyxvREFBb0Q7UUFDM0MsY0FBUyxHQUFXLHFDQUFxQyxDQUFDO1FBR25FLCtDQUErQztRQUN0QyxtQkFBYyxHQUFXLFlBQVksQ0FBQztRQUMvQyx3Q0FBd0M7UUFDL0Isa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFHdkMsMEJBQTBCO1FBQ2pCLG9CQUFlLEdBQVcsYUFBYSxDQUFDO1FBQ2pELDhDQUE4QztRQUNyQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLCtCQUErQjtRQUN0QixvQkFBZSxHQUFXLG9CQUFvQixDQUFDO1FBQ3hELDhDQUE4QztRQUNyQyxTQUFJLEdBQWEsRUFBRSxDQUFDO1FBQzdCLHVDQUF1QztRQUM3QixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQWFoRDtJQVhDLElBQUksZ0JBQWdCO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDcEQsT0FBTyx5QkFBeUIsQ0FBQztTQUNsQztRQUNELHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7O3lIQXRDVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixtYkNSekMsZzdFQXdDTTsyRkRoQ08sNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWZhaWxlZC10ZXN0LWNhc2VzLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IHtcbiAgLyoqIEUuZy4sIFwiQy02MjogVXBsb2FkIENvbnRlbnRcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0ZhaWxlZCBUZXN0IENhc2UnO1xuICAvKiogTnVtYmVyIG9mIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gdGhlIHBpbGwgKi9cbiAgQElucHV0KCkgZmFpbHVyZXM6IG51bWJlciA9IDA7XG4gIC8qKiBQaWxsIGxhYmVsIChlLmcuLCBcImZhaWx1cmVzXCIpICovXG4gIEBJbnB1dCgpIGZhaWx1cmVzTGFiZWw6IHN0cmluZyA9ICdmYWlsdXJlcyc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY2xhc3MgZm9yIHRoZSBwaWxsIGJhY2tncm91bmQgKi9cbiAgQElucHV0KCkgcGlsbENsYXNzOiBzdHJpbmcgPSAnY3FhLWJnLVsjRjE1RjVGXSBjcWEtdGV4dC1bI0ZBRkFGQV0nO1xuICAvKiogUm9vdCBjYXVzZSB0ZXh0OyB3aGVuIGVtcHR5LCBzaG93IGEgZGVmYXVsdCBtZXNzYWdlICovXG4gIEBJbnB1dCgpIHJvb3RDYXVzZT86IHN0cmluZztcbiAgLyoqIFJvb3QgY2F1c2UgbGFiZWwgKGxlZnQgcGFydCwgZW1waGFzaXplZCkgKi9cbiAgQElucHV0KCkgcm9vdENhdXNlTGFiZWw6IHN0cmluZyA9ICdSb290IGNhdXNlJztcbiAgLyoqIElmIGZhbHNlLCBoaWRlIHRoZSByb290IGNhdXNlIHJvdyAqL1xuICBASW5wdXQoKSBzaG93Um9vdENhdXNlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExhc3QgZmFpbGVkIHRleHQgKGUuZy4sIFwiMiBob3VycyBhZ29cIikgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciB0aW1lc3RhbXAgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZExhYmVsOiBzdHJpbmcgPSAnTGFzdCBmYWlsZWQnO1xuICAvKiogT3B0aW9uYWwgZXh0cmEgY2xhc3MgZm9yIHRoZSBvdXRlciBjYXJkICovXG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBMZWZ0IGJvcmRlciBhY2NlbnQgY2xhc3MgKi9cbiAgQElucHV0KCkgbGVmdEFjY2VudENsYXNzOiBzdHJpbmcgPSAnY3FhLWJvcmRlci1sLVs0cHhdJztcbiAgLyoqIE9wdGlvbmFsIHRhZ3MgdG8gcmVuZGVyIHVuZGVyIHRoZSB0aXRsZSAqL1xuICBASW5wdXQoKSB0YWdzOiBzdHJpbmdbXSA9IFtdO1xuICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIGNhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgcm9vdENhdXNlRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yb290Q2F1c2UgfHwgIXRoaXMucm9vdENhdXNlLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnTm8gcm9vdCBjYXVzZSBhdmFpbGFibGUnO1xuICAgIH1cbiAgICAvLyBUcmltIGFuZCByZXR1cm4gdGhlIHJvb3QgY2F1c2UgdGV4dFxuICAgIHJldHVybiB0aGlzLnJvb3RDYXVzZS50cmltKCk7XG4gIH1cblxuICBvbkNhcmRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRDbGljay5lbWl0KCk7XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJnLVsjRkVGMkYyNDBdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtYm9yZGVyLWwtWyNFRjQ0NDRdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tc2hhZG93IGNxYS1kdXJhdGlvbi0yMDAgaG92ZXI6Y3FhLXNoYWRvdy1tZFwiXG4gICAgW25nQ2xhc3NdPVwiW2xlZnRBY2NlbnRDbGFzcywgY2FyZENsYXNzXVwiXG4gICAgKGNsaWNrKT1cIm9uQ2FyZENsaWNrKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwXCI+XG4gICAgICAgIDwhLS0gVGl0bGUgLS0+XG4gICAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMxQTFBMUFdXCI+e3sgdGl0bGUgfX08L2gzPlxuXG4gICAgICAgIDwhLS0gRmFpbHVyZXMgcGlsbCAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtcHgtWzExcHhdIGNxYS1weS1bM3B4XSBjcWEtcm91bmRlZC1mdWxsIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10cmFja2luZy1bMC4zcHhdXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJwaWxsQ2xhc3NcIj5cbiAgICAgICAgICB7eyBmYWlsdXJlcyB8IG51bWJlciB9fSB7eyBmYWlsdXJlc0xhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFRhZ3MgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwidGFncz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtMlwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLWJvcmRlci1zb2xpZCBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy13aGl0ZSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS10ZXh0LVsjMUYxRjI0XSBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS1weC1bMTBweF0gY3FhLXB5LVs0cHhdXCI+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZmxleC13cmFwIGNxYS1tdC0yXCI+XG4gICAgICA8IS0tIFJvb3QgY2F1c2UgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1Jvb3RDYXVzZVwiIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bI0YxNUY1Rl0gY3FhLWZsZXgtMSBjcWEtbWluLXctMCBjcWEtbXItMiBjcWEtdHJ1bmNhdGVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHJvb3RDYXVzZUxhYmVsIH19OiA8L3NwYW4+e3sgcm9vdENhdXNlRGlzcGxheSB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVGltZXN0YW1wIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImxhc3RGYWlsZWRcIlxuICAgICAgICBjbGFzcz1cImNxYS1weS1bM3B4XSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1kaWFsb2ctbXV0ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM2QjcyODBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjNkI3MjgwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8c3Bhbj57eyBsYXN0RmFpbGVkTGFiZWwgfX06IHt7IGxhc3RGYWlsZWQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFoRyxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT0UsbUNBQW1DO1FBQzFCLFVBQUssR0FBVyxrQkFBa0IsQ0FBQztRQUM1QyxnREFBZ0Q7UUFDdkMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUM5QixvQ0FBb0M7UUFDM0Isa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFDNUMsb0RBQW9EO1FBQzNDLGNBQVMsR0FBVyxxQ0FBcUMsQ0FBQztRQUduRSwrQ0FBK0M7UUFDdEMsbUJBQWMsR0FBVyxZQUFZLENBQUM7UUFDL0Msd0NBQXdDO1FBQy9CLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBR3ZDLDBCQUEwQjtRQUNqQixvQkFBZSxHQUFXLGFBQWEsQ0FBQztRQUNqRCw4Q0FBOEM7UUFDckMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNoQywrQkFBK0I7UUFDdEIsb0JBQWUsR0FBVyxvQkFBb0IsQ0FBQztRQUN4RCw4Q0FBOEM7UUFDckMsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUM3Qix1Q0FBdUM7UUFDN0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0ErQ2hEO0lBN0NDLElBQUksZ0JBQWdCO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDcEQsT0FBTyx5QkFBeUIsQ0FBQztTQUNsQztRQUNELHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxpQ0FBaUM7UUFFMUQsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0RCxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1Qyw4QkFBOEI7Z0JBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsOENBQThDO1lBQzlDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsSUFBWTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNsQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDbEMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEIsSUFBSTtZQUNGLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDN0M7Z0JBQVM7WUFDUixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7O3lIQXhFVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixtYkNSekMsaW9HQW1ETTsyRkQzQ08sNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWZhaWxlZC10ZXN0LWNhc2VzLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLXRlc3QtY2FzZXMtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50IHtcbiAgLyoqIEUuZy4sIFwiQy02MjogVXBsb2FkIENvbnRlbnRcIiAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0ZhaWxlZCBUZXN0IENhc2UnO1xuICAvKiogTnVtYmVyIG9mIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gdGhlIHBpbGwgKi9cbiAgQElucHV0KCkgZmFpbHVyZXM6IG51bWJlciA9IDA7XG4gIC8qKiBQaWxsIGxhYmVsIChlLmcuLCBcImZhaWx1cmVzXCIpICovXG4gIEBJbnB1dCgpIGZhaWx1cmVzTGFiZWw6IHN0cmluZyA9ICdmYWlsdXJlcyc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gY2xhc3MgZm9yIHRoZSBwaWxsIGJhY2tncm91bmQgKi9cbiAgQElucHV0KCkgcGlsbENsYXNzOiBzdHJpbmcgPSAnY3FhLWJnLVsjRjE1RjVGXSBjcWEtdGV4dC1bI0ZBRkFGQV0nO1xuICAvKiogUm9vdCBjYXVzZSB0ZXh0OyB3aGVuIGVtcHR5LCBzaG93IGEgZGVmYXVsdCBtZXNzYWdlICovXG4gIEBJbnB1dCgpIHJvb3RDYXVzZT86IHN0cmluZztcbiAgLyoqIFJvb3QgY2F1c2UgbGFiZWwgKGxlZnQgcGFydCwgZW1waGFzaXplZCkgKi9cbiAgQElucHV0KCkgcm9vdENhdXNlTGFiZWw6IHN0cmluZyA9ICdSb290IGNhdXNlJztcbiAgLyoqIElmIGZhbHNlLCBoaWRlIHRoZSByb290IGNhdXNlIHJvdyAqL1xuICBASW5wdXQoKSBzaG93Um9vdENhdXNlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIExhc3QgZmFpbGVkIHRleHQgKGUuZy4sIFwiMiBob3VycyBhZ29cIikgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZD86IHN0cmluZztcbiAgLyoqIExhYmVsIGZvciB0aW1lc3RhbXAgKi9cbiAgQElucHV0KCkgbGFzdEZhaWxlZExhYmVsOiBzdHJpbmcgPSAnTGFzdCBmYWlsZWQnO1xuICAvKiogT3B0aW9uYWwgZXh0cmEgY2xhc3MgZm9yIHRoZSBvdXRlciBjYXJkICovXG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBMZWZ0IGJvcmRlciBhY2NlbnQgY2xhc3MgKi9cbiAgQElucHV0KCkgbGVmdEFjY2VudENsYXNzOiBzdHJpbmcgPSAnY3FhLWJvcmRlci1sLVs0cHhdJztcbiAgLyoqIE9wdGlvbmFsIHRhZ3MgdG8gcmVuZGVyIHVuZGVyIHRoZSB0aXRsZSAqL1xuICBASW5wdXQoKSB0YWdzOiBzdHJpbmdbXSA9IFtdO1xuICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQgKi9cbiAgQE91dHB1dCgpIGNhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgcm9vdENhdXNlRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yb290Q2F1c2UgfHwgIXRoaXMucm9vdENhdXNlLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnTm8gcm9vdCBjYXVzZSBhdmFpbGFibGUnO1xuICAgIH1cbiAgICAvLyBUcmltIGFuZCByZXR1cm4gdGhlIHJvb3QgY2F1c2UgdGV4dFxuICAgIHJldHVybiB0aGlzLnJvb3RDYXVzZS50cmltKCk7XG4gIH1cblxuICBvbkNhcmRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRDbGljay5lbWl0KCk7XG4gIH1cblxuICBvbkNvcHlUaXRsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUHJldmVudCBjYXJkIGNsaWNrIGZyb20gZmlyaW5nXG4gICAgXG4gICAgaWYgKG5hdmlnYXRvci5jbGlwYm9hcmQgJiYgdGhpcy50aXRsZSkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy50aXRsZSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weSB0aXRsZTonLCBlcnIpO1xuICAgICAgICAvLyBGYWxsYmFjayBmb3Igb2xkZXIgYnJvd3NlcnNcbiAgICAgICAgdGhpcy5mYWxsYmFja0NvcHlUb0NsaXBib2FyZCh0aGlzLnRpdGxlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgd2l0aG91dCBjbGlwYm9hcmQgQVBJXG4gICAgICB0aGlzLmZhbGxiYWNrQ29weVRvQ2xpcGJvYXJkKHRoaXMudGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmFsbGJhY2tDb3B5VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIHRleHRBcmVhLnZhbHVlID0gdGV4dDtcbiAgICB0ZXh0QXJlYS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgdGV4dEFyZWEuc3R5bGUubGVmdCA9ICctOTk5OTk5cHgnO1xuICAgIHRleHRBcmVhLnN0eWxlLnRvcCA9ICctOTk5OTk5cHgnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xuICAgIHRleHRBcmVhLmZvY3VzKCk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWxsYmFjayBjb3B5IGZhaWxlZDonLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJnLVsjRkVGMkYyNDBdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtYm9yZGVyLWwtWyNFRjQ0NDRdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tc2hhZG93IGNxYS1kdXJhdGlvbi0yMDAgaG92ZXI6Y3FhLXNoYWRvdy1tZFwiXG4gICAgW25nQ2xhc3NdPVwiW2xlZnRBY2NlbnRDbGFzcywgY2FyZENsYXNzXVwiXG4gICAgKGNsaWNrKT1cIm9uQ2FyZENsaWNrKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMiBjcWEtZmxleC13cmFwXCI+XG4gICAgICAgIDwhLS0gVGl0bGUgd2l0aCBDb3B5IEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE3cHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMUExQTFBXSBjcWEtdHJ1bmNhdGVcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLW91dGxpbmUtbm9uZSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWJvcmRlci1ub25lIGNxYS1wLTEgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLW1pbi13LVsyMHB4XSBjcWEtbWluLWgtWzIwcHhdIGNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjNkI3MjgwXSBob3ZlcjpjcWEtdGV4dC1bIzFBMUExQV0gY3FhLXRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNvcHlUaXRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvcHkgdGl0bGUnXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ29weSB0aXRsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00IGNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMTZweF1cIj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEZhaWx1cmVzIHBpbGwgLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXB4LVsxMXB4XSBjcWEtcHktWzNweF0gY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdHJhY2tpbmctWzAuM3B4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwicGlsbENsYXNzXCI+XG4gICAgICAgICAge3sgZmFpbHVyZXMgfCBudW1iZXIgfX0ge3sgZmFpbHVyZXNMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUYWdzIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInRhZ3M/Lmxlbmd0aFwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1ib3JkZXItc29saWQgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctd2hpdGUgY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtdGV4dC1bIzFGMUYyNF0gY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtcHgtWzEwcHhdIGNxYS1weS1bNHB4XVwiPlxuICAgICAgICAgIHt7IHRhZyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWZsZXgtd3JhcCBjcWEtbXQtMlwiPlxuICAgICAgPCEtLSBSb290IGNhdXNlIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dSb290Q2F1c2VcIiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLXRleHQtWyNGMTVGNUZdIGNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLW1yLTIgY3FhLXRydW5jYXRlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGRcIj57eyByb290Q2F1c2VMYWJlbCB9fTogPC9zcGFuPnt7IHJvb3RDYXVzZURpc3BsYXkgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFRpbWVzdGFtcCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJsYXN0RmFpbGVkXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtcHktWzNweF0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjNkI3MjgwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzZCNzI4MFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgPHNwYW4+e3sgbGFzdEZhaWxlZExhYmVsIH19OiB7eyBsYXN0RmFpbGVkIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -19,17 +19,36 @@ export class EmptyStateComponent {
19
19
  const presetConfig = getEmptyStatePreset(this.preset);
20
20
  this._title = presetConfig.title;
21
21
  this._description = presetConfig.description;
22
- this._imageUrl = presetConfig.imageUrl;
22
+ this._imageUrl = this.resolveImagePath(presetConfig.imageUrl);
23
23
  this._actions = [...presetConfig.actions];
24
24
  }
25
25
  else {
26
26
  // Use manual inputs if preset is not set
27
27
  this._title = this.title;
28
28
  this._description = this.description;
29
- this._imageUrl = this.imageUrl;
29
+ this._imageUrl = this.imageUrl ? this.resolveImagePath(this.imageUrl) : undefined;
30
30
  this._actions = this.actions;
31
31
  }
32
32
  }
33
+ /**
34
+ * Resolves image path to work both in development and when consumed from node_modules
35
+ * Tries multiple path strategies to find the image
36
+ */
37
+ resolveImagePath(imagePath) {
38
+ // If the path is already absolute or starts with http/https, return as-is
39
+ if (imagePath.startsWith('http://') || imagePath.startsWith('https://') || imagePath.startsWith('/')) {
40
+ return imagePath;
41
+ }
42
+ // If path already includes node_modules, return as-is
43
+ if (imagePath.includes('node_modules')) {
44
+ return imagePath;
45
+ }
46
+ // Standard approach: return the path as-is
47
+ // The consuming application should copy assets from node_modules/@cqa-lib/cqa-ui/src/lib/assets/images/
48
+ // to its own assets/images/ folder via angular.json configuration
49
+ // This is the recommended Angular library pattern
50
+ return imagePath;
51
+ }
33
52
  get displayTitle() {
34
53
  return this.preset ? this._title : this.title;
35
54
  }
@@ -69,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
69
88
  }], actionClick: [{
70
89
  type: Output
71
90
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBdUIsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQWdCM0YsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQVFXLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdyRCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0tBMkMzQztJQXpDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsMkJBQTJCO1lBQzNCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUF3QixFQUFFLEtBQWlCO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3BCLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDOztnSEF0RFUsbUJBQW1CO29HQUFuQixtQkFBbUIseU9DakJoQyw4b0dBMERBOzJGRHpDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtsQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVtcHR5U3RhdGVQcmVzZXRLZXksIGdldEVtcHR5U3RhdGVQcmVzZXQgfSBmcm9tICcuL2VtcHR5LXN0YXRlLXByZXNldHMuY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbXB0eVN0YXRlQWN0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFyaWFudD86ICdmaWxsZWQnIHwgJ291dGxpbmVkJyB8ICd0ZXh0JyB8ICdlbGV2YXRlZCcgfCAndG9uYWwnO1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uUG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgb25DbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1lbXB0eS1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW11cbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByZXNldD86IEVtcHR5U3RhdGVQcmVzZXRLZXk7XG4gIEBJbnB1dCgpIGltYWdlVXJsPzogc3RyaW5nOyAvLyBVUkwgZm9yIGltYWdlXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhY3Rpb25zOiBFbXB0eVN0YXRlQWN0aW9uW10gPSBbXTtcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVtcHR5U3RhdGVBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBfaW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9hY3Rpb25zOiBFbXB0eVN0YXRlQWN0aW9uW10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJlc2V0KSB7XG4gICAgICAvLyBVc2UgcHJlc2V0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGNvbnN0IHByZXNldENvbmZpZyA9IGdldEVtcHR5U3RhdGVQcmVzZXQodGhpcy5wcmVzZXQpO1xuICAgICAgdGhpcy5fdGl0bGUgPSBwcmVzZXRDb25maWcudGl0bGU7XG4gICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHByZXNldENvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICAgIHRoaXMuX2ltYWdlVXJsID0gcHJlc2V0Q29uZmlnLmltYWdlVXJsO1xuICAgICAgdGhpcy5fYWN0aW9ucyA9IFsuLi5wcmVzZXRDb25maWcuYWN0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBtYW51YWwgaW5wdXRzIGlmIHByZXNldCBpcyBub3Qgc2V0XG4gICAgICB0aGlzLl90aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHRoaXMuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMuaW1hZ2VVcmw7XG4gICAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZXQgPyB0aGlzLl90aXRsZSA6IHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgZGlzcGxheURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJlc2V0ID8gdGhpcy5fZGVzY3JpcHRpb24gOiB0aGlzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlJbWFnZVVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2ltYWdlVXJsIDogdGhpcy5pbWFnZVVybDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5QWN0aW9ucygpOiBFbXB0eVN0YXRlQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2FjdGlvbnMgOiB0aGlzLmFjdGlvbnM7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogRW1wdHlTdGF0ZUFjdGlvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKGFjdGlvbi5vbkNsaWNrKSB7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogMTRweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHBhZGRpbmc6IDg0LjYzcHggMzNweCA4NC42MnB4IDMzcHg7XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNjJweF0gY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgIDwhLS0gSWNvbiBDb250YWluZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImRpc3BsYXlJbWFnZVVybFwiIGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1zaHJpbmstMCBjcWEtdy0zMiBjcWEtaC0zMlwiPlxuICAgICAgPCEtLSBNYWluIEljb24gQ29udGFpbmVyIHdpdGggR3JhZGllbnQgQmFja2dyb3VuZCBhbmQgU2hhZG93IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtcm91bmRlZC0zeGwgY3FhLXctMzIgY3FhLWgtMzIgY3FhLXNoYWRvdy1zbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1pbnNldC0wIGNxYS1iZy1ncmFkaWVudC10by1iciBjcWEtZnJvbS1pbmRpZ28tNTAwIGNxYS10by12aW9sZXQtOTUwIGNxYS1yb3VuZGVkLTN4bCBjcWEtb3BhY2l0eS0xMFwiPjwvZGl2PlxuICAgICAgICA8IS0tIEljb24vSW1hZ2UgY2VudGVyZWQgaW5zaWRlIG9uIHRvcCBsYXllciAtIGZ1bGx5IG9wYXF1ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtaW5zZXQtMCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC0zeGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctMjAgY3FhLWgtMjAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGlzcGxheUltYWdlVXJsXCIgYWx0PVwiXCIgd2lkdGg9XCI4MHB4XCIgaGVpZ2h0PVwiODBweFwiIGNsYXNzPVwiY3FhLWJsb2NrIGNxYS1tYXgtdy1ub25lIGNxYS13LTIwIGNxYS1oLTIwIGNxYS1vYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIERlY29yYXRpdmUgRG90cyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctcHJpbWFyeS0zMDAgY3FhLW9wYWNpdHktWzAuODE1XVwiIHN0eWxlPVwibGVmdDogMTIwLjc5cHg7IHRvcDogLTkuMjFweDsgd2lkdGg6IDE4LjQxNnB4OyBoZWlnaHQ6IDE4LjQxNnB4OyB6LWluZGV4OiAyMDtcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctcHJpbWFyeS0zMDAgY3FhLW9wYWNpdHktWzAuNjk1XVwiIHN0eWxlPVwibGVmdDogLTkuMDJweDsgdG9wOiAxMjQuOThweDsgd2lkdGg6IDE0LjA0NHB4OyBoZWlnaHQ6IDE0LjA0NHB4OyB6LWluZGV4OiAyMDtcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29udGVudCBDb250YWluZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTkgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLSBUaXRsZSBhbmQgRGVzY3JpcHRpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMyBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlUaXRsZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS10ZXh0LWxnIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtY2VudGVyIGNxYS10ZXh0LW5ldXRyYWwtOTAwXCI+XG4gICAgICAgICAgICB7eyBkaXNwbGF5VGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlEZXNjcmlwdGlvblwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgIHt7IGRpc3BsYXlEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5QWN0aW9ucyAmJiBkaXNwbGF5QWN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXlBY3Rpb25zLmxlbmd0aCA+IDEgPyAnY3FhLWZsZXgtcm93IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC00JyA6ICdjcWEtZmxleC1jb2wgY3FhLWdhcC0yJ1wiXG4gICAgICA+XG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkaXNwbGF5QWN0aW9uc1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiYWN0aW9uLnZhcmlhbnQgfHwgJ2ZpbGxlZCdcIlxuICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImFjdGlvbi5pY29uUG9zaXRpb24gfHwgJ3N0YXJ0J1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwib25BY3Rpb25DbGljayhhY3Rpb24sICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBdUIsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQWdCM0YsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQVFXLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdyRCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0tBaUUzQztJQS9EQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsMkJBQTJCO1lBQzNCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN4QywwRUFBMEU7UUFDMUUsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCwyQ0FBMkM7UUFDM0Msd0dBQXdHO1FBQ3hHLGtFQUFrRTtRQUNsRSxrREFBa0Q7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBd0IsRUFBRSxLQUFpQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7Z0hBNUVVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlPQ2pCaEMsOG9HQTBEQTsyRkR6Q2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlUHJlc2V0S2V5LCBnZXRFbXB0eVN0YXRlUHJlc2V0IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS1wcmVzZXRzLmNvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlTdGF0ZUFjdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiAnZmlsbGVkJyB8ICdvdXRsaW5lZCcgfCAndGV4dCcgfCAnZWxldmF0ZWQnIHwgJ3RvbmFsJztcbiAgaWNvbj86IHN0cmluZztcbiAgaWNvblBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZW1wdHktc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcmVzZXQ/OiBFbXB0eVN0YXRlUHJlc2V0S2V5O1xuICBASW5wdXQoKSBpbWFnZVVybD86IHN0cmluZzsgLy8gVVJMIGZvciBpbWFnZVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFbXB0eVN0YXRlQWN0aW9uPigpO1xuXG4gIHByaXZhdGUgX2ltYWdlVXJsPzogc3RyaW5nO1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfYWN0aW9uczogRW1wdHlTdGF0ZUFjdGlvbltdID0gW107XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXNldCkge1xuICAgICAgLy8gVXNlIHByZXNldCBjb25maWd1cmF0aW9uXG4gICAgICBjb25zdCBwcmVzZXRDb25maWcgPSBnZXRFbXB0eVN0YXRlUHJlc2V0KHRoaXMucHJlc2V0KTtcbiAgICAgIHRoaXMuX3RpdGxlID0gcHJlc2V0Q29uZmlnLnRpdGxlO1xuICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBwcmVzZXRDb25maWcuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMucmVzb2x2ZUltYWdlUGF0aChwcmVzZXRDb25maWcuaW1hZ2VVcmwpO1xuICAgICAgdGhpcy5fYWN0aW9ucyA9IFsuLi5wcmVzZXRDb25maWcuYWN0aW9uc107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBtYW51YWwgaW5wdXRzIGlmIHByZXNldCBpcyBub3Qgc2V0XG4gICAgICB0aGlzLl90aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHRoaXMuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLl9pbWFnZVVybCA9IHRoaXMuaW1hZ2VVcmwgPyB0aGlzLnJlc29sdmVJbWFnZVBhdGgodGhpcy5pbWFnZVVybCkgOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9hY3Rpb25zID0gdGhpcy5hY3Rpb25zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBpbWFnZSBwYXRoIHRvIHdvcmsgYm90aCBpbiBkZXZlbG9wbWVudCBhbmQgd2hlbiBjb25zdW1lZCBmcm9tIG5vZGVfbW9kdWxlc1xuICAgKiBUcmllcyBtdWx0aXBsZSBwYXRoIHN0cmF0ZWdpZXMgdG8gZmluZCB0aGUgaW1hZ2VcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUltYWdlUGF0aChpbWFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gSWYgdGhlIHBhdGggaXMgYWxyZWFkeSBhYnNvbHV0ZSBvciBzdGFydHMgd2l0aCBodHRwL2h0dHBzLCByZXR1cm4gYXMtaXNcbiAgICBpZiAoaW1hZ2VQYXRoLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCBpbWFnZVBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIElmIHBhdGggYWxyZWFkeSBpbmNsdWRlcyBub2RlX21vZHVsZXMsIHJldHVybiBhcy1pc1xuICAgIGlmIChpbWFnZVBhdGguaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XG4gICAgICByZXR1cm4gaW1hZ2VQYXRoO1xuICAgIH1cblxuICAgIC8vIFN0YW5kYXJkIGFwcHJvYWNoOiByZXR1cm4gdGhlIHBhdGggYXMtaXNcbiAgICAvLyBUaGUgY29uc3VtaW5nIGFwcGxpY2F0aW9uIHNob3VsZCBjb3B5IGFzc2V0cyBmcm9tIG5vZGVfbW9kdWxlcy9AY3FhLWxpYi9jcWEtdWkvc3JjL2xpYi9hc3NldHMvaW1hZ2VzL1xuICAgIC8vIHRvIGl0cyBvd24gYXNzZXRzL2ltYWdlcy8gZm9sZGVyIHZpYSBhbmd1bGFyLmpzb24gY29uZmlndXJhdGlvblxuICAgIC8vIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIEFuZ3VsYXIgbGlicmFyeSBwYXR0ZXJuXG4gICAgcmV0dXJuIGltYWdlUGF0aDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZXQgPyB0aGlzLl90aXRsZSA6IHRoaXMudGl0bGU7XG4gIH1cblxuICBnZXQgZGlzcGxheURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJlc2V0ID8gdGhpcy5fZGVzY3JpcHRpb24gOiB0aGlzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlJbWFnZVVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2ltYWdlVXJsIDogdGhpcy5pbWFnZVVybDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5QWN0aW9ucygpOiBFbXB0eVN0YXRlQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByZXNldCA/IHRoaXMuX2FjdGlvbnMgOiB0aGlzLmFjdGlvbnM7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogRW1wdHlTdGF0ZUFjdGlvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKGFjdGlvbi5vbkNsaWNrKSB7XG4gICAgICAgIGFjdGlvbi5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBpZD1cImNxYS11aS1yb290XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogMTRweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHBhZGRpbmc6IDg0LjYzcHggMzNweCA4NC42MnB4IDMzcHg7XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNjJweF0gY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgIDwhLS0gSWNvbiBDb250YWluZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImRpc3BsYXlJbWFnZVVybFwiIGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1zaHJpbmstMCBjcWEtdy0zMiBjcWEtaC0zMlwiPlxuICAgICAgPCEtLSBNYWluIEljb24gQ29udGFpbmVyIHdpdGggR3JhZGllbnQgQmFja2dyb3VuZCBhbmQgU2hhZG93IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtcm91bmRlZC0zeGwgY3FhLXctMzIgY3FhLWgtMzIgY3FhLXNoYWRvdy1zbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1pbnNldC0wIGNxYS1iZy1ncmFkaWVudC10by1iciBjcWEtZnJvbS1pbmRpZ28tNTAwIGNxYS10by12aW9sZXQtOTUwIGNxYS1yb3VuZGVkLTN4bCBjcWEtb3BhY2l0eS0xMFwiPjwvZGl2PlxuICAgICAgICA8IS0tIEljb24vSW1hZ2UgY2VudGVyZWQgaW5zaWRlIG9uIHRvcCBsYXllciAtIGZ1bGx5IG9wYXF1ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtaW5zZXQtMCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC0zeGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXctMjAgY3FhLWgtMjAgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGlzcGxheUltYWdlVXJsXCIgYWx0PVwiXCIgd2lkdGg9XCI4MHB4XCIgaGVpZ2h0PVwiODBweFwiIGNsYXNzPVwiY3FhLWJsb2NrIGNxYS1tYXgtdy1ub25lIGNxYS13LTIwIGNxYS1oLTIwIGNxYS1vYmplY3QtY29udGFpblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIERlY29yYXRpdmUgRG90cyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctcHJpbWFyeS0zMDAgY3FhLW9wYWNpdHktWzAuODE1XVwiIHN0eWxlPVwibGVmdDogMTIwLjc5cHg7IHRvcDogLTkuMjFweDsgd2lkdGg6IDE4LjQxNnB4OyBoZWlnaHQ6IDE4LjQxNnB4OyB6LWluZGV4OiAyMDtcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctcHJpbWFyeS0zMDAgY3FhLW9wYWNpdHktWzAuNjk1XVwiIHN0eWxlPVwibGVmdDogLTkuMDJweDsgdG9wOiAxMjQuOThweDsgd2lkdGg6IDE0LjA0NHB4OyBoZWlnaHQ6IDE0LjA0NHB4OyB6LWluZGV4OiAyMDtcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29udGVudCBDb250YWluZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTkgY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLSBUaXRsZSBhbmQgRGVzY3JpcHRpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMyBjcWEtaXRlbXMtY2VudGVyIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlUaXRsZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS10ZXh0LWxnIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtY2VudGVyIGNxYS10ZXh0LW5ldXRyYWwtOTAwXCI+XG4gICAgICAgICAgICB7eyBkaXNwbGF5VGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlEZXNjcmlwdGlvblwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxNHB4XSBjcWEtdGV4dC1jZW50ZXIgY3FhLXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgIHt7IGRpc3BsYXlEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5QWN0aW9ucyAmJiBkaXNwbGF5QWN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXlBY3Rpb25zLmxlbmd0aCA+IDEgPyAnY3FhLWZsZXgtcm93IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC00JyA6ICdjcWEtZmxleC1jb2wgY3FhLWdhcC0yJ1wiXG4gICAgICA+XG4gICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkaXNwbGF5QWN0aW9uc1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiYWN0aW9uLnZhcmlhbnQgfHwgJ2ZpbGxlZCdcIlxuICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cImFjdGlvbi5pY29uUG9zaXRpb24gfHwgJ3N0YXJ0J1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwib25BY3Rpb25DbGljayhhY3Rpb24sICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=