@rangertechnologies/ngnxt 2.1.236 → 2.1.237
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/esm2022/environments/version.mjs +5 -5
- package/esm2022/lib/components/icon-selector/icon-selector.component.mjs +8 -55
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +3 -3
- package/fesm2022/rangertechnologies-ngnxt.mjs +17 -61
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/icon-selector/icon-selector.component.d.ts +1 -13
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.237.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.236.tgz +0 -0
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
/* tslint:disable */
|
|
3
3
|
export const VERSION = {
|
|
4
4
|
"dirty": true,
|
|
5
|
-
"raw": "
|
|
6
|
-
"hash": "
|
|
5
|
+
"raw": "7e5b8d57-dirty",
|
|
6
|
+
"hash": "7e5b8d57",
|
|
7
7
|
"distance": null,
|
|
8
8
|
"tag": null,
|
|
9
9
|
"semver": null,
|
|
10
|
-
"suffix": "
|
|
10
|
+
"suffix": "7e5b8d57-dirty",
|
|
11
11
|
"semverString": null,
|
|
12
|
-
"version": "2.1.
|
|
12
|
+
"version": "2.1.237"
|
|
13
13
|
};
|
|
14
14
|
/* tslint:enable */
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2Vudmlyb25tZW50cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixNQUFNLEVBQUUsVUFBVTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixjQUFjLEVBQUUsSUFBSTtJQUNwQixTQUFTLEVBQUUsU0FBUztDQUN2QixDQUFDO0FBQ0YsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSU1QT1JUQU5UOiBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIE9SIENIRUNLSU4hXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSB7XG4gICAgXCJkaXJ0eVwiOiB0cnVlLFxuICAgIFwicmF3XCI6IFwiN2U1YjhkNTctZGlydHlcIixcbiAgICBcImhhc2hcIjogXCI3ZTViOGQ1N1wiLFxuICAgIFwiZGlzdGFuY2VcIjogbnVsbCxcbiAgICBcInRhZ1wiOiBudWxsLFxuICAgIFwic2VtdmVyXCI6IG51bGwsXG4gICAgXCJzdWZmaXhcIjogXCI3ZTViOGQ1Ny1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IG51bGwsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMi4xLjIzN1wiXG59O1xuLyogdHNsaW50OmVuYWJsZSAqL1xuIl19
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
//MSM10JUL25
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { finalize, map, Subject, takeUntil } from 'rxjs';
|
|
5
4
|
import { FormsModule } from '@angular/forms';
|
|
6
5
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common
|
|
9
|
-
import * as i2 from "@angular/
|
|
10
|
-
import * as i3 from "@angular/
|
|
11
|
-
import * as i4 from "@angular/forms";
|
|
12
|
-
import * as i5 from "@angular/material/tooltip";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "@angular/material/tooltip";
|
|
13
10
|
export class IconSelectorComponent {
|
|
14
|
-
http;
|
|
15
|
-
sanitizer;
|
|
16
|
-
cdr;
|
|
17
11
|
allIcons;
|
|
18
12
|
themeColor = '#ff0000'; // Default theme color
|
|
19
13
|
height = '300px'; // Default height
|
|
@@ -32,16 +26,9 @@ export class IconSelectorComponent {
|
|
|
32
26
|
question = {};
|
|
33
27
|
options = []; // For radio buttons
|
|
34
28
|
iconSelected = new EventEmitter(); // Event emitter for selected icon
|
|
35
|
-
svgCache = new Map(); // Cache for better performance
|
|
36
|
-
destroyed = new Subject();
|
|
37
29
|
filteredIcons = [];
|
|
38
30
|
searchQuery = '';
|
|
39
31
|
showDropdown = false;
|
|
40
|
-
constructor(http, sanitizer, cdr) {
|
|
41
|
-
this.http = http;
|
|
42
|
-
this.sanitizer = sanitizer;
|
|
43
|
-
this.cdr = cdr;
|
|
44
|
-
}
|
|
45
32
|
ngOnInit() {
|
|
46
33
|
this.filteredIcons = this.allIcons != null && this.allIcons.length > 0 ? [...this.allIcons] : [];
|
|
47
34
|
}
|
|
@@ -56,50 +43,16 @@ export class IconSelectorComponent {
|
|
|
56
43
|
this.selectedIcon = icon;
|
|
57
44
|
this.iconSelected.emit(icon);
|
|
58
45
|
}
|
|
59
|
-
getSanitizedSvg(filename) {
|
|
60
|
-
// Return cached or loading SVG
|
|
61
|
-
return this.svgCache.get(filename) || this.loadSvg(filename);
|
|
62
|
-
}
|
|
63
|
-
loadSvg(filename) {
|
|
64
|
-
const loadingSvg = this.sanitizer.bypassSecurityTrustHtml(`<svg width="48" height="48" viewBox="0 0 24 24"></svg>`);
|
|
65
|
-
this.svgCache.set(filename, loadingSvg);
|
|
66
|
-
this.http.get(this.getIconUrl(filename), { responseType: 'text' })
|
|
67
|
-
.pipe(takeUntil(this.destroyed), map(svgData => this.processSvg(svgData, this.themeColor)), finalize(() => this.cdr.markForCheck()) // Safe change detection
|
|
68
|
-
)
|
|
69
|
-
.subscribe({
|
|
70
|
-
next: processedSvg => this.svgCache.set(filename, processedSvg),
|
|
71
|
-
error: () => this.svgCache.set(filename, loadingSvg)
|
|
72
|
-
});
|
|
73
|
-
return loadingSvg;
|
|
74
|
-
}
|
|
75
|
-
processSvg(svgData, color) {
|
|
76
|
-
const div = document.createElement('div');
|
|
77
|
-
div.innerHTML = svgData;
|
|
78
|
-
const svg = div.querySelector('svg');
|
|
79
|
-
if (svg) {
|
|
80
|
-
svg.querySelectorAll('[fill]:not([fill="none"]), [stroke]:not([stroke="none"])')
|
|
81
|
-
.forEach(el => {
|
|
82
|
-
if (el.hasAttribute('fill'))
|
|
83
|
-
el.setAttribute('fill', color);
|
|
84
|
-
if (el.hasAttribute('stroke'))
|
|
85
|
-
el.setAttribute('stroke', color);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
return this.sanitizer.bypassSecurityTrustHtml(div.innerHTML);
|
|
89
|
-
}
|
|
90
|
-
getIconUrl(fileName) {
|
|
91
|
-
return `${this.cdnIconURL}${fileName}`;
|
|
92
|
-
}
|
|
93
46
|
toggleDropdown() {
|
|
94
47
|
this.showDropdown = !this.showDropdown;
|
|
95
48
|
}
|
|
96
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconSelectorComponent, deps: [
|
|
97
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: IconSelectorComponent, isStandalone: true, selector: "nxt-icon-selector", inputs: { allIcons: "allIcons", themeColor: "themeColor", height: "height", tooltipPosition: "tooltipPosition", selectedIcon: "selectedIcon", cdnIconURL: "cdnIconURL", label: "label", labelFont: "labelFont", labelWeight: "labelWeight", inputWeight: "inputWeight", labelSize: "labelSize", labelColor: "labelColor", showLabel: "showLabel", required: "required", mode: "mode", question: "question", options: "options" }, outputs: { iconSelected: "iconSelected" }, ngImport: i0, template: "<!-- MSM10JUL25 for icon selector UI -->\n<div class=\"icon-selector\">\n <div class=\"selected-icon\" (click)=\"toggleDropdown()\">\n <span *ngIf=\"!selectedIcon\">Choose Icon</span>\n <div *ngIf=\"selectedIcon\" [innerHTML]=\"
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: IconSelectorComponent, isStandalone: true, selector: "nxt-icon-selector", inputs: { allIcons: "allIcons", themeColor: "themeColor", height: "height", tooltipPosition: "tooltipPosition", selectedIcon: "selectedIcon", cdnIconURL: "cdnIconURL", label: "label", labelFont: "labelFont", labelWeight: "labelWeight", inputWeight: "inputWeight", labelSize: "labelSize", labelColor: "labelColor", showLabel: "showLabel", required: "required", mode: "mode", question: "question", options: "options" }, outputs: { iconSelected: "iconSelected" }, ngImport: i0, template: "<!-- MSM10JUL25 for icon selector UI -->\n<div class=\"icon-selector\">\n <div class=\"selected-icon\" (click)=\"toggleDropdown()\">\n <span *ngIf=\"!selectedIcon\">Choose Icon</span>\n <div *ngIf=\"selectedIcon\" [innerHTML]=\"selectedIcon\" class=\"svg-container\"></div><span\n class=\"material-icons\">arrow_drop_down</span>\n </div>\n\n <div class=\"icon-selector-container\" [style.height]=\"height\" *ngIf=\"showDropdown\">\n <div class=\"search-container\">\n <div class=\"search-box\">\n <input type=\"text\" [(ngModel)]=\"searchQuery\" (input)=\"filterIcons()\" placeholder=\"Search icons...\"\n class=\"search-input\">\n </div>\n </div>\n\n <div class=\"icon-grid-container\" [style.max-height]=\"'calc(' + height + ' - 120px)'\">\n <div *ngIf=\"filteredIcons.length === 0\" class=\"no-results\">\n No icons found matching \"{{searchQuery}}\"\n </div>\n\n <div class=\"icon-grid\">\n <div *ngFor=\"let icon of filteredIcons\" class=\"icon-option\" [matTooltip]=icon.name\n [matTooltipPosition]=tooltipPosition (click)=\"selectIcon(icon.svg);toggleDropdown()\">\n <div [innerHTML]=\"icon.svg\" class=\"svg-container\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".icon-item svg{color:red}.icon-selector-container{padding:16px;max-width:400px;margin:0 auto;display:flex;flex-direction:column;border-radius:8px;box-shadow:0 2px 10px #0000001a;background-color:#fff;overflow:hidden}.search-container{margin:8px 0 16px}.icon-grid-container{overflow-y:scroll!important;padding-right:4px}.icon-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}.icon-option{display:flex;align-items:center;justify-content:center;padding:6px;border-radius:8px;cursor:pointer;transition:all .2s ease;background-color:#f5f5f5;aspect-ratio:1/1}.icon-option:hover{background-color:#e0e0e0;transform:scale(1.05)}.icon-option.selected{background-color:#e3f2fd;border:2px solid #2196f3}.no-results{text-align:center;padding:20px;color:#757575;font-style:italic}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}::-webkit-scrollbar-thumb{background:#888;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}.icon-selector{position:relative;display:inline-block}.selected-icon{display:flex;align-items:center;gap:4px;cursor:pointer;padding:3px;border:1px solid #ccc;border-radius:4px}.icon-dropdown{position:absolute;top:100%;left:0;z-index:1000;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:200px;overflow-y:auto;display:grid;grid-template-columns:repeat(10,1fr);gap:5px;padding:3px}.icon-option{padding:3px;cursor:pointer;border-radius:4px;display:flex;justify-content:center}.icon-option:hover{background-color:#f0f0f0}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1}svg{width:20px!important;height:20px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
98
51
|
}
|
|
99
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconSelectorComponent, decorators: [{
|
|
100
53
|
type: Component,
|
|
101
|
-
args: [{ selector: 'nxt-icon-selector', imports: [CommonModule, FormsModule, MatTooltipModule], standalone: true, template: "<!-- MSM10JUL25 for icon selector UI -->\n<div class=\"icon-selector\">\n <div class=\"selected-icon\" (click)=\"toggleDropdown()\">\n <span *ngIf=\"!selectedIcon\">Choose Icon</span>\n <div *ngIf=\"selectedIcon\" [innerHTML]=\"
|
|
102
|
-
}],
|
|
54
|
+
args: [{ selector: 'nxt-icon-selector', imports: [CommonModule, FormsModule, MatTooltipModule], standalone: true, template: "<!-- MSM10JUL25 for icon selector UI -->\n<div class=\"icon-selector\">\n <div class=\"selected-icon\" (click)=\"toggleDropdown()\">\n <span *ngIf=\"!selectedIcon\">Choose Icon</span>\n <div *ngIf=\"selectedIcon\" [innerHTML]=\"selectedIcon\" class=\"svg-container\"></div><span\n class=\"material-icons\">arrow_drop_down</span>\n </div>\n\n <div class=\"icon-selector-container\" [style.height]=\"height\" *ngIf=\"showDropdown\">\n <div class=\"search-container\">\n <div class=\"search-box\">\n <input type=\"text\" [(ngModel)]=\"searchQuery\" (input)=\"filterIcons()\" placeholder=\"Search icons...\"\n class=\"search-input\">\n </div>\n </div>\n\n <div class=\"icon-grid-container\" [style.max-height]=\"'calc(' + height + ' - 120px)'\">\n <div *ngIf=\"filteredIcons.length === 0\" class=\"no-results\">\n No icons found matching \"{{searchQuery}}\"\n </div>\n\n <div class=\"icon-grid\">\n <div *ngFor=\"let icon of filteredIcons\" class=\"icon-option\" [matTooltip]=icon.name\n [matTooltipPosition]=tooltipPosition (click)=\"selectIcon(icon.svg);toggleDropdown()\">\n <div [innerHTML]=\"icon.svg\" class=\"svg-container\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".icon-item svg{color:red}.icon-selector-container{padding:16px;max-width:400px;margin:0 auto;display:flex;flex-direction:column;border-radius:8px;box-shadow:0 2px 10px #0000001a;background-color:#fff;overflow:hidden}.search-container{margin:8px 0 16px}.icon-grid-container{overflow-y:scroll!important;padding-right:4px}.icon-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}.icon-option{display:flex;align-items:center;justify-content:center;padding:6px;border-radius:8px;cursor:pointer;transition:all .2s ease;background-color:#f5f5f5;aspect-ratio:1/1}.icon-option:hover{background-color:#e0e0e0;transform:scale(1.05)}.icon-option.selected{background-color:#e3f2fd;border:2px solid #2196f3}.no-results{text-align:center;padding:20px;color:#757575;font-style:italic}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}::-webkit-scrollbar-thumb{background:#888;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}.icon-selector{position:relative;display:inline-block}.selected-icon{display:flex;align-items:center;gap:4px;cursor:pointer;padding:3px;border:1px solid #ccc;border-radius:4px}.icon-dropdown{position:absolute;top:100%;left:0;z-index:1000;background:#fff;border:1px solid #ccc;border-radius:4px;max-height:200px;overflow-y:auto;display:grid;grid-template-columns:repeat(10,1fr);gap:5px;padding:3px}.icon-option{padding:3px;cursor:pointer;border-radius:4px;display:flex;justify-content:center}.icon-option:hover{background-color:#f0f0f0}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1}svg{width:20px!important;height:20px!important}\n"] }]
|
|
55
|
+
}], propDecorators: { allIcons: [{
|
|
103
56
|
type: Input
|
|
104
57
|
}], themeColor: [{
|
|
105
58
|
type: Input
|
|
@@ -136,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
136
89
|
}], iconSelected: [{
|
|
137
90
|
type: Output
|
|
138
91
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFTN0QsTUFBTSxPQUFPLHFCQUFxQjtJQTBCWjtJQUEwQjtJQUFpQztJQXpCdEUsUUFBUSxDQUFLO0lBQ2IsVUFBVSxHQUFXLFNBQVMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN0RCxNQUFNLEdBQVcsT0FBTyxDQUFDLENBQUMsaUJBQWlCO0lBQzNDLGVBQWUsR0FBVyxPQUFPLENBQUMsQ0FBQywyQ0FBMkM7SUFDOUUsWUFBWSxDQUFTLENBQUMscUJBQXFCO0lBQzNDLFVBQVUsR0FBVyxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFFN0MsS0FBSyxHQUFXLEVBQUUsQ0FBQyxDQUFFLGNBQWM7SUFDbkMsU0FBUyxHQUFXLEVBQUUsQ0FBQyxDQUFFLG1CQUFtQjtJQUM1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UCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQzt3R0ExRlUscUJBQXFCOzRGQUFyQixxQkFBcUIsMGhCQ2hCbEMsZ3pDQTZCTSxnc0REakJNLFlBQVksK1BBQUUsV0FBVyw4bUJBQUUsZ0JBQWdCOzs0RkFJMUMscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG1CQUFtQixXQUVwQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsY0FFMUMsSUFBSTswSUFHUCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy9NU00xMEpVTDI1XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgbWFwLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnh0LWljb24tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEljb25TZWxlY3RvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFsbEljb25zOiBbXTtcbiAgQElucHV0KCkgdGhlbWVDb2xvcjogc3RyaW5nID0gJyNmZjAwMDAnOyAvLyBEZWZhdWx0IHRoZW1lIGNvbG9yXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzMwMHB4JzsgLy8gRGVmYXVsdCBoZWlnaHRcbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBzdHJpbmcgPSBcImFib3ZlXCI7IC8vIGFib3ZlLCBiZWxvdywgbGVmdCwgcmlnaHQsIGJlZm9yZSwgYWZ0ZXJcbiAgQElucHV0KCkgc2VsZWN0ZWRJY29uOiBzdHJpbmc7IC8vIFNlbGVjdGVkIGljb24gbmFtZVxuICBASW5wdXQoKSBjZG5JY29uVVJMOiBzdHJpbmcgPSBcIlwiOyAvLyBDRE4gVVJMIGZvciBpY29uc1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsXG4gIEBJbnB1dCgpIGxhYmVsRm9udDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBmb250XG4gIEBJbnB1dCgpIGxhYmVsV2VpZ2h0OiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIFdlaWdodFxuICBASW5wdXQoKSBpbnB1dFdlaWdodDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBXZWlnaHRcbiAgQElucHV0KCkgbGFiZWxTaXplOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIFNpemVcbiAgQElucHV0KCkgbGFiZWxDb2xvcjogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBDb2xvclxuICBASW5wdXQoKSBzaG93TGFiZWw6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgQ29sb3JcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIFJlcXVpcmVkIHZhbGlkYXRpb25cbiAgQElucHV0KCkgbW9kZTogJ3ZpZXcnIHwgJ2VkaXQnIHwgJ3ByaW50JyA9ICdlZGl0JzsgLy8gTmV3IG1vZGUgaW5wdXRcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9XG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueVtdID0gW107IC8vIEZvciByYWRpbyBidXR0b25zXG5cbiAgQE91dHB1dCgpIGljb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpOyAvLyBFdmVudCBlbWl0dGVyIGZvciBzZWxlY3RlZCBpY29uXG4gIHN2Z0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFNhZmVIdG1sPigpOyAvLyBDYWNoZSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZmlsdGVyZWRJY29uczogYW55W10gPSBbXTtcbiAgc2VhcmNoUXVlcnkgPSAnJztcbiAgc2hvd0Ryb3Bkb3duID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucyAhPSBudWxsICYmIHRoaXMuYWxsSWNvbnMubGVuZ3RoID4gMCA/IFsuLi50aGlzLmFsbEljb25zXSA6IFtdO1xuICB9XG4gIGZpbHRlckljb25zKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hRdWVyeSkge1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucyAhPSBudWxsICYmIHRoaXMuYWxsSWNvbnMubGVuZ3RoID4gMCA/IFsuLi50aGlzLmFsbEljb25zXSA6IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmFsbEljb25zPy5maWx0ZXIoKGljb246IGFueSkgPT5cbiAgICAgIGljb24/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hRdWVyeT8udG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkSWNvbiA9IGljb247XG4gICAgdGhpcy5pY29uU2VsZWN0ZWQuZW1pdChpY29uKTtcbiAgfVxuXG4gIGdldFNhbml0aXplZFN2ZyhmaWxlbmFtZTogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIC8vIFJldHVybiBjYWNoZWQgb3IgbG9hZGluZyBTVkdcbiAgICByZXR1cm4gdGhpcy5zdmdDYWNoZS5nZXQoZmlsZW5hbWUpIHx8IHRoaXMubG9hZFN2ZyhmaWxlbmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTdmcoZmlsZW5hbWU6IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICBjb25zdCBsb2FkaW5nU3ZnID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXG4gICAgICBgPHN2ZyB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PC9zdmc+YFxuICAgICk7XG4gICAgdGhpcy5zdmdDYWNoZS5zZXQoZmlsZW5hbWUsIGxvYWRpbmdTdmcpO1xuXG4gICAgdGhpcy5odHRwLmdldCh0aGlzLmdldEljb25VcmwoZmlsZW5hbWUpLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcbiAgICAgICAgbWFwKHN2Z0RhdGEgPT4gdGhpcy5wcm9jZXNzU3ZnKHN2Z0RhdGEsIHRoaXMudGhlbWVDb2xvcikpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSkgLy8gU2FmZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogcHJvY2Vzc2VkU3ZnID0+IHRoaXMuc3ZnQ2FjaGUuc2V0KGZpbGVuYW1lLCBwcm9jZXNzZWRTdmcpLFxuICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5zdmdDYWNoZS5zZXQoZmlsZW5hbWUsIGxvYWRpbmdTdmcpXG4gICAgICB9KTtcblxuICAgIHJldHVybiBsb2FkaW5nU3ZnO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3ZnKHN2Z0RhdGE6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IFNhZmVIdG1sIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gc3ZnRGF0YTtcbiAgICBjb25zdCBzdmcgPSBkaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgICBpZiAoc3ZnKSB7XG4gICAgICBzdmcucXVlcnlTZWxlY3RvckFsbCgnW2ZpbGxdOm5vdChbZmlsbD1cIm5vbmVcIl0pLCBbc3Ryb2tlXTpub3QoW3N0cm9rZT1cIm5vbmVcIl0pJylcbiAgICAgICAgLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGUoJ2ZpbGwnKSkgZWwuc2V0QXR0cmlidXRlKCdmaWxsJywgY29sb3IpO1xuICAgICAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGUoJ3N0cm9rZScpKSBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRpdi5pbm5lckhUTUwpO1xuICB9XG4gIGdldEljb25VcmwoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY2RuSWNvblVSTH0ke2ZpbGVOYW1lfWA7XG4gIH1cbiAgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RHJvcGRvd24gPSAhdGhpcy5zaG93RHJvcGRvd247XG4gIH1cbn1cbiIsIjwhLS0gTVNNMTBKVUwyNSBmb3IgaWNvbiBzZWxlY3RvciBVSSAtLT5cbjxkaXYgY2xhc3M9XCJpY29uLXNlbGVjdG9yXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cbiAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZEljb25cIj5DaG9vc2UgSWNvbjwvc3Bhbj5cbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJY29uXCIgW2lubmVySFRNTF09XCJnZXRTYW5pdGl6ZWRTdmcoc2VsZWN0ZWRJY29uKVwiIGNsYXNzPVwic3ZnLWNvbnRhaW5lclwiPjwvZGl2PjxzcGFuXG4gICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+YXJyb3dfZHJvcF9kb3duPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWNvbi1zZWxlY3Rvci1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiICpuZ0lmPVwic2hvd0Ryb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYm94XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIiAoaW5wdXQpPVwiZmlsdGVySWNvbnMoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGljb25zLi4uXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkLWNvbnRhaW5lclwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIidjYWxjKCcgKyBoZWlnaHQgKyAnIC0gMTIwcHgpJ1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkSWNvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAgICAgIE5vIGljb25zIGZvdW5kIG1hdGNoaW5nIFwie3tzZWFyY2hRdWVyeX19XCJcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGljb24gb2YgZmlsdGVyZWRJY29uc1wiIGNsYXNzPVwiaWNvbi1vcHRpb25cIiBbbWF0VG9vbHRpcF09aWNvbi5uYW1lXG4gICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09dG9vbHRpcFBvc2l0aW9uIChjbGljayk9XCJzZWxlY3RJY29uKGljb24uZmlsZSk7dG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRTYW5pdGl6ZWRTdmcoaWNvbi5maWxlKVwiIGNsYXNzPVwic3ZnLWNvbnRhaW5lclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBUzdELE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsUUFBUSxDQUFLO0lBQ2IsVUFBVSxHQUFXLFNBQVMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN0RCxNQUFNLEdBQVcsT0FBTyxDQUFDLENBQUMsaUJBQWlCO0lBQzNDLGVBQWUsR0FBVyxPQUFPLENBQUMsQ0FBQywyQ0FBMkM7SUFDOUUsWUFBWSxDQUFTLENBQUMscUJBQXFCO0lBQzNDLFVBQVUsR0FBVyxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFFN0MsS0FBSyxHQUFXLEVBQUUsQ0FBQyxDQUFFLGNBQWM7SUFDbkMsU0FBUyxHQUFXLEVBQUUsQ0FBQyxDQUFFLG1CQUFtQjtJQUM1QyxXQUFXLEdBQVcsRUFBRSxDQUFDLENBQUUscUJBQXFCO0lBQ2hELFdBQVcsR0FBVyxFQUFFLENBQUMsQ0FBRSxlQUFlO0lBQzFDLFNBQVMsR0FBVyxFQUFFLENBQUMsQ0FBRSxtQkFBbUI7SUFDNUMsVUFBVSxHQUFXLEVBQUUsQ0FBQyxDQUFFLG9CQUFvQjtJQUM5QyxTQUFTLEdBQVcsRUFBRSxDQUFDLENBQUUsb0JBQW9CO0lBQzdDLFFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBRSxzQkFBc0I7SUFDbEQsSUFBSSxHQUE4QixNQUFNLENBQUMsQ0FBQyxpQkFBaUI7SUFDM0QsUUFBUSxHQUFRLEVBQUUsQ0FBQTtJQUNsQixPQUFPLEdBQVUsRUFBRSxDQUFDLENBQUMsb0JBQW9CO0lBRXhDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDLENBQUMsa0NBQWtDO0lBQ3ZGLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3pDLENBQUM7d0dBNUNVLHFCQUFxQjs0RkFBckIscUJBQXFCLDBoQkNibEMsNHdDQTZCTSxnc0REcEJNLFlBQVksK1BBQUUsV0FBVyw4bUJBQUUsZ0JBQWdCOzs0RkFJMUMscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG1CQUFtQixXQUVwQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsY0FFMUMsSUFBSTs4QkFHUCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy9NU00xMEpVTDI1XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdueHQtaWNvbi1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGVdLFxuICBzdHlsZVVybHM6IFsnLi9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSWNvblNlbGVjdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYWxsSWNvbnM6IFtdO1xuICBASW5wdXQoKSB0aGVtZUNvbG9yOiBzdHJpbmcgPSAnI2ZmMDAwMCc7IC8vIERlZmF1bHQgdGhlbWUgY29sb3JcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnMzAwcHgnOyAvLyBEZWZhdWx0IGhlaWdodFxuICBASW5wdXQoKSB0b29sdGlwUG9zaXRpb246IHN0cmluZyA9IFwiYWJvdmVcIjsgLy8gYWJvdmUsIGJlbG93LCBsZWZ0LCByaWdodCwgYmVmb3JlLCBhZnRlclxuICBASW5wdXQoKSBzZWxlY3RlZEljb246IHN0cmluZzsgLy8gU2VsZWN0ZWQgaWNvbiBuYW1lXG4gIEBJbnB1dCgpIGNkbkljb25VUkw6IHN0cmluZyA9IFwiXCI7IC8vIENETiBVUkwgZm9yIGljb25zXG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWxcbiAgQElucHV0KCkgbGFiZWxGb250OiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIGZvbnRcbiAgQElucHV0KCkgbGFiZWxXZWlnaHQ6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgV2VpZ2h0XG4gIEBJbnB1dCgpIGlucHV0V2VpZ2h0OiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IFdlaWdodFxuICBASW5wdXQoKSBsYWJlbFNpemU6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgU2l6ZVxuICBASW5wdXQoKSBsYWJlbENvbG9yOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIENvbG9yXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBDb2xvclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gUmVxdWlyZWQgdmFsaWRhdGlvblxuICBASW5wdXQoKSBtb2RlOiAndmlldycgfCAnZWRpdCcgfCAncHJpbnQnID0gJ2VkaXQnOyAvLyBOZXcgbW9kZSBpbnB1dFxuICBASW5wdXQoKSBxdWVzdGlvbjogYW55ID0ge31cbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTsgLy8gRm9yIHJhZGlvIGJ1dHRvbnNcblxuICBAT3V0cHV0KCkgaWNvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7IC8vIEV2ZW50IGVtaXR0ZXIgZm9yIHNlbGVjdGVkIGljb25cbiAgZmlsdGVyZWRJY29uczogYW55W10gPSBbXTtcbiAgc2VhcmNoUXVlcnkgPSAnJztcbiAgc2hvd0Ryb3Bkb3duID0gZmFsc2U7XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuYWxsSWNvbnMgIT0gbnVsbCAmJiB0aGlzLmFsbEljb25zLmxlbmd0aCA+IDAgPyBbLi4udGhpcy5hbGxJY29uc10gOiBbXTtcbiAgfVxuICBmaWx0ZXJJY29ucygpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoUXVlcnkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuYWxsSWNvbnMgIT0gbnVsbCAmJiB0aGlzLmFsbEljb25zLmxlbmd0aCA+IDAgPyBbLi4udGhpcy5hbGxJY29uc10gOiBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucz8uZmlsdGVyKChpY29uOiBhbnkpID0+XG4gICAgICBpY29uPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoUXVlcnk/LnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdEljb24oaWNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZEljb24gPSBpY29uO1xuICAgIHRoaXMuaWNvblNlbGVjdGVkLmVtaXQoaWNvbik7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEcm9wZG93biA9ICF0aGlzLnNob3dEcm9wZG93bjtcbiAgfVxufVxuIiwiPCEtLSBNU00xMEpVTDI1IGZvciBpY29uIHNlbGVjdG9yIFVJIC0tPlxuPGRpdiBjbGFzcz1cImljb24tc2VsZWN0b3JcIj5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWljb25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgIDxzcGFuICpuZ0lmPVwiIXNlbGVjdGVkSWNvblwiPkNob29zZSBJY29uPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEljb25cIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSWNvblwiIGNsYXNzPVwic3ZnLWNvbnRhaW5lclwiPjwvZGl2PjxzcGFuXG4gICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+YXJyb3dfZHJvcF9kb3duPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWNvbi1zZWxlY3Rvci1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiICpuZ0lmPVwic2hvd0Ryb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYm94XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIiAoaW5wdXQpPVwiZmlsdGVySWNvbnMoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGljb25zLi4uXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkLWNvbnRhaW5lclwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIidjYWxjKCcgKyBoZWlnaHQgKyAnIC0gMTIwcHgpJ1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkSWNvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAgICAgIE5vIGljb25zIGZvdW5kIG1hdGNoaW5nIFwie3tzZWFyY2hRdWVyeX19XCJcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGljb24gb2YgZmlsdGVyZWRJY29uc1wiIGNsYXNzPVwiaWNvbi1vcHRpb25cIiBbbWF0VG9vbHRpcF09aWNvbi5uYW1lXG4gICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09dG9vbHRpcFBvc2l0aW9uIChjbGljayk9XCJzZWxlY3RJY29uKGljb24uc3ZnKTt0b2dnbGVEcm9wZG93bigpXCI+XG4gICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImljb24uc3ZnXCIgY2xhc3M9XCJzdmctY29udGFpbmVyXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|