@c80/ui 1.0.35 → 1.0.38

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.
@@ -1,216 +1,80 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectorRef, inject, } from '@angular/core';
1
+ import { Component, input, output, computed, viewChild, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { BASE_ICON_COLORS, DISABLED_COLOR, DEFAULT_ICON_COLOR, DISABLED_OPACITY, SECONDARY_WARN_OPACITY, DEFAULT_OPACITY, BASE_ICON_SIZE, } from './icon.constants';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  export class C80IconComponent {
6
- /** Tamaño base del icono (en px) */
7
- get iconSize() {
8
- return 24 * this.size;
9
- }
10
- icon = 'check';
11
- color = 'primary';
12
- customColor; // Color personalizado opcional
13
- disabled = false;
14
- size = 1;
15
- /** Si es true, renderiza como <button> nativo, si es false solo como icono */
16
- _button = false;
17
- cdr = inject(ChangeDetectorRef);
18
- set button(val) {
19
- // Permite usar 'button' a secas, cualquier valor que no sea null/undefined/false es true
20
- this._button =
21
- val !== null && val !== undefined && val !== false && val !== 'false';
22
- }
23
- get button() {
24
- return this._button;
25
- }
26
- /** Tipo de botón nativo (solo si button=true) */
27
- type = 'button';
28
- /** Output para click (solo si button=true) */
29
- iconClick = new EventEmitter();
30
- checkIconTpl;
31
- cancelIconTpl;
32
- editIconTpl;
33
- deleteIconTpl;
34
- addIconTpl;
35
- viewIconTpl;
36
- getIconTpl;
37
- settingsIconTpl;
38
- defaultIconTpl;
39
- scheduleIconTpl;
40
- refreshIconTpl;
41
- checkCircleIconTpl;
42
- cancelCircleIconTpl;
43
- errorIconTpl;
44
- queueIconTpl;
45
- arrowUpIconTpl;
46
- arrowDownIconTpl;
47
- toggleOnIconTpl;
48
- toggleOffIconTpl;
49
- searchIconTpl;
50
- uploadIconTpl;
51
- pendingActionsIconTpl;
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
- }
88
- getIconTemplate() {
89
- return this.iconMap.get(this.icon) ?? this.defaultIconTpl;
90
- }
91
- get iconColor() {
92
- if (this.disabled) {
93
- return '#bdbdbd'; // gris deshabilitado
7
+ icon = input('check');
8
+ color = input('primary');
9
+ customColor = input(undefined);
10
+ disabled = input(false);
11
+ size = input(1);
12
+ button = input(false, {
13
+ transform: (val) => val !== null && val !== undefined && val !== false && val !== 'false',
14
+ });
15
+ type = input('button');
16
+ iconClick = output();
17
+ iconSize = computed(() => BASE_ICON_SIZE * this.size());
18
+ iconColor = computed(() => {
19
+ if (this.disabled()) {
20
+ return DISABLED_COLOR;
94
21
  }
95
- // Si hay un color personalizado, usarlo siempre (excepto si está disabled)
96
- if (this.customColor) {
97
- return this.customColor;
22
+ const custom = this.customColor();
23
+ if (custom) {
24
+ return custom;
98
25
  }
99
- // Paleta simplificada - solo colores base
100
- const baseColors = {
101
- primary: '#003775c8',
102
- secondary: '#6b7280',
103
- warn: '#e53935',
104
- success: '#4caf50',
105
- };
106
- return baseColors[this.color] ?? '#222';
107
- }
108
- get iconOpacity() {
109
- if (this.disabled) {
110
- return 0.5;
26
+ return BASE_ICON_COLORS[this.color()] ?? DEFAULT_ICON_COLOR;
27
+ });
28
+ iconOpacity = computed(() => {
29
+ if (this.disabled()) {
30
+ return DISABLED_OPACITY;
111
31
  }
112
- // Aplicar opacity 0.7 cuando es color secondary o warn (sin customColor)
113
- if ((this.color === 'secondary' || this.color === 'warn') &&
114
- !this.customColor) {
115
- return 0.7;
32
+ const currentColor = this.color();
33
+ const hasCustomColor = this.customColor() !== undefined;
34
+ if ((currentColor === 'secondary' || currentColor === 'warn') &&
35
+ !hasCustomColor) {
36
+ return SECONDARY_WARN_OPACITY;
116
37
  }
117
- return 1;
118
- } // Handler para click en modo button
38
+ return DEFAULT_OPACITY;
39
+ });
40
+ iconTemplate = computed(() => {
41
+ const iconName = this.icon();
42
+ const viewChildSignal = this[iconName];
43
+ return typeof viewChildSignal === 'function' ? viewChildSignal() : undefined;
44
+ });
45
+ check = viewChild('check');
46
+ cancel = viewChild('cancel');
47
+ edit = viewChild('edit');
48
+ delete = viewChild('delete');
49
+ add = viewChild('add');
50
+ view = viewChild('view');
51
+ get = viewChild('get');
52
+ settings = viewChild('settings');
53
+ schedule = viewChild('schedule');
54
+ refresh = viewChild('refresh');
55
+ checkCircle = viewChild('checkCircle');
56
+ cancelCircle = viewChild('cancelCircle');
57
+ error = viewChild('error');
58
+ queue = viewChild('queue');
59
+ arrowUp = viewChild('arrowUp');
60
+ arrowDown = viewChild('arrowDown');
61
+ toggleOn = viewChild('toggleOn');
62
+ toggleOff = viewChild('toggleOff');
63
+ search = viewChild('search');
64
+ upload = viewChild('upload');
65
+ pendingActions = viewChild('pendingActions');
66
+ playCircle = viewChild('playCircle');
67
+ default = viewChild('default');
119
68
  onButtonClick(event) {
120
- if (!this.disabled) {
69
+ if (!this.disabled()) {
121
70
  this.iconClick.emit(event);
122
71
  }
123
72
  }
124
73
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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"] }] });
74
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: C80IconComponent, isStandalone: true, selector: "c80-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, customColor: { classPropertyName: "customColor", publicName: "customColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { iconClick: "iconClick" }, viewQueries: [{ propertyName: "check", first: true, predicate: ["check"], descendants: true, isSignal: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true, isSignal: true }, { propertyName: "edit", first: true, predicate: ["edit"], descendants: true, isSignal: true }, { propertyName: "delete", first: true, predicate: ["delete"], descendants: true, isSignal: true }, { propertyName: "add", first: true, predicate: ["add"], descendants: true, isSignal: true }, { propertyName: "view", first: true, predicate: ["view"], descendants: true, isSignal: true }, { propertyName: "get", first: true, predicate: ["get"], descendants: true, isSignal: true }, { propertyName: "settings", first: true, predicate: ["settings"], descendants: true, isSignal: true }, { propertyName: "schedule", first: true, predicate: ["schedule"], descendants: true, isSignal: true }, { propertyName: "refresh", first: true, predicate: ["refresh"], descendants: true, isSignal: true }, { propertyName: "checkCircle", first: true, predicate: ["checkCircle"], descendants: true, isSignal: true }, { propertyName: "cancelCircle", first: true, predicate: ["cancelCircle"], descendants: true, isSignal: true }, { propertyName: "error", first: true, predicate: ["error"], descendants: true, isSignal: true }, { propertyName: "queue", first: true, predicate: ["queue"], descendants: true, isSignal: true }, { propertyName: "arrowUp", first: true, predicate: ["arrowUp"], descendants: true, isSignal: true }, { propertyName: "arrowDown", first: true, predicate: ["arrowDown"], descendants: true, isSignal: true }, { propertyName: "toggleOn", first: true, predicate: ["toggleOn"], descendants: true, isSignal: true }, { propertyName: "toggleOff", first: true, predicate: ["toggleOff"], descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "upload", first: true, predicate: ["upload"], descendants: true, isSignal: true }, { propertyName: "pendingActions", first: true, predicate: ["pendingActions"], descendants: true, isSignal: true }, { propertyName: "playCircle", first: true, predicate: ["playCircle"], descendants: true, isSignal: true }, { propertyName: "default", first: true, predicate: ["default"], descendants: true, isSignal: 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=\"iconTemplate() || default\"></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=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\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 #cancel>\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 #edit>\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 #delete>\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 #add>\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 #view>\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 #get>\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 #settings>\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 #default>\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 #schedule>\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 #refresh>\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 #checkCircle>\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 #cancelCircle>\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 #error>\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 #queue>\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 #arrowUp>\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 #arrowDown>\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 #toggleOn>\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 #toggleOff>\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 #search>\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 #upload>\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 #pendingActions>\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 #playCircle>\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>", 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"] }] });
126
75
  }
127
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: C80IconComponent, decorators: [{
128
77
  type: Component,
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"] }]
130
- }], propDecorators: { icon: [{
131
- type: Input
132
- }], color: [{
133
- type: Input
134
- }], customColor: [{
135
- type: Input
136
- }], disabled: [{
137
- type: Input
138
- }], size: [{
139
- type: Input
140
- }], button: [{
141
- type: Input
142
- }], type: [{
143
- type: Input
144
- }], iconClick: [{
145
- type: Output
146
- }], checkIconTpl: [{
147
- type: ViewChild,
148
- args: ['checkIcon']
149
- }], cancelIconTpl: [{
150
- type: ViewChild,
151
- args: ['cancelIcon']
152
- }], editIconTpl: [{
153
- type: ViewChild,
154
- args: ['editIcon']
155
- }], deleteIconTpl: [{
156
- type: ViewChild,
157
- args: ['deleteIcon']
158
- }], addIconTpl: [{
159
- type: ViewChild,
160
- args: ['addIcon']
161
- }], viewIconTpl: [{
162
- type: ViewChild,
163
- args: ['viewIcon']
164
- }], getIconTpl: [{
165
- type: ViewChild,
166
- args: ['getIcon']
167
- }], settingsIconTpl: [{
168
- type: ViewChild,
169
- args: ['settingsIcon']
170
- }], defaultIconTpl: [{
171
- type: ViewChild,
172
- args: ['defaultIcon', { static: true }]
173
- }], scheduleIconTpl: [{
174
- type: ViewChild,
175
- args: ['scheduleIcon']
176
- }], refreshIconTpl: [{
177
- type: ViewChild,
178
- args: ['refreshIcon']
179
- }], checkCircleIconTpl: [{
180
- type: ViewChild,
181
- args: ['checkCircleIcon']
182
- }], cancelCircleIconTpl: [{
183
- type: ViewChild,
184
- args: ['cancelCircleIcon']
185
- }], errorIconTpl: [{
186
- type: ViewChild,
187
- args: ['errorIcon']
188
- }], queueIconTpl: [{
189
- type: ViewChild,
190
- args: ['queueIcon']
191
- }], arrowUpIconTpl: [{
192
- type: ViewChild,
193
- args: ['arrowUpIcon']
194
- }], arrowDownIconTpl: [{
195
- type: ViewChild,
196
- args: ['arrowDownIcon']
197
- }], toggleOnIconTpl: [{
198
- type: ViewChild,
199
- args: ['toggleOnIcon']
200
- }], toggleOffIconTpl: [{
201
- type: ViewChild,
202
- args: ['toggleOffIcon']
203
- }], searchIconTpl: [{
204
- type: ViewChild,
205
- args: ['searchIcon']
206
- }], uploadIconTpl: [{
207
- type: ViewChild,
208
- args: ['uploadIcon']
209
- }], pendingActionsIconTpl: [{
210
- type: ViewChild,
211
- args: ['pendingActionsIcon']
212
- }], playCircleIconTpl: [{
213
- type: ViewChild,
214
- args: ['playCircleIcon']
215
- }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQW1DL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixvQ0FBb0M7SUFDcEMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ1EsSUFBSSxHQUFTLE9BQU8sQ0FBQztJQUNyQixLQUFLLEdBQVUsU0FBUyxDQUFDO0lBQ3pCLFdBQVcsQ0FBVSxDQUFDLCtCQUErQjtJQUNyRCxRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsOEVBQThFO0lBQ3RFLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFUCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsSUFDSSxNQUFNLENBQUMsR0FBd0M7UUFDakQseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxPQUFPO1lBQ1YsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQztJQUMxRSxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxpREFBaUQ7SUFDeEMsSUFBSSxHQUFrQyxRQUFRLENBQUM7SUFDeEQsOENBQThDO0lBQ3BDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRXhCLFlBQVksQ0FBd0I7SUFDbkMsYUFBYSxDQUF3QjtJQUN2QyxXQUFXLENBQXdCO0lBQ2pDLGFBQWEsQ0FBd0I7SUFDeEMsVUFBVSxDQUF3QjtJQUNqQyxXQUFXLENBQXdCO0lBQ3BDLFVBQVUsQ0FBd0I7SUFDN0IsZUFBZSxDQUF3QjtJQUN0QixjQUFjLENBQXdCO0lBQ3ZELGVBQWUsQ0FBd0I7SUFDeEMsY0FBYyxDQUF3QjtJQUNsQyxrQkFBa0IsQ0FBd0I7SUFDekMsbUJBQW1CLENBQXdCO0lBQ2xELFlBQVksQ0FBd0I7SUFDcEMsWUFBWSxDQUF3QjtJQUNsQyxjQUFjLENBQXdCO0lBQ3BDLGdCQUFnQixDQUF3QjtJQUN6QyxlQUFlLENBQXdCO0lBQ3RDLGdCQUFnQixDQUF3QjtJQUMzQyxhQUFhLENBQXdCO0lBQ3JDLGFBQWEsQ0FBd0I7SUFDN0IscUJBQXFCLENBQXdCO0lBQ2pELGlCQUFpQixDQUF3QjtJQUVyRCxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFakUsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxxQkFBcUI7UUFDekMsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLFVBQVUsR0FBMEI7WUFDeEMsT0FBTyxFQUFFLFdBQVc7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBRUQseUVBQXlFO1FBQ3pFLElBQ0UsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztZQUNyRCxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ2pCLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQyxvQ0FBb0M7SUFDdEMsYUFBYSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzt3R0F4SVUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsbzdFQzlDN0Isb3hWQXlKYyw2b0JEL0dGLFlBQVk7OzRGQUlYLGdCQUFnQjtrQkFSNUIsU0FBUzsrQkFFRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzhCQVNkLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFNRixNQUFNO3NCQURULEtBQUs7Z0JBVUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWlCLFlBQVk7c0JBQW5DLFNBQVM7dUJBQUMsV0FBVztnQkFDRyxhQUFhO3NCQUFyQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0EsV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNJLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRCxVQUFVO3NCQUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0csV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVO2dCQUNDLFVBQVU7c0JBQS9CLFNBQVM7dUJBQUMsU0FBUztnQkFDTyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ21CLGNBQWM7c0JBQXpELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZixlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0MsY0FBYztzQkFBdkMsU0FBUzt1QkFBQyxhQUFhO2dCQUNNLGtCQUFrQjtzQkFBL0MsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0csbUJBQW1CO3NCQUFqRCxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDTCxZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0UsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNJLGNBQWM7c0JBQXZDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSSxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZTtnQkFDQyxlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csZ0JBQWdCO3NCQUEzQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0QsYUFBYTtzQkFBckMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDVSxxQkFBcUI7c0JBQXJELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNGLGlCQUFpQjtzQkFBN0MsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCB0eXBlIEljb24gPVxyXG4gIHwgJ2NoZWNrJ1xyXG4gIHwgJ2NhbmNlbCdcclxuICB8ICdlZGl0J1xyXG4gIHwgJ2RlbGV0ZSdcclxuICB8ICdhZGQnXHJcbiAgfCAndmlldydcclxuICB8ICdnZXQnXHJcbiAgfCAnc2V0dGluZ3MnXHJcbiAgfCAnc2NoZWR1bGUnXHJcbiAgfCAncmVmcmVzaCdcclxuICB8ICdjaGVja19jaXJjbGUnXHJcbiAgfCAnY2FuY2VsX2NpcmNsZSdcclxuICB8ICdlcnJvcidcclxuICB8ICdxdWV1ZSdcclxuICB8ICdhcnJvd191cCdcclxuICB8ICdhcnJvd19kb3duJ1xyXG4gIHwgJ3RvZ2dsZV9vbidcclxuICB8ICd0b2dnbGVfb2ZmJ1xyXG4gIHwgJ3NlYXJjaCdcclxuICB8ICd1cGxvYWQnXHJcbiAgfCAncGVuZGluZ19hY3Rpb25zJ1xyXG4gIHwgJ3BsYXlfY2lyY2xlJztcclxuZXhwb3J0IHR5cGUgQ29sb3IgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdjODAtaWNvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQzgwSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKiBUYW1hw7FvIGJhc2UgZGVsIGljb25vIChlbiBweCkgKi9cclxuICBnZXQgaWNvblNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAyNCAqIHRoaXMuc2l6ZTtcclxuICB9XHJcbiAgQElucHV0KCkgaWNvbjogSWNvbiA9ICdjaGVjayc7XHJcbiAgQElucHV0KCkgY29sb3I6IENvbG9yID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbG9yPzogc3RyaW5nOyAvLyBDb2xvciBwZXJzb25hbGl6YWRvIG9wY2lvbmFsXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ/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
78
+ 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=\"iconTemplate() || default\"></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=\"iconTemplate() || default\"></ng-container>\r\n</span>\r\n}\r\n\r\n<ng-template #check>\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 #cancel>\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 #edit>\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 #delete>\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 #add>\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 #view>\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 #get>\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 #settings>\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 #default>\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 #schedule>\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 #refresh>\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 #checkCircle>\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 #cancelCircle>\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 #error>\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 #queue>\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 #arrowUp>\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 #arrowDown>\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 #toggleOn>\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 #toggleOff>\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 #search>\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 #upload>\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 #pendingActions>\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 #playCircle>\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>", 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"] }]
79
+ }] });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBVzFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsSUFBSSxHQUFHLEtBQUssQ0FBVyxPQUFPLENBQUMsQ0FBQztJQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFZLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUM3QixTQUFTLEVBQUUsQ0FBQyxHQUF3QyxFQUFFLEVBQUUsQ0FDdEQsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU87S0FDeEUsQ0FBQyxDQUFDO0lBQ00sSUFBSSxHQUFHLEtBQUssQ0FBYSxRQUFRLENBQUMsQ0FBQztJQUVuQyxTQUFTLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFNUIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFeEQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUM7UUFFeEQsSUFDRSxDQUFDLFlBQVksS0FBSyxXQUFXLElBQUksWUFBWSxLQUFLLE1BQU0sQ0FBQztZQUN6RCxDQUFDLGNBQWMsRUFDZixDQUFDO1lBQ0QsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQXNCLENBQUMsQ0FBQztRQUNyRCxPQUFPLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVNLEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELElBQUksR0FBRyxTQUFTLENBQXVCLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELEdBQUcsR0FBRyxTQUFTLENBQXVCLEtBQUssQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxTQUFTLENBQXVCLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLEdBQUcsR0FBRyxTQUFTLENBQXVCLEtBQUssQ0FBQyxDQUFDO0lBQzdDLFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sR0FBRyxTQUFTLENBQXVCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELFdBQVcsR0FBRyxTQUFTLENBQXVCLGFBQWEsQ0FBQyxDQUFDO0lBQzdELFlBQVksR0FBRyxTQUFTLENBQXVCLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELEtBQUssR0FBRyxTQUFTLENBQXVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE9BQU8sR0FBRyxTQUFTLENBQXVCLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBRyxTQUFTLENBQXVCLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsR0FBRyxTQUFTLENBQXVCLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELFNBQVMsR0FBRyxTQUFTLENBQXVCLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sR0FBRyxTQUFTLENBQXVCLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELGNBQWMsR0FBRyxTQUFTLENBQXVCLGdCQUFnQixDQUFDLENBQUM7SUFDbkUsVUFBVSxHQUFHLFNBQVMsQ0FBdUIsWUFBWSxDQUFDLENBQUM7SUFDM0QsT0FBTyxHQUFHLFNBQVMsQ0FBdUIsU0FBUyxDQUFDLENBQUM7SUFFOUQsYUFBYSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO3dHQWpGVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQix3dkdDNUI3QixrclZBb0pjLDZvQkQ1SEYsWUFBWTs7NEZBSVgsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUVFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICB2aWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBCQVNFX0lDT05fQ09MT1JTLFxuICBESVNBQkxFRF9DT0xPUixcbiAgREVGQVVMVF9JQ09OX0NPTE9SLFxuICBESVNBQkxFRF9PUEFDSVRZLFxuICBTRUNPTkRBUllfV0FSTl9PUEFDSVRZLFxuICBERUZBVUxUX09QQUNJVFksXG4gIEJBU0VfSUNPTl9TSVpFLFxufSBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcbmltcG9ydCB7IEljb25UeXBlLCBDb2xvclR5cGUsIEJ1dHRvblR5cGUgfSBmcm9tICcuL2ljb24udHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdjODAtaWNvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQzgwSWNvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxJY29uVHlwZT4oJ2NoZWNrJyk7XG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29sb3JUeXBlPigncHJpbWFyeScpO1xuICByZWFkb25seSBjdXN0b21Db2xvciA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dCgxKTtcbiAgcmVhZG9ubHkgYnV0dG9uID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWw6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gZmFsc2UgJiYgdmFsICE9PSAnZmFsc2UnLFxuICB9KTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTtcblxuICByZWFkb25seSBpY29uQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgcmVhZG9ubHkgaWNvblNpemUgPSBjb21wdXRlZCgoKSA9PiBCQVNFX0lDT05fU0laRSAqIHRoaXMuc2l6ZSgpKTtcblxuICByZWFkb25seSBpY29uQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIERJU0FCTEVEX0NPTE9SO1xuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY3VzdG9tQ29sb3IoKTtcbiAgICBpZiAoY3VzdG9tKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cblxuICAgIHJldHVybiBCQVNFX0lDT05fQ09MT1JTW3RoaXMuY29sb3IoKV0gPz8gREVGQVVMVF9JQ09OX0NPTE9SO1xuICB9KTtcblxuICByZWFkb25seSBpY29uT3BhY2l0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm4gRElTQUJMRURfT1BBQ0lUWTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q29sb3IgPSB0aGlzLmNvbG9yKCk7XG4gICAgY29uc3QgaGFzQ3VzdG9tQ29sb3IgPSB0aGlzLmN1c3RvbUNvbG9yKCkgIT09IHVuZGVmaW5lZDtcblxuICAgIGlmIChcbiAgICAgIChjdXJyZW50Q29sb3IgPT09ICdzZWNvbmRhcnknIHx8IGN1cnJlbnRDb2xvciA9PT0gJ3dhcm4nKSAmJlxuICAgICAgIWhhc0N1c3RvbUNvbG9yXG4gICAgKSB7XG4gICAgICByZXR1cm4gU0VDT05EQVJZX1dBUk5fT1BBQ0lUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gREVGQVVMVF9PUEFDSVRZO1xuICB9KTtcblxuICByZWFkb25seSBpY29uVGVtcGxhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaWNvbk5hbWUgPSB0aGlzLmljb24oKTtcbiAgICBjb25zdCB2aWV3Q2hpbGRTaWduYWwgPSB0aGlzW2ljb25OYW1lIGFzIGtleW9mIHRoaXNdO1xuICAgIHJldHVybiB0eXBlb2Ygdmlld0NoaWxkU2lnbmFsID09PSAnZnVuY3Rpb24nID8gdmlld0NoaWxkU2lnbmFsKCkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNoZWNrID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignY2hlY2snKTtcbiAgcmVhZG9ubHkgY2FuY2VsID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignY2FuY2VsJyk7XG4gIHJlYWRvbmx5IGVkaXQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdlZGl0Jyk7XG4gIHJlYWRvbmx5IGRlbGV0ZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2RlbGV0ZScpO1xuICByZWFkb25seSBhZGQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdhZGQnKTtcbiAgcmVhZG9ubHkgdmlldyA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3ZpZXcnKTtcbiAgcmVhZG9ubHkgZ2V0ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZ2V0Jyk7XG4gIHJlYWRvbmx5IHNldHRpbmdzID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+Pignc2V0dGluZ3MnKTtcbiAgcmVhZG9ubHkgc2NoZWR1bGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdzY2hlZHVsZScpO1xuICByZWFkb25seSByZWZyZXNoID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncmVmcmVzaCcpO1xuICByZWFkb25seSBjaGVja0NpcmNsZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NoZWNrQ2lyY2xlJyk7XG4gIHJlYWRvbmx5IGNhbmNlbENpcmNsZSA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2NhbmNlbENpcmNsZScpO1xuICByZWFkb25seSBlcnJvciA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2Vycm9yJyk7XG4gIHJlYWRvbmx5IHF1ZXVlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncXVldWUnKTtcbiAgcmVhZG9ubHkgYXJyb3dVcCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2Fycm93VXAnKTtcbiAgcmVhZG9ubHkgYXJyb3dEb3duID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYXJyb3dEb3duJyk7XG4gIHJlYWRvbmx5IHRvZ2dsZU9uID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigndG9nZ2xlT24nKTtcbiAgcmVhZG9ubHkgdG9nZ2xlT2ZmID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigndG9nZ2xlT2ZmJyk7XG4gIHJlYWRvbmx5IHNlYXJjaCA9IHZpZXdDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3NlYXJjaCcpO1xuICByZWFkb25seSB1cGxvYWQgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd1cGxvYWQnKTtcbiAgcmVhZG9ubHkgcGVuZGluZ0FjdGlvbnMgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdwZW5kaW5nQWN0aW9ucycpO1xuICByZWFkb25seSBwbGF5Q2lyY2xlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncGxheUNpcmNsZScpO1xuICByZWFkb25seSBkZWZhdWx0ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZGVmYXVsdCcpO1xuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuaWNvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChidXR0b24oKSkge1xyXG48YnV0dG9uIFt0eXBlXT1cInR5cGUoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCIgY2xhc3M9XCJpY29uLWJ1dHRvblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpICsgOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaWNvblNpemUoKSArIDhcIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSgpIHx8IGRlZmF1bHRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9idXR0b24+XHJcbn0gQGVsc2Uge1xyXG48c3BhbiBjbGFzcz1cImljb24tc3BhblwiIFtzdHlsZS53aWR0aC5weF09XCJpY29uU2l6ZSgpXCIgW3N0eWxlLmhlaWdodC5weF09XCJpY29uU2l6ZSgpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZSgpIHx8IGRlZmF1bHRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9zcGFuPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI2NoZWNrPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk01IDEzbDQgNEwxOSA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk02IDZsMTIgMTJNNiAxOEwxOCA2XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2VkaXQ+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cmVjdCB4PVwiNVwiIHk9XCIxOVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCIgW2F0dHIuZmlsbF09XCJpY29uQ29sb3IoKVwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTE2LjUgMy41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0w3IDE5bC00IDEgMS00IDEyLjUtMTIuNXpcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWxldGU+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTYgMTlhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiIFthdHRyLmZpbGxdPVwiaWNvbkNvbG9yKClcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2FkZD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMTIgNXYxNE01IDEyaDE0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ZpZXc+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8cGF0aCBkPVwiTTEyIDVDNyA1IDIuNzMgOC4xMSAxIDEyYzEuNzMgMy44OSA2IDcgMTEgN3M5LjI3LTMuMTEgMTEtN2MtMS43My0zLjg5LTYtNy0xMS03elwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZ2V0PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjE4XCIgY3k9XCIxOFwiIHI9XCIzXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTguNSA4LjUgNyA3XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0xMyAxMSAyIDItMiAyXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjc2V0dGluZ3M+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNMTIgMXY2bTAgNnYxME0zLjM0IDdsNS4yIDNNMTUuNDYgMTRsNS4yIDNNMy4zNCAxN2w1LjItM00xNS40NiAxMGw1LjItM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3NjaGVkdWxlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNyZWZyZXNoPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk0zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwiTTIxIDN2NWgtNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBhdGggZD1cIk0zIDIxdi01aDVcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjaGVja0NpcmNsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJtOSAxMiAyIDIgNC00XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FuY2VsQ2lyY2xlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgPHBhdGggZD1cIm0xNSA5LTYgNm0wLTYgNiA2XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZXJyb3I+XHJcbiAgPHN2ZyBbYXR0ci53aWR0aF09XCJpY29uU2l6ZSgpXCIgW2F0dHIuaGVpZ2h0XT1cImljb25TaXplKClcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBbc3R5bGUub3BhY2l0eV09XCJpY29uT3BhY2l0eSgpXCI+XHJcbiAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XHJcbiAgICA8bGluZSB4MT1cIjE1XCIgeTE9XCI5XCIgeDI9XCI5XCIgeTI9XCIxNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgIDxsaW5lIHgxPVwiOVwiIHkxPVwiOVwiIHgyPVwiMTVcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3F1ZXVlPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHBhdGggZD1cIk0zIDEyaDE4bS05LTl2MThcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICA8cmVjdCB4PVwiMlwiIHk9XCIzXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjZcIiByeD1cIjFcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgPHJlY3QgeD1cIjJcIiB5PVwiMTVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiNlwiIHJ4PVwiMVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjYXJyb3dVcD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJtMTggMTUtNi02LTYgNlwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Fycm93RG93bj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJtNiA5IDYgNiA2LTZcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVPbj5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxyZWN0IHg9XCIxXCIgeT1cIjVcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjdcIiBbYXR0ci5maWxsXT1cImljb25Db2xvcigpXCIgLz5cclxuICAgIDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTJcIiByPVwiM1wiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlT2ZmPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPHJlY3QgeD1cIjFcIiB5PVwiNVwiIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiN1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiMTJcIiByPVwiM1wiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjc2VhcmNoPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8cGF0aCBkPVwibTIxIDIxLTQuMzUtNC4zNVwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3VwbG9hZD5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxwYXRoIGQ9XCJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjcsMTAgMTIsNSAxNywxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiNVwiIHgyPVwiMTJcIiB5Mj1cIjE1XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BlbmRpbmdBY3Rpb25zPlxyXG4gIDxzdmcgW2F0dHIud2lkdGhdPVwiaWNvblNpemUoKVwiIFthdHRyLmhlaWdodF09XCJpY29uU2l6ZSgpXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgW3N0eWxlLm9wYWNpdHldPVwiaWNvbk9wYWNpdHkoKVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIFthdHRyLnN0cm9rZV09XCJpY29uQ29sb3IoKVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjEyLDYgMTIsMTIgMTYsMTRcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNOCAydjRNMTYgMnY0XCIgW2F0dHIuc3Ryb2tlXT1cImljb25Db2xvcigpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcGxheUNpcmNsZT5cclxuICA8c3ZnIFthdHRyLndpZHRoXT1cImljb25TaXplKClcIiBbYXR0ci5oZWlnaHRdPVwiaWNvblNpemUoKVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIFtzdHlsZS5vcGFjaXR5XT1cImljb25PcGFjaXR5KClcIj5cclxuICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBbYXR0ci5zdHJva2VdPVwiaWNvbkNvbG9yKClcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDxwb2x5Z29uIHBvaW50cz1cIjEwLDggMTYsMTIgMTAsMTZcIiBbYXR0ci5maWxsXT1cImljb25Db2xvcigpXCIgLz5cclxuICA8L3N2Zz5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -0,0 +1,38 @@
1
+ export const ICON_NAMES = [
2
+ 'check',
3
+ 'cancel',
4
+ 'edit',
5
+ 'delete',
6
+ 'add',
7
+ 'view',
8
+ 'get',
9
+ 'settings',
10
+ 'schedule',
11
+ 'refresh',
12
+ 'checkCircle',
13
+ 'cancelCircle',
14
+ 'error',
15
+ 'queue',
16
+ 'arrowUp',
17
+ 'arrowDown',
18
+ 'toggleOn',
19
+ 'toggleOff',
20
+ 'search',
21
+ 'upload',
22
+ 'pendingActions',
23
+ 'playCircle',
24
+ 'default',
25
+ ];
26
+ export const BASE_ICON_COLORS = {
27
+ primary: '#003775c8',
28
+ secondary: '#6b7280',
29
+ warn: '#e53935',
30
+ success: '#4caf50',
31
+ };
32
+ export const DISABLED_COLOR = '#bdbdbd';
33
+ export const DEFAULT_ICON_COLOR = '#222';
34
+ export const DISABLED_OPACITY = 0.5;
35
+ export const SECONDARY_WARN_OPACITY = 0.7;
36
+ export const DEFAULT_OPACITY = 1;
37
+ export const BASE_ICON_SIZE = 24;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pY29uLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULGFBQWE7SUFDYixjQUFjO0lBQ2QsT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsUUFBUTtJQUNSLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFNBQVM7Q0FDRCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXdDO0lBQ25FLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JUeXBlIH0gZnJvbSAnLi9pY29uLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IElDT05fTkFNRVMgPSBbXG4gICdjaGVjaycsXG4gICdjYW5jZWwnLFxuICAnZWRpdCcsXG4gICdkZWxldGUnLFxuICAnYWRkJyxcbiAgJ3ZpZXcnLFxuICAnZ2V0JyxcbiAgJ3NldHRpbmdzJyxcbiAgJ3NjaGVkdWxlJyxcbiAgJ3JlZnJlc2gnLFxuICAnY2hlY2tDaXJjbGUnLFxuICAnY2FuY2VsQ2lyY2xlJyxcbiAgJ2Vycm9yJyxcbiAgJ3F1ZXVlJyxcbiAgJ2Fycm93VXAnLFxuICAnYXJyb3dEb3duJyxcbiAgJ3RvZ2dsZU9uJyxcbiAgJ3RvZ2dsZU9mZicsXG4gICdzZWFyY2gnLFxuICAndXBsb2FkJyxcbiAgJ3BlbmRpbmdBY3Rpb25zJyxcbiAgJ3BsYXlDaXJjbGUnLFxuICAnZGVmYXVsdCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFTRV9JQ09OX0NPTE9SUzogUmVhZG9ubHk8UmVjb3JkPENvbG9yVHlwZSwgc3RyaW5nPj4gPSB7XG4gIHByaW1hcnk6ICcjMDAzNzc1YzgnLFxuICBzZWNvbmRhcnk6ICcjNmI3MjgwJyxcbiAgd2FybjogJyNlNTM5MzUnLFxuICBzdWNjZXNzOiAnIzRjYWY1MCcsXG59O1xuXG5leHBvcnQgY29uc3QgRElTQUJMRURfQ09MT1IgPSAnI2JkYmRiZCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JQ09OX0NPTE9SID0gJyMyMjInO1xuZXhwb3J0IGNvbnN0IERJU0FCTEVEX09QQUNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgU0VDT05EQVJZX1dBUk5fT1BBQ0lUWSA9IDAuNztcbmV4cG9ydCBjb25zdCBERUZBVUxUX09QQUNJVFkgPSAxO1xuZXhwb3J0IGNvbnN0IEJBU0VfSUNPTl9TSVpFID0gMjQ7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9pY29uL2ljb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDT05fTkFNRVMgfSBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgSWNvblR5cGUgPSAodHlwZW9mIElDT05fTkFNRVMpW251bWJlcl07XG5leHBvcnQgdHlwZSBDb2xvclR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICd3YXJuJyB8ICdzdWNjZXNzJztcbmV4cG9ydCB0eXBlIEJ1dHRvblR5cGUgPSAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcbiJdfQ==
@@ -1,2 +1,4 @@
1
1
  export * from './icon.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG4iXX0=
2
+ export * from './icon.types';
3
+ export * from './icon.constants';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29uc3RhbnRzJztcbiJdfQ==