@c80/ui 1.0.33 → 1.0.35
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/lib/card-level/card-level.component.mjs +34 -5
- package/esm2022/lib/icon/icon.component.mjs +66 -71
- package/esm2022/lib/table/table-column-visibility.service.mjs +1 -1
- package/esm2022/lib/table/table-crud-state.service.mjs +97 -76
- package/esm2022/lib/table/table-data-converter.service.mjs +9 -13
- package/esm2022/lib/table/table-data-utils.service.mjs +4 -4
- package/esm2022/lib/table/table-selection.service.mjs +53 -66
- package/esm2022/lib/table/table.component.mjs +23 -6
- package/lib/card-level/card-level.component.d.ts +4 -0
- package/lib/icon/icon.component.d.ts +10 -3
- package/lib/table/table-crud-state.service.d.ts +25 -0
- package/lib/table/table-data-utils.service.d.ts +1 -1
- package/lib/table/table-selection.service.d.ts +14 -8
- package/lib/table/table.component.d.ts +10 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectorRef, inject, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -14,6 +14,7 @@ export class C80IconComponent {
|
|
|
14
14
|
size = 1;
|
|
15
15
|
/** Si es true, renderiza como <button> nativo, si es false solo como icono */
|
|
16
16
|
_button = false;
|
|
17
|
+
cdr = inject(ChangeDetectorRef);
|
|
17
18
|
set button(val) {
|
|
18
19
|
// Permite usar 'button' a secas, cualquier valor que no sea null/undefined/false es true
|
|
19
20
|
this._button =
|
|
@@ -33,6 +34,7 @@ export class C80IconComponent {
|
|
|
33
34
|
addIconTpl;
|
|
34
35
|
viewIconTpl;
|
|
35
36
|
getIconTpl;
|
|
37
|
+
settingsIconTpl;
|
|
36
38
|
defaultIconTpl;
|
|
37
39
|
scheduleIconTpl;
|
|
38
40
|
refreshIconTpl;
|
|
@@ -48,53 +50,43 @@ export class C80IconComponent {
|
|
|
48
50
|
uploadIconTpl;
|
|
49
51
|
pendingActionsIconTpl;
|
|
50
52
|
playCircleIconTpl;
|
|
53
|
+
iconMap = new Map();
|
|
54
|
+
ngAfterViewInit() {
|
|
55
|
+
this.initializeBasicIcons();
|
|
56
|
+
this.initializeStateIcons();
|
|
57
|
+
this.initializeUtilityIcons();
|
|
58
|
+
this.cdr.detectChanges();
|
|
59
|
+
}
|
|
60
|
+
initializeBasicIcons() {
|
|
61
|
+
this.iconMap.set('check', this.checkIconTpl);
|
|
62
|
+
this.iconMap.set('cancel', this.cancelIconTpl);
|
|
63
|
+
this.iconMap.set('edit', this.editIconTpl);
|
|
64
|
+
this.iconMap.set('delete', this.deleteIconTpl);
|
|
65
|
+
this.iconMap.set('add', this.addIconTpl);
|
|
66
|
+
this.iconMap.set('view', this.viewIconTpl);
|
|
67
|
+
this.iconMap.set('get', this.getIconTpl);
|
|
68
|
+
this.iconMap.set('settings', this.settingsIconTpl);
|
|
69
|
+
}
|
|
70
|
+
initializeStateIcons() {
|
|
71
|
+
this.iconMap.set('check_circle', this.checkCircleIconTpl);
|
|
72
|
+
this.iconMap.set('cancel_circle', this.cancelCircleIconTpl);
|
|
73
|
+
this.iconMap.set('error', this.errorIconTpl);
|
|
74
|
+
this.iconMap.set('toggle_on', this.toggleOnIconTpl);
|
|
75
|
+
this.iconMap.set('toggle_off', this.toggleOffIconTpl);
|
|
76
|
+
this.iconMap.set('pending_actions', this.pendingActionsIconTpl);
|
|
77
|
+
this.iconMap.set('play_circle', this.playCircleIconTpl);
|
|
78
|
+
}
|
|
79
|
+
initializeUtilityIcons() {
|
|
80
|
+
this.iconMap.set('schedule', this.scheduleIconTpl);
|
|
81
|
+
this.iconMap.set('refresh', this.refreshIconTpl);
|
|
82
|
+
this.iconMap.set('queue', this.queueIconTpl);
|
|
83
|
+
this.iconMap.set('arrow_up', this.arrowUpIconTpl);
|
|
84
|
+
this.iconMap.set('arrow_down', this.arrowDownIconTpl);
|
|
85
|
+
this.iconMap.set('search', this.searchIconTpl);
|
|
86
|
+
this.iconMap.set('upload', this.uploadIconTpl);
|
|
87
|
+
}
|
|
51
88
|
getIconTemplate() {
|
|
52
|
-
|
|
53
|
-
case 'check':
|
|
54
|
-
return this.checkIconTpl;
|
|
55
|
-
case 'cancel':
|
|
56
|
-
return this.cancelIconTpl;
|
|
57
|
-
case 'edit':
|
|
58
|
-
return this.editIconTpl;
|
|
59
|
-
case 'delete':
|
|
60
|
-
return this.deleteIconTpl;
|
|
61
|
-
case 'add':
|
|
62
|
-
return this.addIconTpl;
|
|
63
|
-
case 'view':
|
|
64
|
-
return this.viewIconTpl;
|
|
65
|
-
case 'get':
|
|
66
|
-
return this.getIconTpl;
|
|
67
|
-
case 'schedule':
|
|
68
|
-
return this.scheduleIconTpl;
|
|
69
|
-
case 'refresh':
|
|
70
|
-
return this.refreshIconTpl;
|
|
71
|
-
case 'check_circle':
|
|
72
|
-
return this.checkCircleIconTpl;
|
|
73
|
-
case 'cancel_circle':
|
|
74
|
-
return this.cancelCircleIconTpl;
|
|
75
|
-
case 'error':
|
|
76
|
-
return this.errorIconTpl;
|
|
77
|
-
case 'queue':
|
|
78
|
-
return this.queueIconTpl;
|
|
79
|
-
case 'arrow_up':
|
|
80
|
-
return this.arrowUpIconTpl;
|
|
81
|
-
case 'arrow_down':
|
|
82
|
-
return this.arrowDownIconTpl;
|
|
83
|
-
case 'toggle_on':
|
|
84
|
-
return this.toggleOnIconTpl;
|
|
85
|
-
case 'toggle_off':
|
|
86
|
-
return this.toggleOffIconTpl;
|
|
87
|
-
case 'search':
|
|
88
|
-
return this.searchIconTpl;
|
|
89
|
-
case 'upload':
|
|
90
|
-
return this.uploadIconTpl;
|
|
91
|
-
case 'pending_actions':
|
|
92
|
-
return this.pendingActionsIconTpl;
|
|
93
|
-
case 'play_circle':
|
|
94
|
-
return this.playCircleIconTpl;
|
|
95
|
-
default:
|
|
96
|
-
return this.defaultIconTpl;
|
|
97
|
-
}
|
|
89
|
+
return this.iconMap.get(this.icon) ?? this.defaultIconTpl;
|
|
98
90
|
}
|
|
99
91
|
get iconColor() {
|
|
100
92
|
if (this.disabled) {
|
|
@@ -130,11 +122,11 @@ export class C80IconComponent {
|
|
|
130
122
|
}
|
|
131
123
|
}
|
|
132
124
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: "icon", color: "color", customColor: "customColor", disabled: "disabled", size: "size", button: "button", type: "type" }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "checkIconTpl", first: true, predicate: ["checkIcon"], descendants: true, static: true }, { propertyName: "cancelIconTpl", first: true, predicate: ["cancelIcon"], descendants: true, static: true }, { propertyName: "editIconTpl", first: true, predicate: ["editIcon"], descendants: true, static: true }, { propertyName: "deleteIconTpl", first: true, predicate: ["deleteIcon"], descendants: true, static: true }, { propertyName: "addIconTpl", first: true, predicate: ["addIcon"], descendants: true, static: true }, { propertyName: "viewIconTpl", first: true, predicate: ["viewIcon"], descendants: true, static: true }, { propertyName: "getIconTpl", first: true, predicate: ["getIcon"], descendants: true, static: true }, { propertyName: "defaultIconTpl", first: true, predicate: ["defaultIcon"], descendants: true, static: true }, { propertyName: "scheduleIconTpl", first: true, predicate: ["scheduleIcon"], descendants: true, static: true }, { propertyName: "refreshIconTpl", first: true, predicate: ["refreshIcon"], descendants: true, static: true }, { propertyName: "checkCircleIconTpl", first: true, predicate: ["checkCircleIcon"], descendants: true, static: true }, { propertyName: "cancelCircleIconTpl", first: true, predicate: ["cancelCircleIcon"], descendants: true, static: true }, { propertyName: "errorIconTpl", first: true, predicate: ["errorIcon"], descendants: true, static: true }, { propertyName: "queueIconTpl", first: true, predicate: ["queueIcon"], descendants: true, static: true }, { propertyName: "arrowUpIconTpl", first: true, predicate: ["arrowUpIcon"], descendants: true, static: true }, { propertyName: "arrowDownIconTpl", first: true, predicate: ["arrowDownIcon"], descendants: true, static: true }, { propertyName: "toggleOnIconTpl", first: true, predicate: ["toggleOnIcon"], descendants: true, static: true }, { propertyName: "toggleOffIconTpl", first: true, predicate: ["toggleOffIcon"], descendants: true, static: true }, { propertyName: "searchIconTpl", first: true, predicate: ["searchIcon"], descendants: true, static: true }, { propertyName: "uploadIconTpl", first: true, predicate: ["uploadIcon"], descendants: true, static: true }, { propertyName: "pendingActionsIconTpl", first: true, predicate: ["pendingActionsIcon"], descendants: true, static: true }, { propertyName: "playCircleIconTpl", first: true, predicate: ["playCircleIcon"], descendants: true, static: true }], ngImport: i0, template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
125
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: "icon", color: "color", customColor: "customColor", disabled: "disabled", size: "size", button: "button", type: "type" }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "checkIconTpl", first: true, predicate: ["checkIcon"], descendants: true }, { propertyName: "cancelIconTpl", first: true, predicate: ["cancelIcon"], descendants: true }, { propertyName: "editIconTpl", first: true, predicate: ["editIcon"], descendants: true }, { propertyName: "deleteIconTpl", first: true, predicate: ["deleteIcon"], descendants: true }, { propertyName: "addIconTpl", first: true, predicate: ["addIcon"], descendants: true }, { propertyName: "viewIconTpl", first: true, predicate: ["viewIcon"], descendants: true }, { propertyName: "getIconTpl", first: true, predicate: ["getIcon"], descendants: true }, { propertyName: "settingsIconTpl", first: true, predicate: ["settingsIcon"], descendants: true }, { propertyName: "defaultIconTpl", first: true, predicate: ["defaultIcon"], descendants: true, static: true }, { propertyName: "scheduleIconTpl", first: true, predicate: ["scheduleIcon"], descendants: true }, { propertyName: "refreshIconTpl", first: true, predicate: ["refreshIcon"], descendants: true }, { propertyName: "checkCircleIconTpl", first: true, predicate: ["checkCircleIcon"], descendants: true }, { propertyName: "cancelCircleIconTpl", first: true, predicate: ["cancelCircleIcon"], descendants: true }, { propertyName: "errorIconTpl", first: true, predicate: ["errorIcon"], descendants: true }, { propertyName: "queueIconTpl", first: true, predicate: ["queueIcon"], descendants: true }, { propertyName: "arrowUpIconTpl", first: true, predicate: ["arrowUpIcon"], descendants: true }, { propertyName: "arrowDownIconTpl", first: true, predicate: ["arrowDownIcon"], descendants: true }, { propertyName: "toggleOnIconTpl", first: true, predicate: ["toggleOnIcon"], descendants: true }, { propertyName: "toggleOffIconTpl", first: true, predicate: ["toggleOffIcon"], descendants: true }, { propertyName: "searchIconTpl", first: true, predicate: ["searchIcon"], descendants: true }, { propertyName: "uploadIconTpl", first: true, predicate: ["uploadIcon"], descendants: true }, { propertyName: "pendingActionsIconTpl", first: true, predicate: ["pendingActionsIcon"], descendants: true }, { propertyName: "playCircleIconTpl", first: true, predicate: ["playCircleIcon"], descendants: true }], ngImport: i0, template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settingsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
134
126
|
}
|
|
135
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, decorators: [{
|
|
136
128
|
type: Component,
|
|
137
|
-
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"] }]
|
|
129
|
+
args: [{ selector: 'c80-icon', standalone: true, imports: [CommonModule], template: "@if (button) {\r\n<button type=\"{{type}}\" [disabled]=\"disabled\" class=\"icon-button\" [style.width.px]=\"iconSize + 8\" [style.height.px]=\"iconSize + 8\" (click)=\"onButtonClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</button>\r\n} @else {\r\n<span class=\"icon-span\" [style.width.px]=\"iconSize\" [style.height.px]=\"iconSize\">\r\n <ng-container *ngTemplateOutlet=\"getIconTemplate()\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #checkIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M5 13l4 4L19 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 6l12 12M6 18L18 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #editIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"5\" y=\"19\" width=\"14\" height=\"2\" rx=\"1\" [attr.fill]=\"iconColor\" />\r\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #deleteIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #addIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5v14M5 12h14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #viewIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #getIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"6\" cy=\"6\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <circle cx=\"18\" cy=\"18\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m8.5 8.5 7 7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <path d=\"m13 11 2 2-2 2\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #settingsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #scheduleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #refreshIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 3v5h-5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M3 21v-5h5\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #checkCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m9 12 2 2 4-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #cancelCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <path d=\"m15 9-6 6m0-6 6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #errorIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" />\r\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #queueIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M3 12h18m-9-9v18\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <rect x=\"2\" y=\"15\" width=\"20\" height=\"6\" rx=\"1\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowUpIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m18 15-6-6-6 6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #arrowDownIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"m6 9 6 6 6-6\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOnIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.fill]=\"iconColor\" />\r\n <circle cx=\"16\" cy=\"12\" r=\"3\" fill=\"white\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #toggleOffIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <rect x=\"1\" y=\"5\" width=\"22\" height=\"14\" rx=\"7\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n <circle cx=\"8\" cy=\"12\" r=\"3\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #searchIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"m21 21-4.35-4.35\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #uploadIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"7,10 12,5 17,10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"15\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #pendingActionsIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polyline points=\"12,6 12,12 16,14\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 2v4M16 2v4\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #playCircleIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" [attr.stroke]=\"iconColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <polygon points=\"10,8 16,12 10,16\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>\r\n<ng-template #defaultIcon>\r\n <svg [attr.width]=\"iconSize\" [attr.height]=\"iconSize\" viewBox=\"0 0 24 24\" fill=\"none\" [style.opacity]=\"iconOpacity\">\r\n <circle cx=\"12\" cy=\"12\" r=\"2\" [attr.fill]=\"iconColor\" />\r\n </svg>\r\n</ng-template>", styles: [":host .icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;background:transparent;border-radius:50%;min-width:0;min-height:0;padding:4px;cursor:pointer;transition:background .2s;box-sizing:border-box}:host .icon-button:focus-visible{outline:2px solid #1976d2;outline-offset:2px}:host .icon-button:hover:not(:disabled){background:#1976d214}:host .icon-button:active:not(:disabled){background:#1976d229}:host .icon-button:disabled{opacity:.5;cursor:default;background:transparent}:host .icon-span,:host .icon-button{margin-left:4px;margin-right:4px}\n"] }]
|
|
138
130
|
}], propDecorators: { icon: [{
|
|
139
131
|
type: Input
|
|
140
132
|
}], color: [{
|
|
@@ -153,69 +145,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
153
145
|
type: Output
|
|
154
146
|
}], checkIconTpl: [{
|
|
155
147
|
type: ViewChild,
|
|
156
|
-
args: ['checkIcon'
|
|
148
|
+
args: ['checkIcon']
|
|
157
149
|
}], cancelIconTpl: [{
|
|
158
150
|
type: ViewChild,
|
|
159
|
-
args: ['cancelIcon'
|
|
151
|
+
args: ['cancelIcon']
|
|
160
152
|
}], editIconTpl: [{
|
|
161
153
|
type: ViewChild,
|
|
162
|
-
args: ['editIcon'
|
|
154
|
+
args: ['editIcon']
|
|
163
155
|
}], deleteIconTpl: [{
|
|
164
156
|
type: ViewChild,
|
|
165
|
-
args: ['deleteIcon'
|
|
157
|
+
args: ['deleteIcon']
|
|
166
158
|
}], addIconTpl: [{
|
|
167
159
|
type: ViewChild,
|
|
168
|
-
args: ['addIcon'
|
|
160
|
+
args: ['addIcon']
|
|
169
161
|
}], viewIconTpl: [{
|
|
170
162
|
type: ViewChild,
|
|
171
|
-
args: ['viewIcon'
|
|
163
|
+
args: ['viewIcon']
|
|
172
164
|
}], getIconTpl: [{
|
|
173
165
|
type: ViewChild,
|
|
174
|
-
args: ['getIcon'
|
|
166
|
+
args: ['getIcon']
|
|
167
|
+
}], settingsIconTpl: [{
|
|
168
|
+
type: ViewChild,
|
|
169
|
+
args: ['settingsIcon']
|
|
175
170
|
}], defaultIconTpl: [{
|
|
176
171
|
type: ViewChild,
|
|
177
172
|
args: ['defaultIcon', { static: true }]
|
|
178
173
|
}], scheduleIconTpl: [{
|
|
179
174
|
type: ViewChild,
|
|
180
|
-
args: ['scheduleIcon'
|
|
175
|
+
args: ['scheduleIcon']
|
|
181
176
|
}], refreshIconTpl: [{
|
|
182
177
|
type: ViewChild,
|
|
183
|
-
args: ['refreshIcon'
|
|
178
|
+
args: ['refreshIcon']
|
|
184
179
|
}], checkCircleIconTpl: [{
|
|
185
180
|
type: ViewChild,
|
|
186
|
-
args: ['checkCircleIcon'
|
|
181
|
+
args: ['checkCircleIcon']
|
|
187
182
|
}], cancelCircleIconTpl: [{
|
|
188
183
|
type: ViewChild,
|
|
189
|
-
args: ['cancelCircleIcon'
|
|
184
|
+
args: ['cancelCircleIcon']
|
|
190
185
|
}], errorIconTpl: [{
|
|
191
186
|
type: ViewChild,
|
|
192
|
-
args: ['errorIcon'
|
|
187
|
+
args: ['errorIcon']
|
|
193
188
|
}], queueIconTpl: [{
|
|
194
189
|
type: ViewChild,
|
|
195
|
-
args: ['queueIcon'
|
|
190
|
+
args: ['queueIcon']
|
|
196
191
|
}], arrowUpIconTpl: [{
|
|
197
192
|
type: ViewChild,
|
|
198
|
-
args: ['arrowUpIcon'
|
|
193
|
+
args: ['arrowUpIcon']
|
|
199
194
|
}], arrowDownIconTpl: [{
|
|
200
195
|
type: ViewChild,
|
|
201
|
-
args: ['arrowDownIcon'
|
|
196
|
+
args: ['arrowDownIcon']
|
|
202
197
|
}], toggleOnIconTpl: [{
|
|
203
198
|
type: ViewChild,
|
|
204
|
-
args: ['toggleOnIcon'
|
|
199
|
+
args: ['toggleOnIcon']
|
|
205
200
|
}], toggleOffIconTpl: [{
|
|
206
201
|
type: ViewChild,
|
|
207
|
-
args: ['toggleOffIcon'
|
|
202
|
+
args: ['toggleOffIcon']
|
|
208
203
|
}], searchIconTpl: [{
|
|
209
204
|
type: ViewChild,
|
|
210
|
-
args: ['searchIcon'
|
|
205
|
+
args: ['searchIcon']
|
|
211
206
|
}], uploadIconTpl: [{
|
|
212
207
|
type: ViewChild,
|
|
213
|
-
args: ['uploadIcon'
|
|
208
|
+
args: ['uploadIcon']
|
|
214
209
|
}], pendingActionsIconTpl: [{
|
|
215
210
|
type: ViewChild,
|
|
216
|
-
args: ['pendingActionsIcon'
|
|
211
|
+
args: ['pendingActionsIcon']
|
|
217
212
|
}], playCircleIconTpl: [{
|
|
218
213
|
type: ViewChild,
|
|
219
|
-
args: ['playCircleIcon'
|
|
214
|
+
args: ['playCircleIcon']
|
|
220
215
|
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFrQy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0Isb0NBQW9DO0lBQ3BDLElBQUksUUFBUTtRQUNWLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUNRLElBQUksR0FBUyxPQUFPLENBQUM7SUFDckIsS0FBSyxHQUFVLFNBQVMsQ0FBQztJQUN6QixXQUFXLENBQVUsQ0FBQywrQkFBK0I7SUFDckQsUUFBUSxHQUFhLEtBQUssQ0FBQztJQUMzQixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLDhFQUE4RTtJQUN0RSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLElBQ0ksTUFBTSxDQUFDLEdBQXdDO1FBQ2pELHlGQUF5RjtRQUN6RixJQUFJLENBQUMsT0FBTztZQUNWLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLENBQUM7SUFDMUUsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsaURBQWlEO0lBQ3hDLElBQUksR0FBa0MsUUFBUSxDQUFDO0lBQ3hELDhDQUE4QztJQUNwQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVMs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RSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0MsZUFBZTtzQkFBM0QsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNELGFBQWE7c0JBQXZELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRSxhQUFhO3NCQUF2RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1UscUJBQXFCO3NCQUF2RSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRixpQkFBaUI7c0JBQS9ELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgdHlwZSBJY29uID1cclxuICB8ICdjaGVjaydcclxuICB8ICdjYW5jZWwnXHJcbiAgfCAnZWRpdCdcclxuICB8ICdkZWxldGUnXHJcbiAgfCAnYWRkJ1xyXG4gIHwgJ3ZpZXcnXHJcbiAgfCAnZ2V0J1xyXG4gIHwgJ3NjaGVkdWxlJ1xyXG4gIHwgJ3JlZnJlc2gnXHJcbiAgfCAnY2hlY2tfY2lyY2xlJ1xyXG4gIHwgJ2NhbmNlbF9jaXJjbGUnXHJcbiAgfCAnZXJyb3InXHJcbiAgfCAncXVldWUnXHJcbiAgfCAnYXJyb3dfdXAnXHJcbiAgfCAnYXJyb3dfZG93bidcclxuICB8ICd0b2dnbGVfb24nXHJcbiAgfCAndG9nZ2xlX29mZidcclxuICB8ICdzZWFyY2gnXHJcbiAgfCAndXBsb2FkJ1xyXG4gIHwgJ3BlbmRpbmdfYWN0aW9ucydcclxuICB8ICdwbGF5X2NpcmNsZSc7XHJcbmV4cG9ydCB0eXBlIENvbG9yID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnd2FybicgfCAnc3VjY2Vzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnYzgwLWljb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEM4MEljb25Db21wb25lbnQge1xyXG4gIC8qKiBUYW1hw7FvIGJhc2UgZGVsIGljb25vIChlbiBweCkgKi9cclxuICBnZXQgaWNvblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyNCAqIHRoaXMuc2l6ZTtcclxuICB9XHJcbiAgQElucHV0KCkgaWNvbjogSWNvbiA9ICdjaGVjayc7XHJcbiAgQElucHV0KCkgY29sb3I6IENvbG9yID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbG9yPzogc3RyaW5nOyAvLyBDb2xvciBwZXJzb25hbGl6YWRvIG9wY2lvbmFsXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZSA9IDE7XHJcbiAgLyoqIFNpIGVzIHRydWUsIHJlbmRlcml6YSBjb21vIDxidXR0b24+IG5hdGl2bywgc2kgZXMgZmFsc2Ugc29sbyBjb21vIGljb25vICovXHJcbiAgcHJpdmF0ZSBfYnV0dG9uID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBzZXQgYnV0dG9uKHZhbDogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIC8vIFBlcm1pdGUgdXNhciAnYnV0dG9uJyBhIHNlY2FzLCBjdWFscXVpZXIgdmFsb3IgcXVlIG5vIHNlYSBudWxsL3VuZGVmaW5lZC9mYWxzZSBlcyB0cnVlXHJcbiAgICB0aGlzLl9idXR0b24gPVxyXG4gICAgICB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIGdldCBidXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uO1xyXG4gIH1cclxuICAvKiogVGlwbyBkZSBib3TDs24gbmF0aXZvIChzb2xvIHNpIGJ1dHRvbj10cnVlKSAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnID0gJ2J1dHRvbic7XHJcbiAgLyoqIE91dHB1dCBwYXJhIGNsaWNrIChzb2xvIHNpIGJ1dHRvbj10cnVlKSAqL1xyXG4gIEBPdXRwdXQoKSBpY29uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjaGVja0ljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBjaGVja0ljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdjYW5jZWxJY29uJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjYW5jZWxJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZWRpdEljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0SWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRlbGV0ZUljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdhZGRJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgYWRkSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgdmlld0ljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdnZXRJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgZ2V0SWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRJY29uJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkZWZhdWx0SWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ3NjaGVkdWxlSWNvbicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2NoZWR1bGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncmVmcmVzaEljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHJlZnJlc2hJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tDaXJjbGVJY29uJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjaGVja0NpcmNsZUljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdjYW5jZWxDaXJjbGVJY29uJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjYW5jZWxDaXJjbGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZXJyb3JJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgZXJyb3JJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncXVldWVJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgcXVldWVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnYXJyb3dVcEljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBhcnJvd1VwSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Fycm93RG93bkljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBhcnJvd0Rvd25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT25JY29uJywgeyBzdGF0aWM6IHRydWUgfSkgdG9nZ2xlT25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT2ZmSWNvbicsIHsgc3RhdGljOiB0cnVlIH0pIHRvZ2dsZU9mZkljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgc2VhcmNoSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZEljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSB1cGxvYWRJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGVuZGluZ0FjdGlvbnNJY29uJywgeyBzdGF0aWM6IHRydWUgfSkgcGVuZGluZ0FjdGlvbnNJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGxheUNpcmNsZUljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBwbGF5Q2lyY2xlSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuICBnZXRJY29uVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xyXG4gICAgc3dpdGNoICh0aGlzLmljb24pIHtcclxuICAgICAgY2FzZSAnY2hlY2snOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrSWNvblRwbDtcclxuICAgICAgY2FzZSAnY2FuY2VsJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jYW5jZWxJY29uVHBsO1xyXG4gICAgICBjYXNlICdlZGl0JzpcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0SWNvblRwbDtcclxuICAgICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVJY29uVHBsO1xyXG4gICAgICBjYXNlICdhZGQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZEljb25UcGw7XHJcbiAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJY29uVHBsO1xyXG4gICAgICBjYXNlICdnZXQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEljb25UcGw7XHJcbiAgICAgIGNhc2UgJ3NjaGVkdWxlJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZUljb25UcGw7XHJcbiAgICAgIGNhc2UgJ3JlZnJlc2gnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hJY29uVHBsO1xyXG4gICAgICBjYXNlICdjaGVja19jaXJjbGUnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ2lyY2xlSWNvblRwbDtcclxuICAgICAgY2FzZSAnY2FuY2VsX2NpcmNsZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuY2VsQ2lyY2xlSWNvblRwbDtcclxuICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9ySWNvblRwbDtcclxuICAgICAgY2FzZSAncXVldWUnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlSWNvblRwbDtcclxuICAgICAgY2FzZSAnYXJyb3dfdXAnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmFycm93VXBJY29uVHBsO1xyXG4gICAgICBjYXNlICdhcnJvd19kb3duJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5hcnJvd0Rvd25JY29uVHBsO1xyXG4gICAgICBjYXNlICd0b2dnbGVfb24nOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZU9uSWNvblRwbDtcclxuICAgICAgY2FzZSAndG9nZ2xlX29mZic6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlT2ZmSWNvblRwbDtcclxuICAgICAgY2FzZSAnc2VhcmNoJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hJY29uVHBsO1xyXG4gICAgICBjYXNlICd1cGxvYWQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEljb25UcGw7XHJcbiAgICAgIGNhc2UgJ3BlbmRpbmdfYWN0aW9ucyc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0FjdGlvbnNJY29uVHBsO1xyXG4gICAgICBjYXNlICdwbGF5X2NpcmNsZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheUNpcmNsZUljb25UcGw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEljb25UcGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaWNvbkNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gJyNiZGJkYmQnOyAvLyBncmlzIGRlc2hhYmlsaXRhZG9cclxuICAgIH1cclxuXHJcbiAgICAvLyBTaSBoYXkgdW4gY29sb3IgcGVyc29uYWxpemFkbywgdXNhcmxvIHNpZW1wcmUgKGV4Y2VwdG8gc2kgZXN0w6EgZGlzYWJsZWQpXHJcbiAgICBpZiAodGhpcy5jdXN0b21Db2xvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXN0b21Db2xvcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYWxldGEgc2ltcGxpZmljYWRhIC0gc29sbyBjb2xvcmVzIGJhc2VcclxuICAgIGNvbnN0IGJhc2VDb2xvcnM6IFJlY29yZDxDb2xvciwgc3RyaW5nPiA9IHtcclxuICAgICAgcHJpbWFyeTogJyMwMDM3NzVjOCcsXHJcbiAgICAgIHNlY29uZGFyeTogJyM2YjcyODAnLFxyXG4gICAgICB3YXJuOiAnI2U1MzkzNScsXHJcbiAgICAgIHN1Y2Nlc3M6ICcjNGNhZjUwJyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGJhc2VDb2xvcnNbdGhpcy5jb2xvcl0gPz8gJyMyMjInO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGljb25PcGFjaXR5KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gMC41O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFwbGljYXIgb3BhY2l0eSAwLjcgY3VhbmRvIGVzIGNvbG9yIHNlY29uZGFyeSBvIHdhcm4gKHNpbiBjdXN0b21Db2xvcilcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuY29sb3IgPT09ICdzZWNvbmRhcnknIHx8IHRoaXMuY29sb3IgPT09ICd3YXJuJykgJiZcclxuICAgICAgIXRoaXMuY3VzdG9tQ29sb3JcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gMC43O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAxO1xyXG4gIH0gLy8gSGFuZGxlciBwYXJhIGNsaWNrIGVuIG1vZG8gYnV0dG9uXHJcbiAgb25CdXR0b25DbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmljb25DbGljay5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGlmIChidXR0b24pIHtcclxuPGJ1dHRvbiB0eXBlPVwie3t0eXBlfX1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cImljb24tYnV0dG9uXCIgW3N0eWxlLndpZHRoLnB4XT1cImljb25TaXplICsgOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUgKyA4XCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRJY29uVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxyXG48L2J1dHRvbj5cclxufSBAZWxzZSB7XHJcbjxzcGFuIGNsYXNzPVwiaWNvbi1zcGFuXCIgW3N0eWxlLndpZHRoLnB4XT1cImljb25TaXplXCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRJY29uVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxyXG48L3NwYW4+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2hlY2tJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk01IDEzbDQgNEwxOSA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2NhbmNlbEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTYgNmwxMiAxMk02IDE4TDE4IDZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2VkaXRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHJlY3QgeD1cIjVcIiB5PVwiMTlcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTQgMTIuNS0xMi41elwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWxldGVJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk02IDE5YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjYWRkSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMTIgNXYxNE01IDEyaDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN2aWV3SWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMTIgNUM3IDUgMi43MyA4LjExIDEgMTJjMS43MyAzLjg5IDYgNyAxMSA3czkuMjctMy4xMSAxMS03Yy0xLjczLTMuODktNi03LTExLTd6XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2dldEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjE4XCIgY3k9XCIxOFwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm04LjUgOC41IDcgN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTEzIDExIDIgMi0yIDJcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NjaGVkdWxlSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTIsNiAxMiwxMiAxNiwxNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNyZWZyZXNoSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMjEgM3Y1aC01XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMyAyMXYtNWg1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2NoZWNrQ2lyY2xlSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTkgMTIgMiAyIDQtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjYW5jZWxDaXJjbGVJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtMTUgOS02IDZtMC02IDYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNlcnJvckljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPGxpbmUgeDE9XCIxNVwiIHkxPVwiOVwiIHgyPVwiOVwiIHkyPVwiMTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgPGxpbmUgeDE9XCI5XCIgeTE9XCI5XCIgeDI9XCIxNVwiIHkyPVwiMTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3F1ZXVlSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMyAxMmgxOG0tOS05djE4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxyZWN0IHg9XCIyXCIgeT1cIjNcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiNlwiIHJ4PVwiMVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPHJlY3QgeD1cIjJcIiB5PVwiMTVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiNlwiIHJ4PVwiMVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Fycm93VXBJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIm0xOCAxNS02LTYtNiA2XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Fycm93RG93bkljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwibTYgOSA2IDYgNi02XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RvZ2dsZU9uSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxyZWN0IHg9XCIxXCIgeT1cIjVcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjdcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjEyXCIgcj1cIjNcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RvZ2dsZU9mZkljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cmVjdCB4PVwiMVwiIHk9XCI1XCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjE0XCIgcng9XCI3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiMTJcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NlYXJjaEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjhcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTIxIDIxLTQuMzUtNC4zNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN1cGxvYWRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjcsMTAgMTIsNSAxNywxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjVcIiB4Mj1cIjEyXCIgeTI9XCIxNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcGVuZGluZ0FjdGlvbnNJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCIxMiw2IDEyLDEyIDE2LDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk04IDJ2NE0xNiAydjRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcGxheUNpcmNsZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlnb24gcG9pbnRzPVwiMTAsOCAxNiwxMiAxMCwxNlwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMlwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQW1DL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixvQ0FBb0M7SUFDcEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ1EsSUFBSSxHQUFTLE9BQU8sQ0FBQztJQUNyQixLQUFLLEdBQVUsU0FBUyxDQUFDO0lBQ3pCLFdBQVcsQ0FBVSxDQUFDLCtCQUErQjtJQUNyRCxRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsOEVBQThFO0lBQ3RFLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFUCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsSUFDSSxNQUFNLENBQUMsR0FBd0M7UUFDakQseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxPQUFPO1lBQ1YsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQztJQUMxRSxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxpREFBaUQ7SUFDeEMs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akMsU0FBUzt1QkFBQyxVQUFVO2dCQUNJLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRCxVQUFVO3NCQUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0csV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNDLFVBQVU7c0JBQS9CLFNBQVM7dUJBQUMsU0FBUztnQkFDTyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ21CLGNBQWM7c0JBQXpELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZixlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0MsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQUNNLGtCQUFrQjtzQkFBL0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0csbUJBQW1CO3NCQUFqRCxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDTCxZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0UsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLGNBQWM7c0JBQXZDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSSxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZTtnQkFDQyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0QsYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDVSxxQkFBcUI7c0JBQXJELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNGLGlCQUFpQjtzQkFBN0MsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCB0eXBlIEljb24gPVxyXG4gIHwgJ2NoZWNrJ1xyXG4gIHwgJ2NhbmNlbCdcclxuICB8ICdlZGl0J1xyXG4gIHwgJ2RlbGV0ZSdcclxuICB8ICdhZGQnXHJcbiAgfCAndmlldydcclxuICB8ICdnZXQnXHJcbiAgfCAnc2V0dGluZ3MnXHJcbiAgfCAnc2NoZWR1bGUnXHJcbiAgfCAncmVmcmVzaCdcclxuICB8ICdjaGVja19jaXJjbGUnXHJcbiAgfCAnY2FuY2VsX2NpcmNsZSdcclxuICB8ICdlcnJvcidcclxuICB8ICdxdWV1ZSdcclxuICB8ICdhcnJvd191cCdcclxuICB8ICdhcnJvd19kb3duJ1xyXG4gIHwgJ3RvZ2dsZV9vbidcclxuICB8ICd0b2dnbGVfb2ZmJ1xyXG4gIHwgJ3NlYXJjaCdcclxuICB8ICd1cGxvYWQnXHJcbiAgfCAncGVuZGluZ19hY3Rpb25zJ1xyXG4gIHwgJ3BsYXlfY2lyY2xlJztcclxuZXhwb3J0IHR5cGUgQ29sb3IgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdjODAtaWNvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQzgwSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKiBUYW1hw7FvIGJhc2UgZGVsIGljb25vIChlbiBweCkgKi9cclxuICBnZXQgaWNvblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyNCAqIHRoaXMuc2l6ZTtcclxuICB9XHJcbiAgQElucHV0KCkgaWNvbjogSWNvbiA9ICdjaGVjayc7XHJcbiAgQElucHV0KCkgY29sb3I6IENvbG9yID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbG9yPzogc3RyaW5nOyAvLyBDb2xvciBwZXJzb25hbGl6YWRvIG9wY2lvbmFsXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZSA9IDE7XHJcbiAgLyoqIFNpIGVzIHRydWUsIHJlbmRlcml6YSBjb21vIDxidXR0b24+IG5hdGl2bywgc2kgZXMgZmFsc2Ugc29sbyBjb21vIGljb25vICovXHJcbiAgcHJpdmF0ZSBfYnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBidXR0b24odmFsOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gUGVybWl0ZSB1c2FyICdidXR0b24nIGEgc2VjYXMsIGN1YWxxdWllciB2YWxvciBxdWUgbm8gc2VhIG51bGwvdW5kZWZpbmVkL2ZhbHNlIGVzIHRydWVcclxuICAgIHRoaXMuX2J1dHRvbiA9XHJcbiAgICAgIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IGZhbHNlICYmIHZhbCAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgZ2V0IGJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9idXR0b247XHJcbiAgfVxyXG4gIC8qKiBUaXBvIGRlIGJvdMOzbiBuYXRpdm8gKHNvbG8gc2kgYnV0dG9uPXRydWUpICovXHJcbiAgQElucHV0KCkgdHlwZTogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCcgPSAnYnV0dG9uJztcclxuICAvKiogT3V0cHV0IHBhcmEgY2xpY2sgKHNvbG8gc2kgYnV0dG9uPXRydWUpICovXHJcbiAgQE91dHB1dCgpIGljb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrSWNvbicpIGNoZWNrSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbEljb24nKSBjYW5jZWxJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZWRpdEljb24nKSBlZGl0SWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUljb24nKSBkZWxldGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnYWRkSWNvbicpIGFkZEljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCd2aWV3SWNvbicpIHZpZXdJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZ2V0SWNvbicpIGdldEljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdzZXR0aW5nc0ljb24nKSBzZXR0aW5nc0ljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0SWNvbicsIHsgc3RhdGljOiB0cnVlIH0pIGRlZmF1bHRJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnc2NoZWR1bGVJY29uJykgc2NoZWR1bGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncmVmcmVzaEljb24nKSByZWZyZXNoSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrQ2lyY2xlSWNvbicpIGNoZWNrQ2lyY2xlSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbENpcmNsZUljb24nKSBjYW5jZWxDaXJjbGVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnZXJyb3JJY29uJykgZXJyb3JJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncXVldWVJY29uJykgcXVldWVJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgnYXJyb3dVcEljb24nKSBhcnJvd1VwSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ2Fycm93RG93bkljb24nKSBhcnJvd0Rvd25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT25JY29uJykgdG9nZ2xlT25JY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgndG9nZ2xlT2ZmSWNvbicpIHRvZ2dsZU9mZkljb25UcGwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uJykgc2VhcmNoSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZEljb24nKSB1cGxvYWRJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGVuZGluZ0FjdGlvbnNJY29uJykgcGVuZGluZ0FjdGlvbnNJY29uVHBsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgQFZpZXdDaGlsZCgncGxheUNpcmNsZUljb24nKSBwbGF5Q2lyY2xlSWNvblRwbCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGljb25NYXAgPSBuZXcgTWFwPEljb24sIFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVCYXNpY0ljb25zKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVTdGF0ZUljb25zKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVVdGlsaXR5SWNvbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJhc2ljSWNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjaGVjaycsIHRoaXMuY2hlY2tJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2NhbmNlbCcsIHRoaXMuY2FuY2VsSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdlZGl0JywgdGhpcy5lZGl0SWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdkZWxldGUnLCB0aGlzLmRlbGV0ZUljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgnYWRkJywgdGhpcy5hZGRJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ3ZpZXcnLCB0aGlzLnZpZXdJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2dldCcsIHRoaXMuZ2V0SWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdzZXR0aW5ncycsIHRoaXMuc2V0dGluZ3NJY29uVHBsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YXRlSWNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjaGVja19jaXJjbGUnLCB0aGlzLmNoZWNrQ2lyY2xlSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdjYW5jZWxfY2lyY2xlJywgdGhpcy5jYW5jZWxDaXJjbGVJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2Vycm9yJywgdGhpcy5lcnJvckljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgndG9nZ2xlX29uJywgdGhpcy50b2dnbGVPbkljb25UcGwpO1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgndG9nZ2xlX29mZicsIHRoaXMudG9nZ2xlT2ZmSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdwZW5kaW5nX2FjdGlvbnMnLCB0aGlzLnBlbmRpbmdBY3Rpb25zSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdwbGF5X2NpcmNsZScsIHRoaXMucGxheUNpcmNsZUljb25UcGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplVXRpbGl0eUljb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pY29uTWFwLnNldCgnc2NoZWR1bGUnLCB0aGlzLnNjaGVkdWxlSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdyZWZyZXNoJywgdGhpcy5yZWZyZXNoSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdxdWV1ZScsIHRoaXMucXVldWVJY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ2Fycm93X3VwJywgdGhpcy5hcnJvd1VwSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCdhcnJvd19kb3duJywgdGhpcy5hcnJvd0Rvd25JY29uVHBsKTtcclxuICAgIHRoaXMuaWNvbk1hcC5zZXQoJ3NlYXJjaCcsIHRoaXMuc2VhcmNoSWNvblRwbCk7XHJcbiAgICB0aGlzLmljb25NYXAuc2V0KCd1cGxvYWQnLCB0aGlzLnVwbG9hZEljb25UcGwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvblRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcclxuICAgIHJldHVybiB0aGlzLmljb25NYXAuZ2V0KHRoaXMuaWNvbikgPz8gdGhpcy5kZWZhdWx0SWNvblRwbDtcclxuICB9XHJcblxyXG4gIGdldCBpY29uQ29sb3IoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiAnI2JkYmRiZCc7IC8vIGdyaXMgZGVzaGFiaWxpdGFkb1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpIGhheSB1biBjb2xvciBwZXJzb25hbGl6YWRvLCB1c2FybG8gc2llbXByZSAoZXhjZXB0byBzaSBlc3TDoSBkaXNhYmxlZClcclxuICAgIGlmICh0aGlzLmN1c3RvbUNvbG9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBhbGV0YSBzaW1wbGlmaWNhZGEgLSBzb2xvIGNvbG9yZXMgYmFzZVxyXG4gICAgY29uc3QgYmFzZUNvbG9yczogUmVjb3JkPENvbG9yLCBzdHJpbmc+ID0ge1xyXG4gICAgICBwcmltYXJ5OiAnIzAwMzc3NWM4JyxcclxuICAgICAgc2Vjb25kYXJ5OiAnIzZiNzI4MCcsXHJcbiAgICAgIHdhcm46ICcjZTUzOTM1JyxcclxuICAgICAgc3VjY2VzczogJyM0Y2FmNTAnLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYmFzZUNvbG9yc1t0aGlzLmNvbG9yXSA/PyAnIzIyMic7XHJcbiAgfVxyXG5cclxuICBnZXQgaWNvbk9wYWNpdHkoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiAwLjU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQXBsaWNhciBvcGFjaXR5IDAuNyBjdWFuZG8gZXMgY29sb3Igc2Vjb25kYXJ5IG8gd2FybiAoc2luIGN1c3RvbUNvbG9yKVxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5jb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgdGhpcy5jb2xvciA9PT0gJ3dhcm4nKSAmJlxyXG4gICAgICAhdGhpcy5jdXN0b21Db2xvclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAwLjc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfSAvLyBIYW5kbGVyIHBhcmEgY2xpY2sgZW4gbW9kbyBidXR0b25cclxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaWNvbkNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAaWYgKGJ1dHRvbikge1xyXG48YnV0dG9uIHR5cGU9XCJ7e3R5cGV9fVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiaWNvbi1idXR0b25cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemUgKyA4XCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZSArIDhcIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldEljb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XHJcbjwvYnV0dG9uPlxyXG59IEBlbHNlIHtcclxuPHNwYW4gY2xhc3M9XCJpY29uLXNwYW5cIiBbc3R5bGUud2lkdGgucHhdPVwiaWNvblNpemVcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImljb25TaXplXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldEljb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XHJcbjwvc3Bhbj5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVja0ljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTUgMTNsNCA0TDE5IDdcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNNiA2bDEyIDEyTTYgMThMMTggNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZWRpdEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cmVjdCB4PVwiNVwiIHk9XCIxOVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNCAxMi41LTEyLjV6XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2RlbGV0ZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTYgMTlhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhZGRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk0xMiA1djE0TTUgMTJoMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ZpZXdJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIk0xMiA1QzcgNSAyLjczIDguMTEgMSAxMmMxLjczIDMuODkgNiA3IDExIDdzOS4yNy0zLjExIDExLTdjLTEuNzMtMy44OS02LTctMTEtN3pcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZ2V0SWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMThcIiBjeT1cIjE4XCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTguNSA4LjUgNyA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtMTMgMTEgMiAyLTIgMlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzZXR0aW5nc0ljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDF2Nm0wIDZ2MTBNMy4zNCA3bDUuMiAzTTE1LjQ2IDE0bDUuMiAzTTMuMzQgMTdsNS4yLTNNMTUuNDYgMTBsNS4yLTNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzY2hlZHVsZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcmVmcmVzaEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDhcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTIxIDN2NWgtNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTMgMjF2LTVoNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjaGVja0NpcmNsZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm05IDEyIDIgMiA0LTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsQ2lyY2xlSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTE1IDktNiA2bTAtNiA2IDZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZXJyb3JJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiMTVcIiB5MT1cIjlcIiB4Mj1cIjlcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiOVwiIHgyPVwiMTVcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNxdWV1ZUljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cGF0aCBkPVwiTTMgMTJoMThtLTktOXYxOFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgIDxyZWN0IHg9XCIyXCIgeT1cIjE1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhcnJvd1VwSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJtMTggMTUtNi02LTYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhcnJvd0Rvd25JY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHBhdGggZD1cIm02IDkgNiA2IDYtNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPbkljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8cmVjdCB4PVwiMVwiIHk9XCI1XCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjE0XCIgcng9XCI3XCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3JcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxMlwiIHI9XCIzXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPZmZJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPHJlY3QgeD1cIjFcIiB5PVwiNVwiIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0yMSAyMS00LjM1LTQuMzVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdXBsb2FkSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5bGluZSBwb2ludHM9XCI3LDEwIDEyLDUgMTcsMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCI1XCIgeDI9XCIxMlwiIHkyPVwiMTVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BlbmRpbmdBY3Rpb25zSWNvbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHlcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTIsNiAxMiwxMiAxNiwxNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNOCAydjRNMTYgMnY0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BsYXlDaXJjbGVJY29uPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemVcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5Z29uIHBvaW50cz1cIjEwLDggMTYsMTIgMTAsMTZcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb24+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5XCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjJcIiBbYXR0ci5maWxsXT1cImljb25Db2xvclwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
153
153
|
providedIn: 'root'
|
|
154
154
|
}]
|
|
155
155
|
}] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1jb2x1bW4tdmlzaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUVwQixhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNiLE9BQXlCLEVBQ3pCLElBQVMsRUFDVCxRQUFpQixFQUNqQixPQUFrQjtRQUVsQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUNYLE1BQXNCLEVBQ3RCLElBQVMsRUFDVCxtQkFBbUIsR0FBRyxLQUFLO1FBRTNCLG9GQUFvRjtRQUNwRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELDJGQUEyRjtRQUMzRix1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUks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S0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFvQyxHQUFNLEVBQUUsUUFBZ0I7UUFDNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBUSxHQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWMsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7UUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQyxPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzdFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBbExRLDRCQUE0Qjs0R0FBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4MFRhYmxlQ29sRGVmLCBJRCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVEYXRhQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vdGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgbMOzZ2ljYSBkZSB2aXNpYmlsaWRhZCBkZSBjb2x1bW5hcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogTWFuZWphIGxhcyByZWdsYXMgY29tcGxlamFzIGRlIHZpc2liaWxpZGFkIGJhc2FkYXMgZW46XG4gKiAtIENvbmZpZ3VyYWNpw7NuIGV4cGzDrWNpdGEgKHZpc2libGU6IGZhbHNlKVxuICogLSBPY3VsdGFjacOzbiBhdXRvbcOhdGljYSAoaGlkZUlmQWxsVmFsdWVzQXJlTnVsbClcbiAqIC0gRXN0YWRvIGRlIGNyZWFjacOzbiB5IGVkaWNpw7NuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5WaXNpYmlsaXR5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb252ZXJ0ZXIgPSBpbmplY3QoVGFibGVEYXRhQ29udmVydGVyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBBY3R1YWxpemEgbGFzIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgYmFzw6FuZG9zZSBlbiBlbCBlc3RhZG8gYWN0dWFsXG4gICAgICogQHBhcmFtIGNvbHVtbnMgLSBEZWZpbmljaW9uZXMgZGUgY29sdW1uYXNcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGNyZWF0aW5nIC0gU2kgZXN0w6EgZW4gbW9kbyBjcmVhY2nDs25cbiAgICAgKiBAcGFyYW0gZWRpdGluZyAtIElEIGRlIGZpbGEgZW4gZWRpY2nDs24gKG51bGwgc2kgbm8gaGF5IGVkaWNpw7NuKVxuICAgICAqIEByZXR1cm5zIEFycmF5IGRlIGFjY2Vzc29ycyBkZSBjb2x1bW5hcyB2aXNpYmxlc1xuICAgICAqL1xuICAgIHVwZGF0ZVZpc2libGVLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2wgPT5cbiAgICAgICAgICAgIHRoaXMuaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sLCBkYXRhLCBjcmVhdGluZywgZWRpdGluZylcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zLm1hcChjb2wgPT4gY29sLmFjY2Vzc29yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmEgc2kgdW5hIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBiYXPDoW5kb3NlIGVuIHN1IGNvbmZpZ3VyYWNpw7NuIHkgZGF0b3NcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gZm9yY2VTaG93SW5DcmVhdGlvbiAtIFNpIGVzIHRydWUsIGlnbm9yYSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsICh1c2FkbyBlbiBtb2RvIGNyZWFjacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGZvcmNlU2hvd0luQ3JlYXRpb24gPSBmYWxzZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQUklPUklEQUQgMjogU2kgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCBlcyB0cnVlIHkgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3MsIG9jdWx0YXJcbiAgICAgICAgLy8gRVhDRVBDScOTTjogRW4gbW9kbyBjcmVhY2nDs24sIG1vc3RyYW1vcyBlc3RhcyBjb2x1bW5hcyBwYXJhIHBlcm1pdGlyIGVudHJhZGEgZGUgZGF0b3NcbiAgICAgICAgaWYgKGNvbHVtbi5oaWRlSWZBbGxWYWx1ZXNBcmVOdWxsID09PSB0cnVlICYmICFmb3JjZVNob3dJbkNyZWF0aW9uICYmIHRoaXMuYXJlQWxsQ29sdW1uVmFsdWVzRW1wdHkoY29sdW1uLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9yIGRlZmVjdG86IG1vc3RyYXJcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5hIHNpIHVuYSBjb2x1bW5hIGRlYmUgc2VyIHZpc2libGUgZW4gbG9zIGhlYWRlcnNcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gY3JlYXRpbmcgLSBTaSBlc3TDoSBlbiBtb2RvIGNyZWFjacOzblxuICAgICAqIEBwYXJhbSBlZGl0aW5nIC0gSUQgZGUgZmlsYSBlbiBlZGljacOzbiAobnVsbCBzaSBubyBoYXkgZWRpY2nDs24pXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCBoZWFkZXIgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbjogQzgwVGFibGVDb2xEZWYsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlc3RhbW9zIGVuIG1vZG8gY3JlYWNpw7NuLCBtb3N0cmFyIGNvbHVtbmFzIGNvbiBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsXG4gICAgICAgIGlmIChjcmVhdGluZyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBoYXkgdW5hIGZpbGEgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBpZiAoZWRpdGluZyAhPT0gbnVsbCAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gQnVzY2FyIGxhIGZpbGEgcXVlIHNlIGVzdMOhIGVkaXRhbmRvXG4gICAgICAgICAgICBjb25zdCBlZGl0aW5nUm93ID0gZGF0YS5maW5kKHJvdyA9PiByb3dbJ2lkJ10gPT09IGVkaXRpbmcpO1xuXG4gICAgICAgICAgICBpZiAoZWRpdGluZ1Jvdykge1xuICAgICAgICAgICAgICAgIC8vIFNvbG8gbW9zdHJhciBlbCBoZWFkZXIgc2kgbGEgZmlsYSBlbiBlZGljacOzbiB0aWVuZSB2YWxvciBlbiBlc3RhIGNvbHVtbmFcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShlZGl0aW5nUm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kYXRhQ29udmVydGVyLmlzVmFsdWVFbXB0eShjZWxsVmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaSBubyBzZSBlbmN1ZW50cmEgbGEgZmlsYSwgbm8gbW9zdHJhciBlbCBoZWFkZXJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGhpZGVJZkFsbFZhbHVlc0FyZU51bGwgZXMgdHJ1ZSB5IHRvZG9zIGxvcyB2YWxvcmVzIGVzdMOhbiB2YWPDrW9zLCBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSAmJiB0aGlzLmFyZUFsbENvbHVtblZhbHVlc0VtcHR5KGNvbHVtbiwgZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvciBkZWZlY3RvOiBtb3N0cmFyXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluYSBzaSB1bmEgY29sdW1uYSBkZWJlIHNlciB2aXNpYmxlIGVuIHVuYSBmaWxhIGVzcGVjw61maWNhIGNvbnNpZGVyYW5kbyBlbCBtb2RvIGVkaWNpw7NuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIExhIGRlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBhY3R1YWxcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGVkaXRpbmcgLSBJRCBkZSBmaWxhIGVuIGVkaWNpw7NuIChudWxsIHNpIG5vIGhheSBlZGljacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBwYXJhIGVzdGEgZmlsYVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUZvclJvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICByb3c6IFQsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgZWRpdGluZzogSUQgfCBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFBSSU9SSURBRCAxOiBTaSB2aXNpYmxlIGVzdMOhIGV4cGzDrWNpdGFtZW50ZSBlc3RhYmxlY2lkbyBlbiBmYWxzZSwgU0lFTVBSRSBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4udmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAyOiBTaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgZXN0w6EgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBjb25zdCBpc0VkaXRpbmdUaGlzUm93ID0gZWRpdGluZyA9PT0gcm93WydpZCddO1xuICAgICAgICBpZiAoaXNFZGl0aW5nVGhpc1JvdyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gRW4gZWRpY2nDs24sIHNvbG8gbW9zdHJhciBzaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgdGllbmUgdmFsb3IgZW4gZXN0YSBjb2x1bW5hXG4gICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbi5hY2Nlc3Nvcik7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkoY2VsbFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAzOiBTaSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsIGVzIHRydWUgeSB0b2RvcyBsb3MgdmFsb3JlcyBlc3TDoW4gdmFjw61vcywgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLmhpZGVJZkFsbFZhbHVlc0FyZU51bGwgPT09IHRydWUgJiYgdGhpcy5hcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eShjb2x1bW4sIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb3IgZGVmZWN0bzogbW9zdHJhclxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzaSB0b2RvcyBsb3MgdmFsb3JlcyBkZSB1bmEgY29sdW1uYSBlc3TDoW4gdmFjw61vcy9udWxvc1xuICAgICAqIEBwYXJhbSBjb2x1bW4gLSBMYSBkZWZpbmljacOzbiBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIGRhdGEgLSBEYXRvcyBhY3R1YWxlcyBkZSBsYSB0YWJsYVxuICAgICAqIEByZXR1cm5zIHRydWUgc2kgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3NcbiAgICAgKi9cbiAgICBhcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW11cbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2kgbm8gaGF5IGRhdG9zLCBjb25zaWRlcmFtb3MgbGEgY29sdW1uYSBjb21vIHZhY8OtYVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEuZXZlcnkocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuYSBjZWxkYSB1c2FuZG8gZWwgYWNjZXNzb3IsIHNvcG9ydGFuZG8gbm90YWNpw7NuIGRlIHB1bnRvIHBhcmEgcHJvcGllZGFkZXMgYW5pZGFkYXNcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIEVsIGFjY2Vzc29yIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBkZSBsYSBjZWxkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ocm93OiBULCBhY2Nlc3Nvcjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGFjY2Vzc29yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbYWNjZXNzb3JdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW4gb2JqZXRvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG8gKGVqOiAndGFzay5uYW1lJylcbiAgICAgKiBAcGFyYW0gb2JqIC0gT2JqZXRvIGRlbCBjdWFsIG9idGVuZXIgZWwgdmFsb3JcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBSdXRhIGRlIGFjY2VzbyB1c2FuZG8gbm90YWNpw7NuIGRlIHB1bnRvXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgYW5pZGFkbyBvIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyA/IGN1cnJlbnRba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgb2JqKTtcbiAgICB9XG59XG4iXX0=
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1jb2x1bW4tdmlzaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUVwQixhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNiLE9BQXlCLEVBQ3pCLElBQVMsRUFDVCxRQUFpQixFQUNqQixPQUFrQjtRQUVsQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUNYLE1BQXNCLEVBQ3RCLElBQVMsRUFDVCxtQkFBbUIsR0FBRyxLQUFLO1FBRTNCLG9GQUFvRjtRQUNwRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELDJGQUEyRjtRQUMzRix1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUks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S0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFvQyxHQUFNLEVBQUUsUUFBZ0I7UUFDNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBUSxHQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWMsQ0FBQyxHQUE0QixFQUFFLFFBQWdCO1FBQ2pFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDL0MsT0FBTyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxPQUFtQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUcsQ0FBQyxFQUFFLEdBQWMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbExRLDRCQUE0Qjs0R0FBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4MFRhYmxlQ29sRGVmLCBJRCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVEYXRhQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vdGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgbMOzZ2ljYSBkZSB2aXNpYmlsaWRhZCBkZSBjb2x1bW5hcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogTWFuZWphIGxhcyByZWdsYXMgY29tcGxlamFzIGRlIHZpc2liaWxpZGFkIGJhc2FkYXMgZW46XG4gKiAtIENvbmZpZ3VyYWNpw7NuIGV4cGzDrWNpdGEgKHZpc2libGU6IGZhbHNlKVxuICogLSBPY3VsdGFjacOzbiBhdXRvbcOhdGljYSAoaGlkZUlmQWxsVmFsdWVzQXJlTnVsbClcbiAqIC0gRXN0YWRvIGRlIGNyZWFjacOzbiB5IGVkaWNpw7NuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5WaXNpYmlsaXR5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb252ZXJ0ZXIgPSBpbmplY3QoVGFibGVEYXRhQ29udmVydGVyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBBY3R1YWxpemEgbGFzIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgYmFzw6FuZG9zZSBlbiBlbCBlc3RhZG8gYWN0dWFsXG4gICAgICogQHBhcmFtIGNvbHVtbnMgLSBEZWZpbmljaW9uZXMgZGUgY29sdW1uYXNcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGNyZWF0aW5nIC0gU2kgZXN0w6EgZW4gbW9kbyBjcmVhY2nDs25cbiAgICAgKiBAcGFyYW0gZWRpdGluZyAtIElEIGRlIGZpbGEgZW4gZWRpY2nDs24gKG51bGwgc2kgbm8gaGF5IGVkaWNpw7NuKVxuICAgICAqIEByZXR1cm5zIEFycmF5IGRlIGFjY2Vzc29ycyBkZSBjb2x1bW5hcyB2aXNpYmxlc1xuICAgICAqL1xuICAgIHVwZGF0ZVZpc2libGVLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2wgPT5cbiAgICAgICAgICAgIHRoaXMuaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sLCBkYXRhLCBjcmVhdGluZywgZWRpdGluZylcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zLm1hcChjb2wgPT4gY29sLmFjY2Vzc29yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmEgc2kgdW5hIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBiYXPDoW5kb3NlIGVuIHN1IGNvbmZpZ3VyYWNpw7NuIHkgZGF0b3NcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gZm9yY2VTaG93SW5DcmVhdGlvbiAtIFNpIGVzIHRydWUsIGlnbm9yYSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsICh1c2FkbyBlbiBtb2RvIGNyZWFjacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGZvcmNlU2hvd0luQ3JlYXRpb24gPSBmYWxzZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQUklPUklEQUQgMjogU2kgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCBlcyB0cnVlIHkgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3MsIG9jdWx0YXJcbiAgICAgICAgLy8gRVhDRVBDScOTTjogRW4gbW9kbyBjcmVhY2nDs24sIG1vc3RyYW1vcyBlc3RhcyBjb2x1bW5hcyBwYXJhIHBlcm1pdGlyIGVudHJhZGEgZGUgZGF0b3NcbiAgICAgICAgaWYgKGNvbHVtbi5oaWRlSWZBbGxWYWx1ZXNBcmVOdWxsID09PSB0cnVlICYmICFmb3JjZVNob3dJbkNyZWF0aW9uICYmIHRoaXMuYXJlQWxsQ29sdW1uVmFsdWVzRW1wdHkoY29sdW1uLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9yIGRlZmVjdG86IG1vc3RyYXJcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5hIHNpIHVuYSBjb2x1bW5hIGRlYmUgc2VyIHZpc2libGUgZW4gbG9zIGhlYWRlcnNcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gY3JlYXRpbmcgLSBTaSBlc3TDoSBlbiBtb2RvIGNyZWFjacOzblxuICAgICAqIEBwYXJhbSBlZGl0aW5nIC0gSUQgZGUgZmlsYSBlbiBlZGljacOzbiAobnVsbCBzaSBubyBoYXkgZWRpY2nDs24pXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCBoZWFkZXIgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbjogQzgwVGFibGVDb2xEZWYsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlc3RhbW9zIGVuIG1vZG8gY3JlYWNpw7NuLCBtb3N0cmFyIGNvbHVtbmFzIGNvbiBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsXG4gICAgICAgIGlmIChjcmVhdGluZyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBoYXkgdW5hIGZpbGEgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBpZiAoZWRpdGluZyAhPT0gbnVsbCAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gQnVzY2FyIGxhIGZpbGEgcXVlIHNlIGVzdMOhIGVkaXRhbmRvXG4gICAgICAgICAgICBjb25zdCBlZGl0aW5nUm93ID0gZGF0YS5maW5kKHJvdyA9PiByb3dbJ2lkJ10gPT09IGVkaXRpbmcpO1xuXG4gICAgICAgICAgICBpZiAoZWRpdGluZ1Jvdykge1xuICAgICAgICAgICAgICAgIC8vIFNvbG8gbW9zdHJhciBlbCBoZWFkZXIgc2kgbGEgZmlsYSBlbiBlZGljacOzbiB0aWVuZSB2YWxvciBlbiBlc3RhIGNvbHVtbmFcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShlZGl0aW5nUm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kYXRhQ29udmVydGVyLmlzVmFsdWVFbXB0eShjZWxsVmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaSBubyBzZSBlbmN1ZW50cmEgbGEgZmlsYSwgbm8gbW9zdHJhciBlbCBoZWFkZXJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGhpZGVJZkFsbFZhbHVlc0FyZU51bGwgZXMgdHJ1ZSB5IHRvZG9zIGxvcyB2YWxvcmVzIGVzdMOhbiB2YWPDrW9zLCBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSAmJiB0aGlzLmFyZUFsbENvbHVtblZhbHVlc0VtcHR5KGNvbHVtbiwgZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvciBkZWZlY3RvOiBtb3N0cmFyXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluYSBzaSB1bmEgY29sdW1uYSBkZWJlIHNlciB2aXNpYmxlIGVuIHVuYSBmaWxhIGVzcGVjw61maWNhIGNvbnNpZGVyYW5kbyBlbCBtb2RvIGVkaWNpw7NuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIExhIGRlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBhY3R1YWxcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGVkaXRpbmcgLSBJRCBkZSBmaWxhIGVuIGVkaWNpw7NuIChudWxsIHNpIG5vIGhheSBlZGljacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBwYXJhIGVzdGEgZmlsYVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUZvclJvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICByb3c6IFQsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgZWRpdGluZzogSUQgfCBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFBSSU9SSURBRCAxOiBTaSB2aXNpYmxlIGVzdMOhIGV4cGzDrWNpdGFtZW50ZSBlc3RhYmxlY2lkbyBlbiBmYWxzZSwgU0lFTVBSRSBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4udmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAyOiBTaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgZXN0w6EgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBjb25zdCBpc0VkaXRpbmdUaGlzUm93ID0gZWRpdGluZyA9PT0gcm93WydpZCddO1xuICAgICAgICBpZiAoaXNFZGl0aW5nVGhpc1JvdyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gRW4gZWRpY2nDs24sIHNvbG8gbW9zdHJhciBzaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgdGllbmUgdmFsb3IgZW4gZXN0YSBjb2x1bW5hXG4gICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbi5hY2Nlc3Nvcik7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkoY2VsbFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAzOiBTaSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsIGVzIHRydWUgeSB0b2RvcyBsb3MgdmFsb3JlcyBlc3TDoW4gdmFjw61vcywgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLmhpZGVJZkFsbFZhbHVlc0FyZU51bGwgPT09IHRydWUgJiYgdGhpcy5hcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eShjb2x1bW4sIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb3IgZGVmZWN0bzogbW9zdHJhclxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzaSB0b2RvcyBsb3MgdmFsb3JlcyBkZSB1bmEgY29sdW1uYSBlc3TDoW4gdmFjw61vcy9udWxvc1xuICAgICAqIEBwYXJhbSBjb2x1bW4gLSBMYSBkZWZpbmljacOzbiBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIGRhdGEgLSBEYXRvcyBhY3R1YWxlcyBkZSBsYSB0YWJsYVxuICAgICAqIEByZXR1cm5zIHRydWUgc2kgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3NcbiAgICAgKi9cbiAgICBhcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW11cbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2kgbm8gaGF5IGRhdG9zLCBjb25zaWRlcmFtb3MgbGEgY29sdW1uYSBjb21vIHZhY8OtYVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEuZXZlcnkocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuYSBjZWxkYSB1c2FuZG8gZWwgYWNjZXNzb3IsIHNvcG9ydGFuZG8gbm90YWNpw7NuIGRlIHB1bnRvIHBhcmEgcHJvcGllZGFkZXMgYW5pZGFkYXNcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIEVsIGFjY2Vzc29yIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBkZSBsYSBjZWxkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ocm93OiBULCBhY2Nlc3Nvcjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGFjY2Vzc29yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbYWNjZXNzb3JdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW4gb2JqZXRvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG8gKGVqOiAndGFzay5uYW1lJylcbiAgICAgKiBAcGFyYW0gb2JqIC0gT2JqZXRvIGRlbCBjdWFsIG9idGVuZXIgZWwgdmFsb3JcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBSdXRhIGRlIGFjY2VzbyB1c2FuZG8gbm90YWNpw7NuIGRlIHB1bnRvXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgYW5pZGFkbyBvIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnID8gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIG9iaiBhcyB1bmtub3duKTtcbiAgICB9XG59XG4iXX0=
|