@tolle_/tolle-ui 18.2.23 → 18.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/accordion-item.component.mjs +17 -5
- package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
- package/esm2022/lib/alert-dialog.component.mjs +48 -10
- package/esm2022/lib/alert-dialog.service.mjs +13 -2
- package/esm2022/lib/alert.component.mjs +5 -5
- package/esm2022/lib/avatar.component.mjs +30 -9
- package/esm2022/lib/badge.component.mjs +41 -15
- package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
- package/esm2022/lib/button.component.mjs +14 -3
- package/esm2022/lib/calendar.component.mjs +99 -17
- package/esm2022/lib/card.component.mjs +29 -9
- package/esm2022/lib/carousel/carousel.component.mjs +19 -3
- package/esm2022/lib/checkbox.component.mjs +44 -21
- package/esm2022/lib/collapsible.component.mjs +12 -4
- package/esm2022/lib/country-selector.component.mjs +140 -20
- package/esm2022/lib/data-table.component.mjs +27 -16
- package/esm2022/lib/date-picker.component.mjs +60 -25
- package/esm2022/lib/date-range-picker.component.mjs +64 -26
- package/esm2022/lib/dropdown-item.component.mjs +19 -5
- package/esm2022/lib/dropdown-label.component.mjs +3 -3
- package/esm2022/lib/dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/dropdown-separator.component.mjs +3 -3
- package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
- package/esm2022/lib/empty-state.component.mjs +3 -3
- package/esm2022/lib/hover-card.component.mjs +4 -2
- package/esm2022/lib/input.component.mjs +7 -5
- package/esm2022/lib/label.component.mjs +2 -2
- package/esm2022/lib/masked-input.component.mjs +3 -3
- package/esm2022/lib/modal.component.mjs +58 -22
- package/esm2022/lib/modal.service.mjs +13 -1
- package/esm2022/lib/multi-select.component.mjs +228 -20
- package/esm2022/lib/otp.component.mjs +6 -3
- package/esm2022/lib/pagination.component.mjs +19 -9
- package/esm2022/lib/progress.component.mjs +8 -5
- package/esm2022/lib/radio-group.component.mjs +51 -3
- package/esm2022/lib/radio-item.component.mjs +46 -8
- package/esm2022/lib/radio-service.mjs +60 -1
- package/esm2022/lib/range-calendar.component.mjs +317 -98
- package/esm2022/lib/resizable-panel.component.mjs +5 -4
- package/esm2022/lib/scroll-area.component.mjs +5 -5
- package/esm2022/lib/segment.component.mjs +73 -7
- package/esm2022/lib/select-item.component.mjs +20 -2
- package/esm2022/lib/select-separator.component.mjs +3 -3
- package/esm2022/lib/select.component.mjs +221 -14
- package/esm2022/lib/separator.component.mjs +12 -6
- package/esm2022/lib/sheet-ref.mjs +8 -1
- package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
- package/esm2022/lib/sheet.component.mjs +57 -16
- package/esm2022/lib/sheet.service.mjs +5 -1
- package/esm2022/lib/sidebar.component.mjs +73 -15
- package/esm2022/lib/skeleton.component.mjs +19 -5
- package/esm2022/lib/switch.component.mjs +59 -53
- package/esm2022/lib/tabs.component.mjs +75 -13
- package/esm2022/lib/tag-input.component.mjs +6 -3
- package/esm2022/lib/textarea.component.mjs +9 -7
- package/esm2022/lib/theme.service.mjs +114 -138
- package/esm2022/lib/toaster.component.mjs +19 -9
- package/esm2022/lib/toggle-group.component.mjs +76 -4
- package/esm2022/lib/tolle-config.mjs +1 -1
- package/esm2022/lib/tooltip.directive.mjs +41 -17
- package/esm2022/lib/utils/color.mjs +324 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/tolle-ui.mjs +2715 -682
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/alert-dialog.component.d.ts +10 -1
- package/lib/avatar.component.d.ts +16 -3
- package/lib/badge.component.d.ts +17 -5
- package/lib/button.component.d.ts +8 -1
- package/lib/calendar.component.d.ts +21 -3
- package/lib/card.component.d.ts +6 -0
- package/lib/carousel/carousel.component.d.ts +1 -0
- package/lib/checkbox.component.d.ts +12 -4
- package/lib/country-selector.component.d.ts +11 -2
- package/lib/date-picker.component.d.ts +2 -1
- package/lib/date-range-picker.component.d.ts +5 -2
- package/lib/dropdown-item.component.d.ts +4 -2
- package/lib/dropdown-trigger.directive.d.ts +1 -1
- package/lib/modal.component.d.ts +6 -0
- package/lib/multi-select.component.d.ts +20 -0
- package/lib/otp.component.d.ts +1 -0
- package/lib/progress.component.d.ts +1 -0
- package/lib/radio-group.component.d.ts +8 -0
- package/lib/radio-item.component.d.ts +10 -4
- package/lib/radio-service.d.ts +29 -0
- package/lib/range-calendar.component.d.ts +33 -4
- package/lib/segment.component.d.ts +13 -0
- package/lib/select-item.component.d.ts +4 -1
- package/lib/select.component.d.ts +20 -0
- package/lib/separator.component.d.ts +2 -0
- package/lib/sheet-wrapper.component.d.ts +4 -0
- package/lib/sheet.component.d.ts +10 -1
- package/lib/sidebar.component.d.ts +2 -0
- package/lib/skeleton.component.d.ts +9 -3
- package/lib/switch.component.d.ts +13 -20
- package/lib/tabs.component.d.ts +11 -1
- package/lib/theme.service.d.ts +21 -6
- package/lib/toaster.component.d.ts +2 -2
- package/lib/toggle-group.component.d.ts +20 -2
- package/lib/tolle-config.d.ts +8 -0
- package/lib/tooltip.directive.d.ts +3 -0
- package/lib/utils/color.d.ts +87 -0
- package/package.json +4 -1
- package/preset.js +28 -0
- package/public-api.d.ts +1 -0
- package/registry/docs-content.json +4214 -0
- package/registry/llms-full.txt +1599 -0
- package/registry/llms.txt +83 -0
- package/registry/manifest.json +4925 -0
- package/registry/r/accordion-item.json +21 -0
- package/registry/r/accordion.json +23 -0
- package/registry/r/alert-dialog-dynamic.json +31 -0
- package/registry/r/alert-dialog.json +26 -0
- package/registry/r/alert.json +23 -0
- package/registry/r/aspect-ratio.json +21 -0
- package/registry/r/avatar-fallback.json +16 -0
- package/registry/r/avatar.json +23 -0
- package/registry/r/badge.json +23 -0
- package/registry/r/breadcrumb-item.json +16 -0
- package/registry/r/breadcrumb-link.json +16 -0
- package/registry/r/breadcrumb-separator.json +16 -0
- package/registry/r/breadcrumb.json +21 -0
- package/registry/r/button-group.json +21 -0
- package/registry/r/button.json +23 -0
- package/registry/r/calendar.json +23 -0
- package/registry/r/card.json +21 -0
- package/registry/r/carousel.json +18 -0
- package/registry/r/checkbox.json +23 -0
- package/registry/r/collapsible.json +21 -0
- package/registry/r/context-menu-trigger.json +23 -0
- package/registry/r/context-menu.json +28 -0
- package/registry/r/country-selector.json +31 -0
- package/registry/r/data-table.json +38 -0
- package/registry/r/date-picker.json +27 -0
- package/registry/r/date-range-picker.json +32 -0
- package/registry/r/dropdown-item.json +21 -0
- package/registry/r/dropdown-label.json +16 -0
- package/registry/r/dropdown-menu.json +16 -0
- package/registry/r/dropdown-separator.json +16 -0
- package/registry/r/dropdown-trigger.json +20 -0
- package/registry/r/empty-state.json +23 -0
- package/registry/r/hover-card.json +23 -0
- package/registry/r/input.json +21 -0
- package/registry/r/label.json +21 -0
- package/registry/r/masked-input.json +21 -0
- package/registry/r/modal.json +36 -0
- package/registry/r/multi-select.json +33 -0
- package/registry/r/otp-group.json +16 -0
- package/registry/r/otp-slot.json +21 -0
- package/registry/r/otp.json +21 -0
- package/registry/r/pagination.json +32 -0
- package/registry/r/phone-number-input.json +34 -0
- package/registry/r/popover-content.json +21 -0
- package/registry/r/popover.json +18 -0
- package/registry/r/progress.json +21 -0
- package/registry/r/radio-group.json +26 -0
- package/registry/r/radio-item.json +26 -0
- package/registry/r/range-calendar.json +28 -0
- package/registry/r/resizable-panel-item.json +23 -0
- package/registry/r/resizable-panel.json +23 -0
- package/registry/r/resizable.json +21 -0
- package/registry/r/scroll-area.json +21 -0
- package/registry/r/segment.json +21 -0
- package/registry/r/select-group.json +21 -0
- package/registry/r/select-item.json +26 -0
- package/registry/r/select-separator.json +21 -0
- package/registry/r/select.json +31 -0
- package/registry/r/separator.json +21 -0
- package/registry/r/sheet-wrapper.json +31 -0
- package/registry/r/sheet.json +21 -0
- package/registry/r/sidebar.json +21 -0
- package/registry/r/skeleton.json +23 -0
- package/registry/r/slider.json +21 -0
- package/registry/r/switch.json +23 -0
- package/registry/r/tabs.json +23 -0
- package/registry/r/tag-input.json +25 -0
- package/registry/r/textarea.json +21 -0
- package/registry/r/toaster.json +26 -0
- package/registry/r/toggle-group.json +25 -0
- package/registry/r/toggle.json +23 -0
- package/registry/r/tolle-cell.json +16 -0
- package/registry/r/tooltip.json +23 -0
- package/registry/registry.json +1540 -0
- package/theme.css +60 -5
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure color + theme-token math for Tolle UI.
|
|
3
|
+
*
|
|
4
|
+
* Framework- and DOM-free so it can back both the runtime `ThemeService` and a
|
|
5
|
+
* build-time theme generator (the shadcn-style "copy this CSS block" flow), and
|
|
6
|
+
* to centralize the math ahead of a future oklch migration. No side effects.
|
|
7
|
+
*/
|
|
8
|
+
/** Parse a #RGB or #RRGGBB hex string to RGB, or null if malformed. */
|
|
9
|
+
export function hexToRgb(hex) {
|
|
10
|
+
const c = hex.replace('#', '');
|
|
11
|
+
if (c.length === 3) {
|
|
12
|
+
return {
|
|
13
|
+
r: parseInt(c[0] + c[0], 16),
|
|
14
|
+
g: parseInt(c[1] + c[1], 16),
|
|
15
|
+
b: parseInt(c[2] + c[2], 16),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (c.length === 6) {
|
|
19
|
+
return {
|
|
20
|
+
r: parseInt(c.substring(0, 2), 16),
|
|
21
|
+
g: parseInt(c.substring(2, 4), 16),
|
|
22
|
+
b: parseInt(c.substring(4, 6), 16),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/** Space-separated RGB triplet for a hex color (Tailwind `<alpha-value>` form). */
|
|
28
|
+
export function rgbTriplet(hex, fallback = '37 99 235') {
|
|
29
|
+
const rgb = hexToRgb(hex);
|
|
30
|
+
return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : fallback;
|
|
31
|
+
}
|
|
32
|
+
/** Black or white, whichever contrasts better with the given color. */
|
|
33
|
+
export function getContrastColor(hex) {
|
|
34
|
+
const rgb = hexToRgb(hex);
|
|
35
|
+
if (!rgb)
|
|
36
|
+
return '#ffffff';
|
|
37
|
+
const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
|
|
38
|
+
return luminance > 0.5 ? '#000000' : '#ffffff';
|
|
39
|
+
}
|
|
40
|
+
/** Contrast color as an RGB triplet (for `--primary-foreground`). */
|
|
41
|
+
export function contrastTriplet(hex) {
|
|
42
|
+
return rgbTriplet(getContrastColor(hex), '255 255 255');
|
|
43
|
+
}
|
|
44
|
+
/** Lighten a hex color toward white by `percent` (0–100). */
|
|
45
|
+
export function lightenColor(hex, percent) {
|
|
46
|
+
const rgb = hexToRgb(hex);
|
|
47
|
+
if (!rgb)
|
|
48
|
+
return hex;
|
|
49
|
+
const r = Math.min(255, Math.floor(rgb.r + (255 - rgb.r) * (percent / 100)));
|
|
50
|
+
const g = Math.min(255, Math.floor(rgb.g + (255 - rgb.g) * (percent / 100)));
|
|
51
|
+
const b = Math.min(255, Math.floor(rgb.b + (255 - rgb.b) * (percent / 100)));
|
|
52
|
+
return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
|
53
|
+
}
|
|
54
|
+
function clamp(n, min, max) {
|
|
55
|
+
return Math.min(max, Math.max(min, n));
|
|
56
|
+
}
|
|
57
|
+
/** Convert a hex color to HSL (h 0–360, s/l 0–100), or null if malformed. */
|
|
58
|
+
export function hexToHsl(hex) {
|
|
59
|
+
const rgb = hexToRgb(hex);
|
|
60
|
+
if (!rgb)
|
|
61
|
+
return null;
|
|
62
|
+
const r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
|
|
63
|
+
const max = Math.max(r, g, b), min = Math.min(r, g, b);
|
|
64
|
+
let h = 0;
|
|
65
|
+
let s = 0;
|
|
66
|
+
const l = (max + min) / 2;
|
|
67
|
+
if (max !== min) {
|
|
68
|
+
const d = max - min;
|
|
69
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
70
|
+
switch (max) {
|
|
71
|
+
case r:
|
|
72
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
73
|
+
break;
|
|
74
|
+
case g:
|
|
75
|
+
h = (b - r) / d + 2;
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
h = (r - g) / d + 4;
|
|
79
|
+
}
|
|
80
|
+
h /= 6;
|
|
81
|
+
}
|
|
82
|
+
return { h: h * 360, s: s * 100, l: l * 100 };
|
|
83
|
+
}
|
|
84
|
+
/** Convert HSL (h 0–360, s/l 0–100) to a #RRGGBB hex string. */
|
|
85
|
+
export function hslToHex(h, s, l) {
|
|
86
|
+
h = ((h % 360) + 360) % 360 / 360;
|
|
87
|
+
s = clamp(s, 0, 100) / 100;
|
|
88
|
+
l = clamp(l, 0, 100) / 100;
|
|
89
|
+
const hue2rgb = (p, q, t) => {
|
|
90
|
+
if (t < 0)
|
|
91
|
+
t += 1;
|
|
92
|
+
if (t > 1)
|
|
93
|
+
t -= 1;
|
|
94
|
+
if (t < 1 / 6)
|
|
95
|
+
return p + (q - p) * 6 * t;
|
|
96
|
+
if (t < 1 / 2)
|
|
97
|
+
return q;
|
|
98
|
+
if (t < 2 / 3)
|
|
99
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
100
|
+
return p;
|
|
101
|
+
};
|
|
102
|
+
let r, g, b;
|
|
103
|
+
if (s === 0) {
|
|
104
|
+
r = g = b = l;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
108
|
+
const p = 2 * l - q;
|
|
109
|
+
r = hue2rgb(p, q, h + 1 / 3);
|
|
110
|
+
g = hue2rgb(p, q, h);
|
|
111
|
+
b = hue2rgb(p, q, h - 1 / 3);
|
|
112
|
+
}
|
|
113
|
+
const to = (x) => Math.round(x * 255).toString(16).padStart(2, '0');
|
|
114
|
+
return `#${to(r)}${to(g)}${to(b)}`;
|
|
115
|
+
}
|
|
116
|
+
/** Darken a hex color toward black by `percent` (0–100). */
|
|
117
|
+
export function darkenColor(hex, percent) {
|
|
118
|
+
const rgb = hexToRgb(hex);
|
|
119
|
+
if (!rgb)
|
|
120
|
+
return hex;
|
|
121
|
+
const factor = 1 - percent / 100;
|
|
122
|
+
const r = Math.max(0, Math.floor(rgb.r * factor));
|
|
123
|
+
const g = Math.max(0, Math.floor(rgb.g * factor));
|
|
124
|
+
const b = Math.max(0, Math.floor(rgb.b * factor));
|
|
125
|
+
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
|
|
126
|
+
}
|
|
127
|
+
/** Derived radius scale from a base radius (e.g. '0.5rem'), or null if malformed. */
|
|
128
|
+
export function radiusScale(radius) {
|
|
129
|
+
const m = radius.match(/^(\d*\.?\d+)([a-z]+|%)$/);
|
|
130
|
+
if (!m)
|
|
131
|
+
return null;
|
|
132
|
+
const n = parseFloat(m[1]);
|
|
133
|
+
const u = m[2];
|
|
134
|
+
return {
|
|
135
|
+
'--radius': radius,
|
|
136
|
+
'--radius-sm': `${n * 0.5}${u}`,
|
|
137
|
+
'--radius-md': `${n}${u}`,
|
|
138
|
+
'--radius-lg': `${n * 1.5}${u}`,
|
|
139
|
+
'--radius-xl': `${n * 2}${u}`,
|
|
140
|
+
'--radius-2xl': `${n * 3}${u}`,
|
|
141
|
+
'--radius-3xl': `${n * 4}${u}`,
|
|
142
|
+
'--radius-full': '9999px',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Generate the `:root` + `.dark` CSS custom-property block for a primary color
|
|
147
|
+
* (full 50–900 ramp, contrast foreground, focus ring, and radius scale). This is
|
|
148
|
+
* the theme-generator engine — identical to what `ThemeService` injects at runtime,
|
|
149
|
+
* and suitable for emitting a copy-paste block a consumer can commit.
|
|
150
|
+
*
|
|
151
|
+
* Pass `fonts` to also emit `--font-sans` / `--font-serif` / `--font-mono` (they
|
|
152
|
+
* do not vary between light and dark, so they land in `:root` only).
|
|
153
|
+
*/
|
|
154
|
+
export function generateThemeCss(primaryHex, radius = '0.5rem', fonts) {
|
|
155
|
+
const base = rgbTriplet(primaryHex);
|
|
156
|
+
const ringLight = rgbTriplet(lightenColor(primaryHex, 40), '96 165 250');
|
|
157
|
+
const ringDark = rgbTriplet(lightenColor(primaryHex, 20), '147 197 253');
|
|
158
|
+
const fg = contrastTriplet(primaryHex);
|
|
159
|
+
const scale = radiusScale(radius);
|
|
160
|
+
const radiusVars = scale
|
|
161
|
+
? Object.entries(scale)
|
|
162
|
+
.map(([k, v]) => `${k}: ${v};`)
|
|
163
|
+
.join('\n ')
|
|
164
|
+
: `--radius: ${radius};`;
|
|
165
|
+
const fontVars = fonts
|
|
166
|
+
? [
|
|
167
|
+
fonts.sans ? `--font-sans: ${fonts.sans};` : '',
|
|
168
|
+
fonts.serif ? `--font-serif: ${fonts.serif};` : '',
|
|
169
|
+
fonts.mono ? `--font-mono: ${fonts.mono};` : '',
|
|
170
|
+
]
|
|
171
|
+
.filter(Boolean)
|
|
172
|
+
.join('\n ')
|
|
173
|
+
: '';
|
|
174
|
+
return `
|
|
175
|
+
:root {
|
|
176
|
+
--primary: ${base};
|
|
177
|
+
--primary-foreground: ${fg};
|
|
178
|
+
${radiusVars}${fontVars ? '\n ' + fontVars : ''}
|
|
179
|
+
--primary-50: ${rgbTriplet(lightenColor(primaryHex, 90))};
|
|
180
|
+
--primary-100: ${rgbTriplet(lightenColor(primaryHex, 80))};
|
|
181
|
+
--primary-200: ${rgbTriplet(lightenColor(primaryHex, 60))};
|
|
182
|
+
--primary-300: ${rgbTriplet(lightenColor(primaryHex, 40))};
|
|
183
|
+
--primary-400: ${rgbTriplet(lightenColor(primaryHex, 20))};
|
|
184
|
+
--primary-500: ${base};
|
|
185
|
+
--primary-600: ${rgbTriplet(darkenColor(primaryHex, 20))};
|
|
186
|
+
--primary-700: ${rgbTriplet(darkenColor(primaryHex, 40))};
|
|
187
|
+
--primary-800: ${rgbTriplet(darkenColor(primaryHex, 60))};
|
|
188
|
+
--primary-900: ${rgbTriplet(darkenColor(primaryHex, 80))};
|
|
189
|
+
--ring: ${ringLight};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.dark {
|
|
193
|
+
--primary: ${base};
|
|
194
|
+
--primary-foreground: ${fg};
|
|
195
|
+
${radiusVars}
|
|
196
|
+
--primary-50: ${rgbTriplet(darkenColor(primaryHex, 85))};
|
|
197
|
+
--primary-100: ${rgbTriplet(darkenColor(primaryHex, 75))};
|
|
198
|
+
--primary-200: ${rgbTriplet(darkenColor(primaryHex, 65))};
|
|
199
|
+
--primary-300: ${rgbTriplet(darkenColor(primaryHex, 55))};
|
|
200
|
+
--primary-400: ${rgbTriplet(darkenColor(primaryHex, 45))};
|
|
201
|
+
--primary-500: ${base};
|
|
202
|
+
--primary-600: ${rgbTriplet(lightenColor(primaryHex, 20))};
|
|
203
|
+
--primary-700: ${rgbTriplet(lightenColor(primaryHex, 35))};
|
|
204
|
+
--primary-800: ${rgbTriplet(lightenColor(primaryHex, 50))};
|
|
205
|
+
--primary-900: ${rgbTriplet(lightenColor(primaryHex, 65))};
|
|
206
|
+
--ring: ${ringDark};
|
|
207
|
+
}
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
/** Build a light+dark neutral palette from a Tailwind-style shade ramp. */
|
|
211
|
+
function neutralPalette(s) {
|
|
212
|
+
return {
|
|
213
|
+
light: {
|
|
214
|
+
background: '255 255 255',
|
|
215
|
+
foreground: s[950],
|
|
216
|
+
card: '255 255 255',
|
|
217
|
+
cardForeground: s[950],
|
|
218
|
+
popover: '255 255 255',
|
|
219
|
+
popoverForeground: s[950],
|
|
220
|
+
muted: s[100],
|
|
221
|
+
mutedForeground: s[500],
|
|
222
|
+
accent: s[100],
|
|
223
|
+
accentForeground: s[900],
|
|
224
|
+
secondary: s[100],
|
|
225
|
+
secondaryForeground: s[900],
|
|
226
|
+
border: s[200],
|
|
227
|
+
input: s[200],
|
|
228
|
+
},
|
|
229
|
+
dark: {
|
|
230
|
+
background: s[950],
|
|
231
|
+
foreground: s[50],
|
|
232
|
+
card: s[950],
|
|
233
|
+
cardForeground: s[50],
|
|
234
|
+
popover: s[950],
|
|
235
|
+
popoverForeground: s[50],
|
|
236
|
+
muted: s[800],
|
|
237
|
+
mutedForeground: s[400],
|
|
238
|
+
accent: s[800],
|
|
239
|
+
accentForeground: s[50],
|
|
240
|
+
secondary: s[800],
|
|
241
|
+
secondaryForeground: s[50],
|
|
242
|
+
border: s[800],
|
|
243
|
+
input: s[800],
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Neutral base-color families (RGB triplets), matching Tailwind's Zinc / Slate /
|
|
249
|
+
* Gray / Neutral / Stone ramps. `zinc` reproduces the library's shipped defaults.
|
|
250
|
+
*/
|
|
251
|
+
export const BASE_PALETTES = {
|
|
252
|
+
zinc: neutralPalette({ 50: '250 250 250', 100: '244 244 245', 200: '228 228 231', 400: '161 161 170', 500: '113 113 122', 800: '39 39 42', 900: '24 24 27', 950: '9 9 11' }),
|
|
253
|
+
slate: neutralPalette({ 50: '248 250 252', 100: '241 245 249', 200: '226 232 240', 400: '148 163 184', 500: '100 116 139', 800: '30 41 59', 900: '15 23 42', 950: '2 6 23' }),
|
|
254
|
+
gray: neutralPalette({ 50: '249 250 251', 100: '243 244 246', 200: '229 231 235', 400: '156 163 175', 500: '107 114 128', 800: '31 41 55', 900: '17 24 39', 950: '3 7 18' }),
|
|
255
|
+
neutral: neutralPalette({ 50: '250 250 250', 100: '245 245 245', 200: '229 229 229', 400: '163 163 163', 500: '115 115 115', 800: '38 38 38', 900: '23 23 23', 950: '10 10 10' }),
|
|
256
|
+
stone: neutralPalette({ 50: '250 250 249', 100: '245 245 244', 200: '231 229 228', 400: '168 162 158', 500: '120 113 108', 800: '41 37 36', 900: '28 25 23', 950: '12 10 9' }),
|
|
257
|
+
};
|
|
258
|
+
function baseTokenBlock(t) {
|
|
259
|
+
return Object.entries({
|
|
260
|
+
'--background': t.background,
|
|
261
|
+
'--foreground': t.foreground,
|
|
262
|
+
'--card': t.card,
|
|
263
|
+
'--card-foreground': t.cardForeground,
|
|
264
|
+
'--popover': t.popover,
|
|
265
|
+
'--popover-foreground': t.popoverForeground,
|
|
266
|
+
'--muted': t.muted,
|
|
267
|
+
'--muted-foreground': t.mutedForeground,
|
|
268
|
+
'--accent': t.accent,
|
|
269
|
+
'--accent-foreground': t.accentForeground,
|
|
270
|
+
'--secondary': t.secondary,
|
|
271
|
+
'--secondary-foreground': t.secondaryForeground,
|
|
272
|
+
'--border': t.border,
|
|
273
|
+
'--input': t.input,
|
|
274
|
+
})
|
|
275
|
+
.map(([k, v]) => `${k}: ${v};`)
|
|
276
|
+
.join('\n ');
|
|
277
|
+
}
|
|
278
|
+
/** Emit the `:root` + `.dark` neutral-token block for a base color id. */
|
|
279
|
+
export function generateBaseCss(baseId) {
|
|
280
|
+
const p = BASE_PALETTES[baseId] ?? BASE_PALETTES['zinc'];
|
|
281
|
+
return `
|
|
282
|
+
:root {
|
|
283
|
+
${baseTokenBlock(p.light)}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.dark {
|
|
287
|
+
${baseTokenBlock(p.dark)}
|
|
288
|
+
}
|
|
289
|
+
`;
|
|
290
|
+
}
|
|
291
|
+
/* -------------------------------------------------------------------------- */
|
|
292
|
+
/* Chart palette */
|
|
293
|
+
/* -------------------------------------------------------------------------- */
|
|
294
|
+
/**
|
|
295
|
+
* Derive 5 harmonious chart colors from one base hex — the base hue plus
|
|
296
|
+
* analogous hues at ±30°/±60°, with paired lightness shifts for separation.
|
|
297
|
+
* Returns RGB triplets for `--chart-1`…`--chart-5`.
|
|
298
|
+
*/
|
|
299
|
+
export function generateChartRamp(hex) {
|
|
300
|
+
const hsl = hexToHsl(hex) ?? { h: 220, s: 70, l: 55 };
|
|
301
|
+
const defs = [
|
|
302
|
+
{ dh: 0, s: hsl.s, l: hsl.l },
|
|
303
|
+
{ dh: 32, s: hsl.s * 0.9, l: clamp(hsl.l + 8, 32, 74) },
|
|
304
|
+
{ dh: -28, s: hsl.s * 0.95, l: clamp(hsl.l - 8, 28, 70) },
|
|
305
|
+
{ dh: 64, s: hsl.s * 0.82, l: clamp(hsl.l + 15, 38, 80) },
|
|
306
|
+
{ dh: -58, s: hsl.s, l: clamp(hsl.l - 16, 24, 66) },
|
|
307
|
+
];
|
|
308
|
+
return defs.map((d) => rgbTriplet(hslToHex(hsl.h + d.dh, clamp(d.s, 24, 92), d.l)));
|
|
309
|
+
}
|
|
310
|
+
/** Emit the `:root` + `.dark` `--chart-1…5` block for a chart base color. */
|
|
311
|
+
export function generateChartCss(hex) {
|
|
312
|
+
const ramp = generateChartRamp(hex);
|
|
313
|
+
const vars = ramp.map((t, i) => `--chart-${i + 1}: ${t};`).join('\n ');
|
|
314
|
+
return `
|
|
315
|
+
:root {
|
|
316
|
+
${vars}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.dark {
|
|
320
|
+
${vars}
|
|
321
|
+
}
|
|
322
|
+
`;
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3V0aWxzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQVFILHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDbEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU87WUFDTCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM3QixDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPO1lBQ0wsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBUSxHQUFHLFdBQVc7SUFDNUQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN2RCxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEUsT0FBTyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNqRCxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVztJQUN6QyxPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVyxFQUFFLE9BQWU7SUFDdkQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFTLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFRRCw2RUFBNkU7QUFDN0UsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLE1BQU0sR0FBRyxH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QUM7SUFDNUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQ3RELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3JCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ25ILENBQUM7QUFFRCxxRkFBcUY7QUFDckYsTUFBTSxV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QUU7UUFDekQsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUN6RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtLQUNwRCxDQUFDO0lBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUUsT0FBTzs7VUFFQyxJQUFJOzs7O1VBSUosSUFBSTs7S0FFVCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVyZSBjb2xvciArIHRoZW1lLXRva2VuIG1hdGggZm9yIFRvbGxlIFVJLlxuICpcbiAqIEZyYW1ld29yay0gYW5kIERPTS1mcmVlIHNvIGl0IGNhbiBiYWNrIGJvdGggdGhlIHJ1bnRpbWUgYFRoZW1lU2VydmljZWAgYW5kIGFcbiAqIGJ1aWxkLXRpbWUgdGhlbWUgZ2VuZXJhdG9yICh0aGUgc2hhZGNuLXN0eWxlIFwiY29weSB0aGlzIENTUyBibG9ja1wiIGZsb3cpLCBhbmRcbiAqIHRvIGNlbnRyYWxpemUgdGhlIG1hdGggYWhlYWQgb2YgYSBmdXR1cmUgb2tsY2ggbWlncmF0aW9uLiBObyBzaWRlIGVmZmVjdHMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBSZ2Ige1xuICByOiBudW1iZXI7XG4gIGc6IG51bWJlcjtcbiAgYjogbnVtYmVyO1xufVxuXG4vKiogUGFyc2UgYSAjUkdCIG9yICNSUkdHQkIgaGV4IHN0cmluZyB0byBSR0IsIG9yIG51bGwgaWYgbWFsZm9ybWVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogUmdiIHwgbnVsbCB7XG4gIGNvbnN0IGMgPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgaWYgKGMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHI6IHBhcnNlSW50KGNbMF0gKyBjWzBdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChjWzFdICsgY1sxXSwgMTYpLFxuICAgICAgYjogcGFyc2VJbnQoY1syXSArIGNbMl0sIDE2KSxcbiAgICB9O1xuICB9XG4gIGlmIChjLmxlbmd0aCA9PT0gNikge1xuICAgIHJldHVybiB7XG4gICAgICByOiBwYXJzZUludChjLnN1YnN0cmluZygwLCAyKSwgMTYpLFxuICAgICAgZzogcGFyc2VJbnQoYy5zdWJzdHJpbmcoMiwgNCksIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KGMuc3Vic3RyaW5nKDQsIDYpLCAxNiksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIFNwYWNlLXNlcGFyYXRlZCBSR0IgdHJpcGxldCBmb3IgYSBoZXggY29sb3IgKFRhaWx3aW5kIGA8YWxwaGEtdmFsdWU+YCBmb3JtKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUcmlwbGV0KGhleDogc3RyaW5nLCBmYWxsYmFjayA9ICczNyA5OSAyMzUnKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgcmV0dXJuIHJnYiA/IGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWAgOiBmYWxsYmFjaztcbn1cblxuLyoqIEJsYWNrIG9yIHdoaXRlLCB3aGljaGV2ZXIgY29udHJhc3RzIGJldHRlciB3aXRoIHRoZSBnaXZlbiBjb2xvci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFzdENvbG9yKGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgaWYgKCFyZ2IpIHJldHVybiAnI2ZmZmZmZic7XG4gIGNvbnN0IGx1bWluYW5jZSA9ICgwLjI5OSAqIHJnYi5yICsgMC41ODcgKiByZ2IuZyArIDAuMTE0ICogcmdiLmIpIC8gMjU1O1xuICByZXR1cm4gbHVtaW5hbmNlID4gMC41ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xufVxuXG4vKiogQ29udHJhc3QgY29sb3IgYXMgYW4gUkdCIHRyaXBsZXQgKGZvciBgLS1wcmltYXJ5LWZvcmVncm91bmRgKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250cmFzdFRyaXBsZXQoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmdiVHJpcGxldChnZXRDb250cmFzdENvbG9yKGhleCksICcyNTUgMjU1IDI1NScpO1xufVxuXG4vKiogTGlnaHRlbiBhIGhleCBjb2xvciB0b3dhcmQgd2hpdGUgYnkgYHBlcmNlbnRgICgw4oCTMTAwKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWdodGVuQ29sb3IoaGV4OiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHJnYiA9IGhleFRvUmdiKGhleCk7XG4gIGlmICghcmdiKSByZXR1cm4gaGV4O1xuICBjb25zdCByID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5yICsgKDI1NSAtIHJnYi5yKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICBjb25zdCBnID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5nICsgKDI1NSAtIHJnYi5nKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICBjb25zdCBiID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5iICsgKDI1NSAtIHJnYi5iKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICByZXR1cm4gYCMkeygoMSA8PCAyNCkgKyAociA8PCAxNikgKyAoZyA8PCA4KSArIGIpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX1gO1xufVxuXG5mdW5jdGlvbiBjbGFtcChuOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgbikpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhzbCB7XG4gIGg6IG51bWJlcjtcbiAgczogbnVtYmVyO1xuICBsOiBudW1iZXI7XG59XG5cbi8qKiBDb252ZXJ0IGEgaGV4IGNvbG9yIHRvIEhTTCAoaCAw4oCTMzYwLCBzL2wgMOKAkzEwMCksIG9yIG51bGwgaWYgbWFsZm9ybWVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvSHNsKGhleDogc3RyaW5nKTogSHNsIHwgbnVsbCB7XG4gIGNvbnN0IHJnYiA9IGhleFRvUmdiKGhleCk7XG4gIGlmICghcmdiKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgciA9IHJnYi5yIC8gMjU1LFxuICAgIGcgPSByZ2IuZyAvIDI1NSxcbiAgICBiID0gcmdiLmIgLyAyNTU7XG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLFxuICAgIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCA9IDA7XG4gIGxldCBzID0gMDtcbiAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKG1heCAhPT0gbWluKSB7XG4gICAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgICBzID0gbCA+IDAuNSA/IGQgLyAoMiAtIG1heCAtIG1pbikgOiBkIC8gKG1heCArIG1pbik7XG4gICAgc3dpdGNoIChtYXgpIHtcbiAgICAgIGNhc2UgcjpcbiAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZzpcbiAgICAgICAgaCA9IChiIC0gcikgLyBkICsgMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0O1xuICAgIH1cbiAgICBoIC89IDY7XG4gIH1cbiAgcmV0dXJuIHsgaDogaCAqIDM2MCwgczogcyAqIDEwMCwgbDogbCAqIDEwMCB9O1xufVxuXG4vKiogQ29udmVydCBIU0wgKGggMOKAkzM2MCwgcy9sIDDigJMxMDApIHRvIGEgI1JSR0dCQiBoZXggc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhzbFRvSGV4KGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpOiBzdHJpbmcge1xuICBoID0gKChoICUgMzYwKSArIDM2MCkgJSAzNjAgLyAzNjA7XG4gIHMgPSBjbGFtcChzLCAwLCAxMDApIC8gMTAwO1xuICBsID0gY2xhbXAobCwgMCwgMTAwKSAvIDEwMDtcbiAgY29uc3QgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgaWYgKHQgPiAxKSB0IC09IDE7XG4gICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIHJldHVybiBwO1xuICB9O1xuICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcjtcbiAgaWYgKHMgPT09IDApIHtcbiAgICByID0gZyA9IGIgPSBsO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgIGNvbnN0IHAgPSAyICogbCAtIHE7XG4gICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICBnID0gaHVlMnJnYihwLCBxLCBoKTtcbiAgICBiID0gaHVlMnJnYihwLCBxLCBoIC0gMSAvIDMpO1xuICB9XG4gIGNvbnN0IHRvID0gKHg6IG51bWJlcikgPT4gTWF0aC5yb3VuZCh4ICogMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgcmV0dXJuIGAjJHt0byhyKX0ke3RvKGcpfSR7dG8oYil9YDtcbn1cblxuLyoqIERhcmtlbiBhIGhleCBjb2xvciB0b3dhcmQgYmxhY2sgYnkgYHBlcmNlbnRgICgw4oCTMTAwKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXJrZW5Db2xvcihoZXg6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgaWYgKCFyZ2IpIHJldHVybiBoZXg7XG4gIGNvbnN0IGZhY3RvciA9IDEgLSBwZXJjZW50IC8gMTAwO1xuICBjb25zdCByID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuciAqIGZhY3RvcikpO1xuICBjb25zdCBnID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuZyAqIGZhY3RvcikpO1xuICBjb25zdCBiID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuYiAqIGZhY3RvcikpO1xuICByZXR1cm4gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xufVxuXG4vKiogRGVyaXZlZCByYWRpdXMgc2NhbGUgZnJvbSBhIGJhc2UgcmFkaXVzIChlLmcuICcwLjVyZW0nKSwgb3IgbnVsbCBpZiBtYWxmb3JtZWQuICovXG5leHBvcnQgZnVuY3Rpb24gcmFkaXVzU2NhbGUocmFkaXVzOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCB7XG4gIGNvbnN0IG0gPSByYWRpdXMubWF0Y2goL14oXFxkKlxcLj9cXGQrKShbYS16XSt8JSkkLyk7XG4gIGlmICghbSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG4gPSBwYXJzZUZsb2F0KG1bMV0pO1xuICBjb25zdCB1ID0gbVsyXTtcbiAgcmV0dXJuIHtcbiAgICAnLS1yYWRpdXMnOiByYWRpdXMsXG4gICAgJy0tcmFkaXVzLXNtJzogYCR7biAqIDAuNX0ke3V9YCxcbiAgICAnLS1yYWRpdXMtbWQnOiBgJHtufSR7dX1gLFxuICAgICctLXJhZGl1cy1sZyc6IGAke24gKiAxLjV9JHt1fWAsXG4gICAgJy0tcmFkaXVzLXhsJzogYCR7biAqIDJ9JHt1fWAsXG4gICAgJy0tcmFkaXVzLTJ4bCc6IGAke24gKiAzfSR7dX1gLFxuICAgICctLXJhZGl1cy0zeGwnOiBgJHtuICogNH0ke3V9YCxcbiAgICAnLS1yYWRpdXMtZnVsbCc6ICc5OTk5cHgnLFxuICB9O1xufVxuXG4vKiogT3B0aW9uYWwgdHlwb2dyYXBoeSBzdGFja3MgZm9yIHRoZSB0aGVtZSBnZW5lcmF0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvbnRUb2tlbnMge1xuICBzYW5zPzogc3RyaW5nO1xuICBzZXJpZj86IHN0cmluZztcbiAgbW9ubz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSB0aGUgYDpyb290YCArIGAuZGFya2AgQ1NTIGN1c3RvbS1wcm9wZXJ0eSBibG9jayBmb3IgYSBwcmltYXJ5IGNvbG9yXG4gKiAoZnVsbCA1MOKAkzkwMCByYW1wLCBjb250cmFzdCBmb3JlZ3JvdW5kLCBmb2N1cyByaW5nLCBhbmQgcmFkaXVzIHNjYWxlKS4gVGhpcyBpc1xuICogdGhlIHRoZW1lLWdlbmVyYXRvciBlbmdpbmUg4oCUIGlkZW50aWNhbCB0byB3aGF0IGBUaGVtZVNlcnZpY2VgIGluamVjdHMgYXQgcnVudGltZSxcbiAqIGFuZCBzdWl0YWJsZSBmb3IgZW1pdHRpbmcgYSBjb3B5LXBhc3RlIGJsb2NrIGEgY29uc3VtZXIgY2FuIGNvbW1pdC5cbiAqXG4gKiBQYXNzIGBmb250c2AgdG8gYWxzbyBlbWl0IGAtLWZvbnQtc2Fuc2AgLyBgLS1mb250LXNlcmlmYCAvIGAtLWZvbnQtbW9ub2AgKHRoZXlcbiAqIGRvIG5vdCB2YXJ5IGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHNvIHRoZXkgbGFuZCBpbiBgOnJvb3RgIG9ubHkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUaGVtZUNzcyhwcmltYXJ5SGV4OiBzdHJpbmcsIHJhZGl1cyA9ICcwLjVyZW0nLCBmb250cz86IEZvbnRUb2tlbnMpOiBzdHJpbmcge1xuICBjb25zdCBiYXNlID0gcmdiVHJpcGxldChwcmltYXJ5SGV4KTtcbiAgY29uc3QgcmluZ0xpZ2h0ID0gcmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNDApLCAnOTYgMTY1IDI1MCcpO1xuICBjb25zdCByaW5nRGFyayA9IHJnYlRyaXBsZXQobGlnaHRlbkNvbG9yKHByaW1hcnlIZXgsIDIwKSwgJzE0NyAxOTcgMjUzJyk7XG4gIGNvbnN0IGZnID0gY29udHJhc3RUcmlwbGV0KHByaW1hcnlIZXgpO1xuXG4gIGNvbnN0IHNjYWxlID0gcmFkaXVzU2NhbGUocmFkaXVzKTtcbiAgY29uc3QgcmFkaXVzVmFycyA9IHNjYWxlXG4gICAgPyBPYmplY3QuZW50cmllcyhzY2FsZSlcbiAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfTogJHt2fTtgKVxuICAgICAgICAuam9pbignXFxuICAgICAgICAnKVxuICAgIDogYC0tcmFkaXVzOiAke3JhZGl1c307YDtcblxuICBjb25zdCBmb250VmFycyA9IGZvbnRzXG4gICAgPyBbXG4gICAgICAgIGZvbnRzLnNhbnMgPyBgLS1mb250LXNhbnM6ICR7Zm9udHMuc2Fuc307YCA6ICcnLFxuICAgICAgICBmb250cy5zZXJpZiA/IGAtLWZvbnQtc2VyaWY6ICR7Zm9udHMuc2VyaWZ9O2AgOiAnJyxcbiAgICAgICAgZm9udHMubW9ubyA/IGAtLWZvbnQtbW9ubzogJHtmb250cy5tb25vfTtgIDogJycsXG4gICAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJ1xcbiAgICAgICAgJylcbiAgICA6ICcnO1xuXG4gIHJldHVybiBgXG4gICAgICA6cm9vdCB7XG4gICAgICAgIC0tcHJpbWFyeTogJHtiYXNlfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7Zmd9O1xuICAgICAgICAke3JhZGl1c1ZhcnN9JHtmb250VmFycyA/ICdcXG4gICAgICAgICcgKyBmb250VmFycyA6ICcnfVxuICAgICAgICAtLXByaW1hcnktNTA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgOTApKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgODApKX07XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNDApKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgMjApKX07XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZX07XG4gICAgICAgIC0tcHJpbWFyeS02MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHtyZ2JUcmlwbGV0KGRhcmtlbkNvbG9yKHByaW1hcnlIZXgsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktODAwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS05MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA4MCkpfTtcbiAgICAgICAgLS1yaW5nOiAke3JpbmdMaWdodH07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIHtcbiAgICAgICAgLS1wcmltYXJ5OiAke2Jhc2V9O1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogJHtmZ307XG4gICAgICAgICR7cmFkaXVzVmFyc31cbiAgICAgICAgLS1wcmltYXJ5LTUwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgODUpKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA3NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTIwMDogJHtyZ2JUcmlwbGV0KGRhcmtlbkNvbG9yKHByaW1hcnlIZXgsIDY1KSl9O1xuICAgICAgICAtLXByaW1hcnktMzAwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgNTUpKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA0NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTUwMDogJHtiYXNlfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCAzNSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCA1MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCA2NSkpfTtcbiAgICAgICAgLS1yaW5nOiAke3JpbmdEYXJrfTtcbiAgICAgIH1cbiAgICBgO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogQmFzZSAobmV1dHJhbCkgY29sb3IgZmFtaWxpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBUaGUgbmV1dHJhbCBzdXJmYWNlL2ZvcmVncm91bmQgdG9rZW5zIGEgYmFzZSBjb2xvciBkcml2ZXMgKG9uZSBhcHBlYXJhbmNlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVRva2VucyB7XG4gIGJhY2tncm91bmQ6IHN0cmluZztcbiAgZm9yZWdyb3VuZDogc3RyaW5nO1xuICBjYXJkOiBzdHJpbmc7XG4gIGNhcmRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIHBvcG92ZXI6IHN0cmluZztcbiAgcG9wb3ZlckZvcmVncm91bmQ6IHN0cmluZztcbiAgbXV0ZWQ6IHN0cmluZztcbiAgbXV0ZWRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGFjY2VudDogc3RyaW5nO1xuICBhY2NlbnRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIHNlY29uZGFyeTogc3RyaW5nO1xuICBzZWNvbmRhcnlGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBpbnB1dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VQYWxldHRlIHtcbiAgbGlnaHQ6IEJhc2VUb2tlbnM7XG4gIGRhcms6IEJhc2VUb2tlbnM7XG59XG5cbi8qKiBCdWlsZCBhIGxpZ2h0K2RhcmsgbmV1dHJhbCBwYWxldHRlIGZyb20gYSBUYWlsd2luZC1zdHlsZSBzaGFkZSByYW1wLiAqL1xuZnVuY3Rpb24gbmV1dHJhbFBhbGV0dGUoczogUmVjb3JkPDUwIHwgMTAwIHwgMjAwIHwgNDAwIHwgNTAwIHwgODAwIHwgOTAwIHwgOTUwLCBzdHJpbmc+KTogQmFzZVBhbGV0dGUge1xuICByZXR1cm4ge1xuICAgIGxpZ2h0OiB7XG4gICAgICBiYWNrZ3JvdW5kOiAnMjU1IDI1NSAyNTUnLFxuICAgICAgZm9yZWdyb3VuZDogc1s5NTBdLFxuICAgICAgY2FyZDogJzI1NSAyNTUgMjU1JyxcbiAgICAgIGNhcmRGb3JlZ3JvdW5kOiBzWzk1MF0sXG4gICAgICBwb3BvdmVyOiAnMjU1IDI1NSAyNTUnLFxuICAgICAgcG9wb3ZlckZvcmVncm91bmQ6IHNbOTUwXSxcbiAgICAgIG11dGVkOiBzWzEwMF0sXG4gICAgICBtdXRlZEZvcmVncm91bmQ6IHNbNTAwXSxcbiAgICAgIGFjY2VudDogc1sxMDBdLFxuICAgICAgYWNjZW50Rm9yZWdyb3VuZDogc1s5MDBdLFxuICAgICAgc2Vjb25kYXJ5OiBzWzEwMF0sXG4gICAgICBzZWNvbmRhcnlGb3JlZ3JvdW5kOiBzWzkwMF0sXG4gICAgICBib3JkZXI6IHNbMjAwXSxcbiAgICAgIGlucHV0OiBzWzIwMF0sXG4gICAgfSxcbiAgICBkYXJrOiB7XG4gICAgICBiYWNrZ3JvdW5kOiBzWzk1MF0sXG4gICAgICBmb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIGNhcmQ6IHNbOTUwXSxcbiAgICAgIGNhcmRGb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIHBvcG92ZXI6IHNbOTUwXSxcbiAgICAgIHBvcG92ZXJGb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIG11dGVkOiBzWzgwMF0sXG4gICAgICBtdXRlZEZvcmVncm91bmQ6IHNbNDAwXSxcbiAgICAgIGFjY2VudDogc1s4MDBdLFxuICAgICAgYWNjZW50Rm9yZWdyb3VuZDogc1s1MF0sXG4gICAgICBzZWNvbmRhcnk6IHNbODAwXSxcbiAgICAgIHNlY29uZGFyeUZvcmVncm91bmQ6IHNbNTBdLFxuICAgICAgYm9yZGVyOiBzWzgwMF0sXG4gICAgICBpbnB1dDogc1s4MDBdLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTmV1dHJhbCBiYXNlLWNvbG9yIGZhbWlsaWVzIChSR0IgdHJpcGxldHMpLCBtYXRjaGluZyBUYWlsd2luZCdzIFppbmMgLyBTbGF0ZSAvXG4gKiBHcmF5IC8gTmV1dHJhbCAvIFN0b25lIHJhbXBzLiBgemluY2AgcmVwcm9kdWNlcyB0aGUgbGlicmFyeSdzIHNoaXBwZWQgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBCQVNFX1BBTEVUVEVTOiBSZWNvcmQ8c3RyaW5nLCBCYXNlUGFsZXR0ZT4gPSB7XG4gIHppbmM6IG5ldXRyYWxQYWxldHRlKHsgNTA6ICcyNTAgMjUwIDI1MCcsIDEwMDogJzI0NCAyNDQgMjQ1JywgMjAwOiAnMjI4IDIyOCAyMzEnLCA0MDA6ICcxNjEgMTYxIDE3MCcsIDUwMDogJzExMyAxMTMgMTIyJywgODAwOiAnMzkgMzkgNDInLCA5MDA6ICcyNCAyNCAyNycsIDk1MDogJzkgOSAxMScgfSksXG4gIHNsYXRlOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjQ4IDI1MCAyNTInLCAxMDA6ICcyNDEgMjQ1IDI0OScsIDIwMDogJzIyNiAyMzIgMjQwJywgNDAwOiAnMTQ4IDE2MyAxODQnLCA1MDA6ICcxMDAgMTE2IDEzOScsIDgwMDogJzMwIDQxIDU5JywgOTAwOiAnMTUgMjMgNDInLCA5NTA6ICcyIDYgMjMnIH0pLFxuICBncmF5OiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjQ5IDI1MCAyNTEnLCAxMDA6ICcyNDMgMjQ0IDI0NicsIDIwMDogJzIyOSAyMzEgMjM1JywgNDAwOiAnMTU2IDE2MyAxNzUnLCA1MDA6ICcxMDcgMTE0IDEyOCcsIDgwMDogJzMxIDQxIDU1JywgOTAwOiAnMTcgMjQgMzknLCA5NTA6ICczIDcgMTgnIH0pLFxuICBuZXV0cmFsOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjUwIDI1MCAyNTAnLCAxMDA6ICcyNDUgMjQ1IDI0NScsIDIwMDogJzIyOSAyMjkgMjI5JywgNDAwOiAnMTYzIDE2MyAxNjMnLCA1MDA6ICcxMTUgMTE1IDExNScsIDgwMDogJzM4IDM4IDM4JywgOTAwOiAnMjMgMjMgMjMnLCA5NTA6ICcxMCAxMCAxMCcgfSksXG4gIHN0b25lOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjUwIDI1MCAyNDknLCAxMDA6ICcyNDUgMjQ1IDI0NCcsIDIwMDogJzIzMSAyMjkgMjI4JywgNDAwOiAnMTY4IDE2MiAxNTgnLCA1MDA6ICcxMjAgMTEzIDEwOCcsIDgwMDogJzQxIDM3IDM2JywgOTAwOiAnMjggMjUgMjMnLCA5NTA6ICcxMiAxMCA5JyB9KSxcbn07XG5cbmZ1bmN0aW9uIGJhc2VUb2tlbkJsb2NrKHQ6IEJhc2VUb2tlbnMpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICctLWJhY2tncm91bmQnOiB0LmJhY2tncm91bmQsXG4gICAgJy0tZm9yZWdyb3VuZCc6IHQuZm9yZWdyb3VuZCxcbiAgICAnLS1jYXJkJzogdC5jYXJkLFxuICAgICctLWNhcmQtZm9yZWdyb3VuZCc6IHQuY2FyZEZvcmVncm91bmQsXG4gICAgJy0tcG9wb3Zlcic6IHQucG9wb3ZlcixcbiAgICAnLS1wb3BvdmVyLWZvcmVncm91bmQnOiB0LnBvcG92ZXJGb3JlZ3JvdW5kLFxuICAgICctLW11dGVkJzogdC5tdXRlZCxcbiAgICAnLS1tdXRlZC1mb3JlZ3JvdW5kJzogdC5tdXRlZEZvcmVncm91bmQsXG4gICAgJy0tYWNjZW50JzogdC5hY2NlbnQsXG4gICAgJy0tYWNjZW50LWZvcmVncm91bmQnOiB0LmFjY2VudEZvcmVncm91bmQsXG4gICAgJy0tc2Vjb25kYXJ5JzogdC5zZWNvbmRhcnksXG4gICAgJy0tc2Vjb25kYXJ5LWZvcmVncm91bmQnOiB0LnNlY29uZGFyeUZvcmVncm91bmQsXG4gICAgJy0tYm9yZGVyJzogdC5ib3JkZXIsXG4gICAgJy0taW5wdXQnOiB0LmlucHV0LFxuICB9KVxuICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a306ICR7dn07YClcbiAgICAuam9pbignXFxuICAgICAgICAnKTtcbn1cblxuLyoqIEVtaXQgdGhlIGA6cm9vdGAgKyBgLmRhcmtgIG5ldXRyYWwtdG9rZW4gYmxvY2sgZm9yIGEgYmFzZSBjb2xvciBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUJhc2VDc3MoYmFzZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwID0gQkFTRV9QQUxFVFRFU1tiYXNlSWRdID8/IEJBU0VfUEFMRVRURVNbJ3ppbmMnXTtcbiAgcmV0dXJuIGBcbiAgICAgIDpyb290IHtcbiAgICAgICAgJHtiYXNlVG9rZW5CbG9jayhwLmxpZ2h0KX1cbiAgICAgIH1cblxuICAgICAgLmRhcmsge1xuICAgICAgICAke2Jhc2VUb2tlbkJsb2NrKHAuZGFyayl9XG4gICAgICB9XG4gICAgYDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIENoYXJ0IHBhbGV0dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIERlcml2ZSA1IGhhcm1vbmlvdXMgY2hhcnQgY29sb3JzIGZyb20gb25lIGJhc2UgaGV4IOKAlCB0aGUgYmFzZSBodWUgcGx1c1xuICogYW5hbG9nb3VzIGh1ZXMgYXQgwrEzMMKwL8KxNjDCsCwgd2l0aCBwYWlyZWQgbGlnaHRuZXNzIHNoaWZ0cyBmb3Igc2VwYXJhdGlvbi5cbiAqIFJldHVybnMgUkdCIHRyaXBsZXRzIGZvciBgLS1jaGFydC0xYOKApmAtLWNoYXJ0LTVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDaGFydFJhbXAoaGV4OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGhzbCA9IGhleFRvSHNsKGhleCkgPz8geyBoOiAyMjAsIHM6IDcwLCBsOiA1NSB9O1xuICBjb25zdCBkZWZzID0gW1xuICAgIHsgZGg6IDAsIHM6IGhzbC5zLCBsOiBoc2wubCB9LFxuICAgIHsgZGg6IDMyLCBzOiBoc2wucyAqIDAuOSwgbDogY2xhbXAoaHNsLmwgKyA4LCAzMiwgNzQpIH0sXG4gICAgeyBkaDogLTI4LCBzOiBoc2wucyAqIDAuOTUsIGw6IGNsYW1wKGhzbC5sIC0gOCwgMjgsIDcwKSB9LFxuICAgIHsgZGg6IDY0LCBzOiBoc2wucyAqIDAuODIsIGw6IGNsYW1wKGhzbC5sICsgMTUsIDM4LCA4MCkgfSxcbiAgICB7IGRoOiAtNTgsIHM6IGhzbC5zLCBsOiBjbGFtcChoc2wubCAtIDE2LCAyNCwgNjYpIH0sXG4gIF07XG4gIHJldHVybiBkZWZzLm1hcCgoZCkgPT4gcmdiVHJpcGxldChoc2xUb0hleChoc2wuaCArIGQuZGgsIGNsYW1wKGQucywgMjQsIDkyKSwgZC5sKSkpO1xufVxuXG4vKiogRW1pdCB0aGUgYDpyb290YCArIGAuZGFya2AgYC0tY2hhcnQtMeKApjVgIGJsb2NrIGZvciBhIGNoYXJ0IGJhc2UgY29sb3IuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDaGFydENzcyhoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJhbXAgPSBnZW5lcmF0ZUNoYXJ0UmFtcChoZXgpO1xuICBjb25zdCB2YXJzID0gcmFtcC5tYXAoKHQsIGkpID0+IGAtLWNoYXJ0LSR7aSArIDF9OiAke3R9O2ApLmpvaW4oJ1xcbiAgICAgICAgJyk7XG4gIHJldHVybiBgXG4gICAgICA6cm9vdCB7XG4gICAgICAgICR7dmFyc31cbiAgICAgIH1cblxuICAgICAgLmRhcmsge1xuICAgICAgICAke3ZhcnN9XG4gICAgICB9XG4gICAgYDtcbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Public API Surface of tolle
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/utils/cn';
|
|
5
|
+
export * from './lib/utils/color';
|
|
5
6
|
export * from './lib/button.component';
|
|
6
7
|
export * from './lib/input.component';
|
|
7
8
|
export * from './lib/card.component';
|
|
@@ -85,4 +86,4 @@ export * from './lib/phone-number.service';
|
|
|
85
86
|
export * from './lib/country-codes.service';
|
|
86
87
|
export * from './lib/resizable-panel.component';
|
|
87
88
|
export * from './lib/resizable-panel-item.component';
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsbUNBQW1DLENBQUE7QUFDakQsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRvbGxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY29sb3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3Qtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zd2l0Y2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za2VsZXRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZy1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9vbHRpcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9hc3Quc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvYXN0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvbGxlLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tdWx0aS1zZWxlY3QuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FsZW5kYXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS10YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2xsZS1jZWxsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY29yZGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC1yZWYnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwtc3RhY2suc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLWdyb3VwLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhbmdlLWNhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RoZW1lLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1sYWJlbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1tZW51LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLXNlcGFyYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsZXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F2YXRhci1mYWxsYmFjay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmVhZGNydW1iLXNlcGFyYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vdHAtc2xvdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RwLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3BvdmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wb3BvdmVyLWNvbnRlbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYWRpby1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWdtZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWRlYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJvdXNlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYWJlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9ncmVzcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2xpZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2dnbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvZ2dsZS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaG92ZXItY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFicy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sbGFwc2libGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Njcm9sbC1hcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsZXJ0LWRpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsZXJ0LWRpYWxvZy50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoZWV0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlZXQtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoZWV0LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoZWV0LXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvdW50cnktc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Bob25lLW51bWJlci1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGhvbmUtbnVtYmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY291bnRyeS1jb2Rlcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc2l6YWJsZS1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzaXphYmxlLXBhbmVsLWl0ZW0uY29tcG9uZW50JzsiXX0=
|