@rangertechnologies/ngnxt 2.1.237 → 2.1.238
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 +21 -9
- package/fesm2022/rangertechnologies-ngnxt.mjs +36 -25
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/icon-selector/icon-selector.component.d.ts +6 -2
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.238.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.237.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": "78a817f6-dirty",
|
|
6
|
+
"hash": "78a817f6",
|
|
7
7
|
"distance": null,
|
|
8
8
|
"tag": null,
|
|
9
9
|
"semver": null,
|
|
10
|
-
"suffix": "
|
|
10
|
+
"suffix": "78a817f6-dirty",
|
|
11
11
|
"semverString": null,
|
|
12
|
-
"version": "2.1.
|
|
12
|
+
"version": "2.1.238"
|
|
13
13
|
};
|
|
14
14
|
/* tslint:enable */
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2Vudmlyb25tZW50cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixNQUFNLEVBQUUsVUFBVTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixjQUFjLEVBQUUsSUFBSTtJQUNwQixTQUFTLEVBQUUsU0FBUztDQUN2QixDQUFDO0FBQ0YsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSU1QT1JUQU5UOiBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIE9SIENIRUNLSU4hXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSB7XG4gICAgXCJkaXJ0eVwiOiB0cnVlLFxuICAgIFwicmF3XCI6IFwiNzhhODE3ZjYtZGlydHlcIixcbiAgICBcImhhc2hcIjogXCI3OGE4MTdmNlwiLFxuICAgIFwiZGlzdGFuY2VcIjogbnVsbCxcbiAgICBcInRhZ1wiOiBudWxsLFxuICAgIFwic2VtdmVyXCI6IG51bGwsXG4gICAgXCJzdWZmaXhcIjogXCI3OGE4MTdmNi1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IG51bGwsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMi4xLjIzOFwiXG59O1xuLyogdHNsaW50OmVuYWJsZSAqL1xuIl19
|
|
@@ -4,10 +4,12 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/
|
|
8
|
-
import * as i2 from "@angular/
|
|
9
|
-
import * as i3 from "@angular/
|
|
7
|
+
import * as i1 from "@angular/platform-browser";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "@angular/material/tooltip";
|
|
10
11
|
export class IconSelectorComponent {
|
|
12
|
+
sanitizer;
|
|
11
13
|
allIcons;
|
|
12
14
|
themeColor = '#ff0000'; // Default theme color
|
|
13
15
|
height = '300px'; // Default height
|
|
@@ -29,6 +31,9 @@ export class IconSelectorComponent {
|
|
|
29
31
|
filteredIcons = [];
|
|
30
32
|
searchQuery = '';
|
|
31
33
|
showDropdown = false;
|
|
34
|
+
constructor(sanitizer) {
|
|
35
|
+
this.sanitizer = sanitizer;
|
|
36
|
+
}
|
|
32
37
|
ngOnInit() {
|
|
33
38
|
this.filteredIcons = this.allIcons != null && this.allIcons.length > 0 ? [...this.allIcons] : [];
|
|
34
39
|
}
|
|
@@ -40,19 +45,26 @@ export class IconSelectorComponent {
|
|
|
40
45
|
this.filteredIcons = this.allIcons?.filter((icon) => icon?.name?.toLowerCase().includes(this.searchQuery?.toLowerCase()));
|
|
41
46
|
}
|
|
42
47
|
selectIcon(icon) {
|
|
43
|
-
|
|
48
|
+
const iconSVG = this.getSVG(icon.svg);
|
|
49
|
+
this.selectedIcon = iconSVG;
|
|
44
50
|
this.iconSelected.emit(icon);
|
|
45
51
|
}
|
|
46
52
|
toggleDropdown() {
|
|
47
53
|
this.showDropdown = !this.showDropdown;
|
|
48
54
|
}
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
getSVG(icon) {
|
|
56
|
+
if (typeof icon === 'object') {
|
|
57
|
+
return this.sanitizer.bypassSecurityTrustHtml(icon.changingThisBreaksApplicationSecurity || '');
|
|
58
|
+
}
|
|
59
|
+
return this.sanitizer.bypassSecurityTrustHtml(icon);
|
|
60
|
+
}
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconSelectorComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
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>\n <div class=\"icon-option\">\n <div class=\"click-overlay\" (click)=\"selectIcon(icon); toggleDropdown()\"></div>\n <div [innerHTML]=\"getSVG(icon.svg)\" class=\"svg-container\"></div>\n </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(8,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(8,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}.click-overlay{position:absolute;inset:0;z-index:1}.icon-option{position:relative;cursor:pointer}.svg-container{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
51
63
|
}
|
|
52
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IconSelectorComponent, decorators: [{
|
|
53
65
|
type: Component,
|
|
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
|
|
55
|
-
}], propDecorators: { allIcons: [{
|
|
66
|
+
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>\n <div class=\"icon-option\">\n <div class=\"click-overlay\" (click)=\"selectIcon(icon); toggleDropdown()\"></div>\n <div [innerHTML]=\"getSVG(icon.svg)\" class=\"svg-container\"></div>\n </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(8,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(8,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}.click-overlay{position:absolute;inset:0;z-index:1}.icon-option{position:relative;cursor:pointer}.svg-container{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
67
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { allIcons: [{
|
|
56
68
|
type: Input
|
|
57
69
|
}], themeColor: [{
|
|
58
70
|
type: Input
|
|
@@ -89,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
89
101
|
}], iconSelected: [{
|
|
90
102
|
type: Output
|
|
91
103
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQVU3RCxNQUFNLE9BQU8scUJBQXFCO0lBeUJ0QjtJQXhCRCxRQUFRLENBQUs7SUFDYixVQUFVLEdBQVcsU0FBUyxDQUFDLENBQUMsc0JBQXNCO0lBQ3RELE1BQU0sR0FBVyxPQUFPLENBQUMsQ0FBQyxpQkFBaUI7SUFDM0MsZUFBZSxHQUFXLE9BQU8sQ0FBQyxDQUFDLDJDQUEyQztJQUM5RSxZQUFZLENBQU0sQ0FBQyxxQkFBcUI7SUFDeEMsVUFBVSxHQUFXLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtJQUU3QyxLQUFLLEdBQVcsRUFBRSxDQUFDLENBQUUsY0FBYztJQUNuQyxTQUFTLEdBQVcsRUFBRSxDQUFDLENBQUUsbUJBQW1CO0lBQzVDLFdBQVcsR0FBVyxFQUFFLENBQUMsQ0FBRSxxQkFBcUI7SUFDaEQsV0FBVyxHQUFXLEVBQUUsQ0FBQyxDQUFFLGVBQWU7SUFDMUMsU0FBUyxHQUFXLEVBQUUsQ0FBQyxDQUFFLG1CQUFtQjtJQUM1QyxVQUFVLEdBQVcsRUFBRSxDQUFDLENBQUUsb0JBQW9CO0lBQzlDLFNBQVMsR0FBVyxFQUFFLENBQUMsQ0FBRSxvQkFBb0I7SUFDN0MsUUFBUSxHQUFZLEtBQUssQ0FBQyxDQUFFLHNCQUFzQjtJQUNsRCxJQUFJLEdBQThCLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQjtJQUMzRCxRQUFRLEdBQVEsRUFBRSxDQUFBO0lBQ2xCLE9BQU8sR0FBVSxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFFeEMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUMsQ0FBQyxrQ0FBa0M7SUFDdkYsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDcEIsWUFDUyxTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQzlCLENBQUM7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUN2RCxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVM7UUFDWixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDM0MsSUFBSSxDQUFDLHFDQUFxQyxJQUFJLEVBQUUsQ0FDakQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzt3R0F6RFUscUJBQXFCOzRGQUFyQixxQkFBcUIsMGhCQ2RsQyw2M0NBZ0NNLHEyRER0Qk0sWUFBWSwrUEFBRSxXQUFXLDhtQkFBRSxnQkFBZ0I7OzRGQUkxQyxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsbUJBQW1CLFdBRXBCLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxjQUUxQyxJQUFJO2lGQUdQLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvL01TTTEwSlVMMjVcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnh0LWljb24tc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi1zZWxlY3Rvci5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEljb25TZWxlY3RvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFsbEljb25zOiBbXTtcbiAgQElucHV0KCkgdGhlbWVDb2xvcjogc3RyaW5nID0gJyNmZjAwMDAnOyAvLyBEZWZhdWx0IHRoZW1lIGNvbG9yXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzMwMHB4JzsgLy8gRGVmYXVsdCBoZWlnaHRcbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBzdHJpbmcgPSBcImFib3ZlXCI7IC8vIGFib3ZlLCBiZWxvdywgbGVmdCwgcmlnaHQsIGJlZm9yZSwgYWZ0ZXJcbiAgQElucHV0KCkgc2VsZWN0ZWRJY29uOiBhbnk7IC8vIFNlbGVjdGVkIGljb24gbmFtZVxuICBASW5wdXQoKSBjZG5JY29uVVJMOiBzdHJpbmcgPSBcIlwiOyAvLyBDRE4gVVJMIGZvciBpY29uc1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsXG4gIEBJbnB1dCgpIGxhYmVsRm9udDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBmb250XG4gIEBJbnB1dCgpIGxhYmVsV2VpZ2h0OiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIFdlaWdodFxuICBASW5wdXQoKSBpbnB1dFdlaWdodDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBXZWlnaHRcbiAgQElucHV0KCkgbGFiZWxTaXplOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIFNpemVcbiAgQElucHV0KCkgbGFiZWxDb2xvcjogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBDb2xvclxuICBASW5wdXQoKSBzaG93TGFiZWw6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgQ29sb3JcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIFJlcXVpcmVkIHZhbGlkYXRpb25cbiAgQElucHV0KCkgbW9kZTogJ3ZpZXcnIHwgJ2VkaXQnIHwgJ3ByaW50JyA9ICdlZGl0JzsgLy8gTmV3IG1vZGUgaW5wdXRcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9XG4gIEBJbnB1dCgpIG9wdGlvbnM6IGFueVtdID0gW107IC8vIEZvciByYWRpbyBidXR0b25zXG5cbiAgQE91dHB1dCgpIGljb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpOyAvLyBFdmVudCBlbWl0dGVyIGZvciBzZWxlY3RlZCBpY29uXG4gIGZpbHRlcmVkSWNvbnM6IGFueVtdID0gW107XG4gIHNlYXJjaFF1ZXJ5ID0gJyc7XG4gIHNob3dEcm9wZG93biA9IGZhbHNlO1xuICAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHt9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuYWxsSWNvbnMgIT0gbnVsbCAmJiB0aGlzLmFsbEljb25zLmxlbmd0aCA+IDAgPyBbLi4udGhpcy5hbGxJY29uc10gOiBbXTtcbiAgfVxuICBmaWx0ZXJJY29ucygpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoUXVlcnkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuYWxsSWNvbnMgIT0gbnVsbCAmJiB0aGlzLmFsbEljb25zLmxlbmd0aCA+IDAgPyBbLi4udGhpcy5hbGxJY29uc10gOiBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucz8uZmlsdGVyKChpY29uOiBhbnkpID0+XG4gICAgICBpY29uPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoUXVlcnk/LnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdEljb24oaWNvbjogYW55KSB7XG4gICAgY29uc3QgaWNvblNWRyA9IHRoaXMuZ2V0U1ZHKGljb24uc3ZnKTtcbiAgICB0aGlzLnNlbGVjdGVkSWNvbiA9IGljb25TVkc7XG4gICAgdGhpcy5pY29uU2VsZWN0ZWQuZW1pdChpY29uKTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gIXRoaXMuc2hvd0Ryb3Bkb3duO1xuICB9XG5cbiAgZ2V0U1ZHKGljb246IGFueSkge1xuICAgICAgaWYgKHR5cGVvZiBpY29uID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgICBpY29uLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHkgfHwgJydcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uKTtcbiAgfVxufVxuIiwiPCEtLSBNU00xMEpVTDI1IGZvciBpY29uIHNlbGVjdG9yIFVJIC0tPlxuPGRpdiBjbGFzcz1cImljb24tc2VsZWN0b3JcIj5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWljb25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgIDxzcGFuICpuZ0lmPVwiIXNlbGVjdGVkSWNvblwiPkNob29zZSBJY29uPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEljb25cIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSWNvblwiIGNsYXNzPVwic3ZnLWNvbnRhaW5lclwiPjwvZGl2PjxzcGFuXG4gICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+YXJyb3dfZHJvcF9kb3duPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWNvbi1zZWxlY3Rvci1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiICpuZ0lmPVwic2hvd0Ryb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYm94XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIiAoaW5wdXQpPVwiZmlsdGVySWNvbnMoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGljb25zLi4uXCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkLWNvbnRhaW5lclwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIidjYWxjKCcgKyBoZWlnaHQgKyAnIC0gMTIwcHgpJ1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkSWNvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAgICAgIE5vIGljb25zIGZvdW5kIG1hdGNoaW5nIFwie3tzZWFyY2hRdWVyeX19XCJcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ncmlkXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGljb24gb2YgZmlsdGVyZWRJY29uc1wiIGNsYXNzPVwiaWNvbi1vcHRpb25cIiBbbWF0VG9vbHRpcF09aWNvbi5uYW1lXG4gICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09dG9vbHRpcFBvc2l0aW9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLW9wdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrLW92ZXJsYXlcIiAoY2xpY2spPVwic2VsZWN0SWNvbihpY29uKTsgdG9nZ2xlRHJvcGRvd24oKVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldFNWRyhpY29uLnN2ZylcIiBjbGFzcz1cInN2Zy1jb250YWluZXJcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|