@tolle_/tolle-ui 18.2.29 → 18.2.30
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 +5 -11
- package/esm2022/lib/accordion.component.mjs +4 -9
- package/esm2022/lib/alert-dialog-dynamic.component.mjs +5 -10
- package/esm2022/lib/alert-dialog.component.mjs +44 -59
- package/esm2022/lib/alert.component.mjs +5 -11
- package/esm2022/lib/aspect-ratio.component.mjs +119 -0
- package/esm2022/lib/attachment.component.mjs +334 -0
- package/esm2022/lib/avatar-fallback.component.mjs +3 -3
- package/esm2022/lib/avatar.component.mjs +4 -9
- package/esm2022/lib/badge.component.mjs +4 -9
- package/esm2022/lib/breadcrumb-item.component.mjs +3 -3
- package/esm2022/lib/breadcrumb-link.component.mjs +3 -3
- package/esm2022/lib/breadcrumb-separator.component.mjs +3 -3
- package/esm2022/lib/breadcrumb.component.mjs +3 -3
- package/esm2022/lib/bubble.component.mjs +301 -0
- package/esm2022/lib/button.component.mjs +5 -11
- package/esm2022/lib/calendar.component.mjs +5 -11
- package/esm2022/lib/card.component.mjs +14 -43
- package/esm2022/lib/carousel/carousel.component.mjs +5 -12
- package/esm2022/lib/chain-of-thought.component.mjs +380 -0
- package/esm2022/lib/chart-pie.component.mjs +386 -0
- package/esm2022/lib/chart.component.mjs +1146 -0
- package/esm2022/lib/chart.service.mjs +555 -0
- package/esm2022/lib/checkbox.component.mjs +5 -11
- package/esm2022/lib/checkpoint.component.mjs +134 -0
- package/esm2022/lib/collapsible.component.mjs +4 -11
- package/esm2022/lib/combobox.component.mjs +372 -0
- package/esm2022/lib/command-dialog.component.mjs +164 -0
- package/esm2022/lib/command.component.mjs +514 -0
- package/esm2022/lib/command.service.mjs +130 -0
- package/esm2022/lib/confirmation.component.mjs +219 -0
- package/esm2022/lib/context-menu-trigger.directive.mjs +36 -0
- package/esm2022/lib/context-menu.component.mjs +460 -0
- package/esm2022/lib/context-menu.service.mjs +121 -0
- package/esm2022/lib/context.component.mjs +377 -0
- package/esm2022/lib/conversation.component.mjs +442 -0
- package/esm2022/lib/country-selector.component.mjs +5 -11
- package/esm2022/lib/data-table.component.mjs +59 -12
- package/esm2022/lib/date-picker.component.mjs +251 -198
- package/esm2022/lib/date-range-picker.component.mjs +224 -116
- package/esm2022/lib/date-time-picker.component.mjs +506 -0
- package/esm2022/lib/direction.component.mjs +79 -0
- package/esm2022/lib/dropdown-item.component.mjs +3 -3
- 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 +6 -4
- package/esm2022/lib/empty-state.component.mjs +4 -9
- package/esm2022/lib/field.component.mjs +394 -0
- package/esm2022/lib/hover-card.component.mjs +6 -16
- package/esm2022/lib/inline-citation.component.mjs +263 -0
- package/esm2022/lib/input-group.component.mjs +418 -0
- package/esm2022/lib/input.component.mjs +5 -11
- package/esm2022/lib/item.component.mjs +243 -0
- package/esm2022/lib/kbd.component.mjs +82 -0
- package/esm2022/lib/label.component.mjs +4 -9
- package/esm2022/lib/marker.component.mjs +135 -0
- package/esm2022/lib/masked-input.component.mjs +5 -11
- package/esm2022/lib/menubar.component.mjs +683 -0
- package/esm2022/lib/message-scroller.component.mjs +353 -0
- package/esm2022/lib/message-scroller.service.mjs +157 -0
- package/esm2022/lib/message.component.mjs +228 -0
- package/esm2022/lib/model-selector.component.mjs +310 -0
- package/esm2022/lib/multi-select.component.mjs +155 -72
- package/esm2022/lib/native-select.component.mjs +201 -0
- package/esm2022/lib/navigation-menu.component.mjs +642 -0
- package/esm2022/lib/otp-group.component.mjs +3 -3
- package/esm2022/lib/otp-slot.component.mjs +4 -9
- package/esm2022/lib/otp.component.mjs +5 -11
- package/esm2022/lib/pagination.component.mjs +7 -10
- package/esm2022/lib/plan.component.mjs +335 -0
- package/esm2022/lib/popover-content.component.mjs +4 -9
- package/esm2022/lib/popover.component.mjs +15 -13
- package/esm2022/lib/progress.component.mjs +4 -9
- package/esm2022/lib/prompt-input.component.mjs +526 -0
- package/esm2022/lib/queue.component.mjs +280 -0
- package/esm2022/lib/radio-group.component.mjs +6 -13
- package/esm2022/lib/radio-item.component.mjs +4 -9
- package/esm2022/lib/range-calendar.component.mjs +5 -11
- package/esm2022/lib/reasoning.component.mjs +335 -0
- package/esm2022/lib/resizable.component.mjs +219 -0
- package/esm2022/lib/segment.component.mjs +17 -7
- package/esm2022/lib/select-group.component.mjs +4 -8
- package/esm2022/lib/select-item.component.mjs +4 -9
- package/esm2022/lib/select-separator.component.mjs +4 -8
- package/esm2022/lib/select.component.mjs +133 -49
- package/esm2022/lib/separator.component.mjs +4 -9
- package/esm2022/lib/sheet.component.mjs +38 -56
- package/esm2022/lib/shimmer.component.mjs +84 -0
- package/esm2022/lib/sidebar.component.mjs +11 -1
- package/esm2022/lib/skeleton.component.mjs +4 -9
- package/esm2022/lib/sources.component.mjs +452 -0
- package/esm2022/lib/spinner.component.mjs +68 -0
- package/esm2022/lib/suggestion.component.mjs +207 -0
- package/esm2022/lib/switch.component.mjs +5 -11
- package/esm2022/lib/table.component.mjs +213 -0
- package/esm2022/lib/tabs.component.mjs +4 -11
- package/esm2022/lib/tag-input.component.mjs +5 -11
- package/esm2022/lib/task.component.mjs +359 -0
- package/esm2022/lib/textarea.component.mjs +5 -11
- package/esm2022/lib/theme.service.mjs +17 -6
- package/esm2022/lib/time-picker.component.mjs +923 -0
- package/esm2022/lib/toast.service.mjs +3 -2
- package/esm2022/lib/toaster.component.mjs +76 -39
- package/esm2022/lib/toggle-group.component.mjs +4 -9
- package/esm2022/lib/toggle.component.mjs +5 -11
- package/esm2022/lib/tool.component.mjs +462 -0
- package/esm2022/lib/typography.component.mjs +83 -0
- package/esm2022/lib/utils/color.mjs +140 -19
- package/esm2022/public-api.mjs +61 -1
- package/fesm2022/tolle-ui.mjs +16453 -1024
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/alert-dialog.component.d.ts +10 -2
- package/lib/aspect-ratio.component.d.ts +20 -0
- package/lib/attachment.component.d.ts +101 -0
- package/lib/bubble.component.d.ts +112 -0
- package/lib/chain-of-thought.component.d.ts +166 -0
- package/lib/chart-pie.component.d.ts +108 -0
- package/lib/chart.component.d.ts +369 -0
- package/lib/chart.service.d.ts +222 -0
- package/lib/checkpoint.component.d.ts +51 -0
- package/lib/combobox.component.d.ts +90 -0
- package/lib/command-dialog.component.d.ts +53 -0
- package/lib/command.component.d.ts +189 -0
- package/lib/command.service.d.ts +67 -0
- package/lib/confirmation.component.d.ts +70 -0
- package/lib/context-menu-trigger.directive.d.ts +12 -0
- package/lib/context-menu.component.d.ts +41 -0
- package/lib/context-menu.service.d.ts +38 -0
- package/lib/context.component.d.ts +134 -0
- package/lib/conversation.component.d.ts +165 -0
- package/lib/data-table.component.d.ts +26 -1
- package/lib/date-picker.component.d.ts +72 -11
- package/lib/date-range-picker.component.d.ts +63 -6
- package/lib/date-time-picker.component.d.ts +119 -0
- package/lib/direction.component.d.ts +45 -0
- package/lib/field.component.d.ts +201 -0
- package/lib/inline-citation.component.d.ts +103 -0
- package/lib/input-group.component.d.ts +150 -0
- package/lib/item.component.d.ts +154 -0
- package/lib/kbd.component.d.ts +50 -0
- package/lib/marker.component.d.ts +58 -0
- package/lib/menubar.component.d.ts +247 -0
- package/lib/message-scroller.component.d.ts +159 -0
- package/lib/message-scroller.service.d.ts +73 -0
- package/lib/message.component.d.ts +128 -0
- package/lib/model-selector.component.d.ts +103 -0
- package/lib/multi-select.component.d.ts +66 -14
- package/lib/native-select.component.d.ts +57 -0
- package/lib/navigation-menu.component.d.ts +230 -0
- package/lib/plan.component.d.ts +120 -0
- package/lib/popover.component.d.ts +1 -0
- package/lib/prompt-input.component.d.ts +194 -0
- package/lib/queue.component.d.ts +106 -0
- package/lib/reasoning.component.d.ts +127 -0
- package/lib/resizable.component.d.ts +43 -0
- package/lib/segment.component.d.ts +13 -3
- package/lib/select.component.d.ts +37 -5
- package/lib/sheet.component.d.ts +3 -0
- package/lib/shimmer.component.d.ts +38 -0
- package/lib/sidebar.component.d.ts +2 -0
- package/lib/sources.component.d.ts +156 -0
- package/lib/spinner.component.d.ts +29 -0
- package/lib/suggestion.component.d.ts +96 -0
- package/lib/table.component.d.ts +106 -0
- package/lib/task.component.d.ts +151 -0
- package/lib/theme.service.d.ts +9 -0
- package/lib/time-picker.component.d.ts +243 -0
- package/lib/toast.service.d.ts +3 -1
- package/lib/toaster.component.d.ts +26 -9
- package/lib/tool.component.d.ts +158 -0
- package/lib/typography.component.d.ts +32 -0
- package/lib/utils/color.d.ts +19 -5
- package/package.json +1 -1
- package/public-api.d.ts +50 -0
- package/registry/docs-content.json +8480 -1542
- package/registry/llms-full.txt +2679 -319
- package/registry/llms.txt +43 -4
- package/registry/manifest.json +9090 -1742
- package/registry/r/accordion-item.json +1 -1
- package/registry/r/accordion.json +1 -1
- package/registry/r/alert-dialog-dynamic.json +1 -1
- package/registry/r/alert-dialog.json +1 -1
- package/registry/r/alert.json +1 -1
- package/registry/r/attachment.json +23 -0
- package/registry/r/avatar-fallback.json +1 -1
- package/registry/r/avatar.json +1 -1
- package/registry/r/badge.json +1 -1
- package/registry/r/breadcrumb-item.json +1 -1
- package/registry/r/breadcrumb-link.json +1 -1
- package/registry/r/breadcrumb-separator.json +1 -1
- package/registry/r/breadcrumb.json +1 -1
- package/registry/r/bubble.json +23 -0
- package/registry/r/button.json +1 -1
- package/registry/r/calendar.json +1 -1
- package/registry/r/card.json +1 -1
- package/registry/r/carousel.json +1 -1
- package/registry/r/chain-of-thought.json +23 -0
- package/registry/r/chart-pie.json +30 -0
- package/registry/r/chart.json +28 -0
- package/registry/r/checkbox.json +1 -1
- package/registry/r/checkpoint.json +23 -0
- package/registry/r/collapsible.json +1 -1
- package/registry/r/combobox.json +31 -0
- package/registry/r/command-dialog.json +21 -0
- package/registry/r/command.json +26 -0
- package/registry/r/confirmation.json +23 -0
- package/registry/r/context.json +26 -0
- package/registry/r/conversation.json +23 -0
- package/registry/r/country-selector.json +1 -1
- package/registry/r/data-table.json +1 -1
- package/registry/r/date-picker.json +4 -4
- package/registry/r/date-range-picker.json +3 -3
- package/registry/r/date-time-picker.json +28 -0
- package/registry/r/direction.json +16 -0
- package/registry/r/dropdown-item.json +1 -1
- package/registry/r/dropdown-label.json +1 -1
- package/registry/r/dropdown-menu.json +1 -1
- package/registry/r/dropdown-separator.json +1 -1
- package/registry/r/dropdown-trigger.json +1 -1
- package/registry/r/empty-state.json +1 -1
- package/registry/r/field.json +23 -0
- package/registry/r/hover-card.json +1 -1
- package/registry/r/inline-citation.json +26 -0
- package/registry/r/input-group.json +23 -0
- package/registry/r/input.json +1 -1
- package/registry/r/item.json +23 -0
- package/registry/r/kbd.json +23 -0
- package/registry/r/label.json +1 -1
- package/registry/r/marker.json +23 -0
- package/registry/r/masked-input.json +1 -1
- package/registry/r/menubar.json +24 -0
- package/registry/r/message-scroller.json +26 -0
- package/registry/r/message.json +23 -0
- package/registry/r/model-selector.json +32 -0
- package/registry/r/multi-select.json +2 -2
- package/registry/r/native-select.json +23 -0
- package/registry/r/navigation-menu.json +24 -0
- package/registry/r/otp-group.json +1 -1
- package/registry/r/otp-slot.json +1 -1
- package/registry/r/otp.json +1 -1
- package/registry/r/pagination.json +3 -2
- package/registry/r/plan.json +23 -0
- package/registry/r/popover-content.json +1 -1
- package/registry/r/popover.json +1 -1
- package/registry/r/progress.json +1 -1
- package/registry/r/prompt-input.json +23 -0
- package/registry/r/queue.json +23 -0
- package/registry/r/radio-group.json +1 -1
- package/registry/r/radio-item.json +1 -1
- package/registry/r/range-calendar.json +1 -1
- package/registry/r/reasoning.json +23 -0
- package/registry/r/segment.json +1 -1
- package/registry/r/select-group.json +1 -1
- package/registry/r/select-item.json +1 -1
- package/registry/r/select-separator.json +1 -1
- package/registry/r/select.json +4 -3
- package/registry/r/separator.json +1 -1
- package/registry/r/sheet.json +1 -1
- package/registry/r/shimmer.json +23 -0
- package/registry/r/sidebar.json +1 -1
- package/registry/r/skeleton.json +1 -1
- package/registry/r/sources.json +23 -0
- package/registry/r/spinner.json +23 -0
- package/registry/r/suggestion.json +23 -0
- package/registry/r/switch.json +1 -1
- package/registry/r/table.json +21 -0
- package/registry/r/tabs.json +1 -1
- package/registry/r/tag-input.json +1 -1
- package/registry/r/task.json +23 -0
- package/registry/r/textarea.json +1 -1
- package/registry/r/time-picker.json +24 -0
- package/registry/r/toaster.json +2 -2
- package/registry/r/toggle-group.json +1 -1
- package/registry/r/toggle.json +1 -1
- package/registry/r/tool.json +23 -0
- package/registry/r/typography.json +23 -0
- package/registry/registry.json +915 -22
- package/theme.css +109 -8
|
@@ -291,34 +291,155 @@ export function generateBaseCss(baseId) {
|
|
|
291
291
|
/* -------------------------------------------------------------------------- */
|
|
292
292
|
/* Chart palette */
|
|
293
293
|
/* -------------------------------------------------------------------------- */
|
|
294
|
+
/* --- OKLab/OKLCH helpers -----------------------------------------------------
|
|
295
|
+
* Chart steps are placed in OKLCH, not HSL. HSL "lightness" is not perceptual:
|
|
296
|
+
* HSL 71% on a yellow reads as OKLab L 0.86 while the same 71% on a blue reads
|
|
297
|
+
* ~0.55, so an HSL-based ramp silently produces steps that are far too light to
|
|
298
|
+
* sit alongside the others. Working in OKLCH lets us set perceived lightness and
|
|
299
|
+
* colourfulness directly.
|
|
300
|
+
* -------------------------------------------------------------------------- */
|
|
301
|
+
const srgbToLinear = (c) => (c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4));
|
|
302
|
+
const linearToSrgb = (c) => (c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055);
|
|
303
|
+
/** sRGB hex → OKLCH (L 0–1, C chroma, h degrees). */
|
|
304
|
+
function hexToOklch(hex) {
|
|
305
|
+
const r = srgbToLinear(parseInt(hex.slice(1, 3), 16) / 255);
|
|
306
|
+
const g = srgbToLinear(parseInt(hex.slice(3, 5), 16) / 255);
|
|
307
|
+
const b = srgbToLinear(parseInt(hex.slice(5, 7), 16) / 255);
|
|
308
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
|
|
309
|
+
const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
|
|
310
|
+
const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
311
|
+
const A = 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s;
|
|
312
|
+
const B = 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s;
|
|
313
|
+
return {
|
|
314
|
+
L: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
315
|
+
C: Math.hypot(A, B),
|
|
316
|
+
h: (Math.atan2(B, A) * 180) / Math.PI,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
function oklchToLinearRgb(L, C, hDeg) {
|
|
320
|
+
const h = (hDeg * Math.PI) / 180;
|
|
321
|
+
const A = C * Math.cos(h);
|
|
322
|
+
const B = C * Math.sin(h);
|
|
323
|
+
const l = (L + 0.3963377774 * A + 0.2158037573 * B) ** 3;
|
|
324
|
+
const m = (L - 0.1055613458 * A - 0.0638541728 * B) ** 3;
|
|
325
|
+
const s = (L - 0.0894841775 * A - 1.291485548 * B) ** 3;
|
|
326
|
+
return [
|
|
327
|
+
4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
|
|
328
|
+
-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
|
|
329
|
+
-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,
|
|
330
|
+
];
|
|
331
|
+
}
|
|
332
|
+
const inSrgbGamut = (rgb) => rgb.every((c) => c >= -0.0001 && c <= 1.0001);
|
|
333
|
+
/** Largest chroma this lightness/hue can carry inside sRGB. */
|
|
334
|
+
function maxChroma(L, h) {
|
|
335
|
+
let c = 0.4;
|
|
336
|
+
while (c > 0.001 && !inSrgbGamut(oklchToLinearRgb(L, c, h)))
|
|
337
|
+
c -= 0.004;
|
|
338
|
+
return c;
|
|
339
|
+
}
|
|
340
|
+
/** OKLCH → hex, reducing chroma to fit sRGB while preserving lightness and hue. */
|
|
341
|
+
function oklchToHex(L, C, h) {
|
|
342
|
+
const c = Math.min(C, maxChroma(L, h));
|
|
343
|
+
const [r, g, b] = oklchToLinearRgb(L, c, h).map((v) => Math.round(Math.min(1, Math.max(0, linearToSrgb(v))) * 255));
|
|
344
|
+
return `#${[r, g, b].map((v) => v.toString(16).padStart(2, '0')).join('')}`;
|
|
345
|
+
}
|
|
294
346
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
347
|
+
* Perceptual (OKLCH) lightness bands a categorical chart mark must sit inside to
|
|
348
|
+
* read as a distinct series against each surface. Below the band a mark muddies
|
|
349
|
+
* into the background; above it, marks wash out and stop being separable. Dark's
|
|
350
|
+
* band is both lower and narrower than light's — it is not a mirror image.
|
|
298
351
|
*/
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
352
|
+
const CHART_BAND = { light: [0.43, 0.77], dark: [0.48, 0.67] };
|
|
353
|
+
/** Chroma below this reads as gray rather than as a colour. */
|
|
354
|
+
const CHART_CHROMA_FLOOR = 0.115;
|
|
355
|
+
/**
|
|
356
|
+
* Nudges lightness within the band until this hue can carry the chroma floor.
|
|
357
|
+
* Dark yellows and teals have a narrow sRGB gamut, so a step placed too dark
|
|
358
|
+
* would be clamped into a muddy near-gray.
|
|
359
|
+
*/
|
|
360
|
+
function snapLightness(targetL, h, lo, hi) {
|
|
361
|
+
if (maxChroma(targetL, h) >= CHART_CHROMA_FLOOR)
|
|
362
|
+
return targetL;
|
|
363
|
+
for (let d = 0.01; d <= hi - lo; d += 0.01) {
|
|
364
|
+
if (targetL + d <= hi && maxChroma(targetL + d, h) >= CHART_CHROMA_FLOOR)
|
|
365
|
+
return targetL + d;
|
|
366
|
+
if (targetL - d >= lo && maxChroma(targetL - d, h) >= CHART_CHROMA_FLOOR)
|
|
367
|
+
return targetL - d;
|
|
368
|
+
}
|
|
369
|
+
// No lightness in the band clears the floor for this hue — take the most
|
|
370
|
+
// colourful point available rather than the target, which would otherwise be
|
|
371
|
+
// gamut-clamped into a near-gray.
|
|
372
|
+
let best = targetL;
|
|
373
|
+
let bestC = maxChroma(targetL, h);
|
|
374
|
+
for (let L = lo; L <= hi; L += 0.01) {
|
|
375
|
+
const c = maxChroma(L, h);
|
|
376
|
+
if (c > bestC) {
|
|
377
|
+
bestC = c;
|
|
378
|
+
best = L;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return best;
|
|
309
382
|
}
|
|
310
|
-
/**
|
|
383
|
+
/**
|
|
384
|
+
* Derive 5 chart colors from one base hex, spreading hues widely and
|
|
385
|
+
* alternating lightness so adjacent series stay separable — including for
|
|
386
|
+
* red-green colour blindness, where hue alone carries almost no information and
|
|
387
|
+
* the lightness difference does the work.
|
|
388
|
+
*
|
|
389
|
+
* `mode` re-steps the ramp for the target surface. Dark is NOT a lightened flip
|
|
390
|
+
* of light: its usable lightness band is both narrower and lower.
|
|
391
|
+
*
|
|
392
|
+
* NOTE: a palette derived from an arbitrary brand hue cannot be *guaranteed*
|
|
393
|
+
* colour-blind-safe — five hues spread from one starting point will, for some
|
|
394
|
+
* bases, put a confusable pair next to each other. The shipped defaults in
|
|
395
|
+
* `theme.css` are a fixed, validated palette; prefer those unless brand-matched
|
|
396
|
+
* charts matter more than guaranteed separation. Whatever you use, keep the
|
|
397
|
+
* legend and direct labels on, so colour is never the only channel.
|
|
398
|
+
*/
|
|
399
|
+
export function generateChartRamp(hex, mode = 'light') {
|
|
400
|
+
const base = hexToOklch(/^#/.test(hex) ? hex : '#2563eb');
|
|
401
|
+
const [lo, hi] = CHART_BAND[mode];
|
|
402
|
+
// Hue offsets spread ~72–180° apart rather than the ±30° "analogous" set the
|
|
403
|
+
// first version used, which left neighbouring series only 32° apart — under
|
|
404
|
+
// protanopia those collapsed to ΔE 1.5, i.e. the same colour. Lightness also
|
|
405
|
+
// alternates, so hues that still converge under CVD differ in luminance.
|
|
406
|
+
const defs = mode === 'light'
|
|
407
|
+
? [
|
|
408
|
+
{ dh: 0, L: 0.55 },
|
|
409
|
+
{ dh: 180, L: 0.72 },
|
|
410
|
+
{ dh: 90, L: 0.46 },
|
|
411
|
+
{ dh: 270, L: 0.68 },
|
|
412
|
+
{ dh: 45, L: 0.6 },
|
|
413
|
+
]
|
|
414
|
+
: [
|
|
415
|
+
{ dh: 0, L: 0.58 },
|
|
416
|
+
{ dh: 180, L: 0.66 },
|
|
417
|
+
{ dh: 90, L: 0.5 },
|
|
418
|
+
{ dh: 270, L: 0.63 },
|
|
419
|
+
{ dh: 45, L: 0.54 },
|
|
420
|
+
];
|
|
421
|
+
return defs.map((d) => {
|
|
422
|
+
const h = base.h + d.dh;
|
|
423
|
+
const L = snapLightness(d.L, h, lo, hi);
|
|
424
|
+
return rgbTriplet(oklchToHex(L, 0.15, h));
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Emit the `:root` + `.dark` `--chart-1…5` block for a chart base color, with
|
|
429
|
+
* each mode re-stepped for its own surface.
|
|
430
|
+
*/
|
|
311
431
|
export function generateChartCss(hex) {
|
|
312
|
-
const
|
|
313
|
-
|
|
432
|
+
const vars = (mode) => generateChartRamp(hex, mode)
|
|
433
|
+
.map((t, i) => `--chart-${i + 1}: ${t};`)
|
|
434
|
+
.join('\n ');
|
|
314
435
|
return `
|
|
315
436
|
:root {
|
|
316
|
-
${vars}
|
|
437
|
+
${vars('light')}
|
|
317
438
|
}
|
|
318
439
|
|
|
319
440
|
.dark {
|
|
320
|
-
${vars}
|
|
441
|
+
${vars('dark')}
|
|
321
442
|
}
|
|
322
443
|
`;
|
|
323
444
|
}
|
|
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==
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3V0aWxzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQVFILHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDbEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU87WUFDTCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM3QixDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPO1lBQ0wsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBUSxHQUFHLFdBQVc7SUFDNUQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN2RCxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEUsT0FBTyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNqRCxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBVztJQUN6QyxPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVyxFQUFFLE9BQWU7SUFDdkQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFTLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFRRCw2RUFBNkU7QUFDN0UsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLE1BQU0sR0FBRyxH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QUM7SUFDNUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQ3RELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3JCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ25ILENBQUM7QUFFRCxxRkFBcUY7QUFDckYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjO0lBQ3hDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDZixPQUFPO1FBQ0wsVUFBVSxFQUFFLE1BQU07UUFDbEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUU7UUFDL0IsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUMvQixhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM3QixjQUFjLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QixjQUFjLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QixlQUFlLEVBQUUsUUFBUTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQVNEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxLQUFrQjtJQUN4RixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxLQUFLO1FBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QixDQUFDLENBQUMsYUFBYSxNQUFNLEdBQUcsQ0FBQztJQUUzQixNQUFNLFFBQVEsR0FBRyxLQUFLO1FBQ3BCLENBQUMsQ0FBQztZQUNFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2hEO2FBQ0UsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVQLE9BQU87O3FCQUVZLElBQUk7Z0NBQ08sRUFBRTtVQUN4QixVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUN0QyxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDdkMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3hDLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN4QyxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDeEMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3hDLElBQUk7eUJBQ0osVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3ZDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN2QyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDdkMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7a0JBQzlDLFNBQVM7Ozs7cUJBSU4sSUFBSTtnQ0FDTyxFQUFFO1VBQ3hCLFVBQVU7d0JBQ0ksVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3RDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN2QyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDdkMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3ZDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN2QyxJQUFJO3lCQUNKLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUN4QyxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDeEMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3hDLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2tCQUMvQyxRQUFROztLQUVyQixDQUFDO0FBQ04sQ0FBQztBQTZCRCwyRUFBMkU7QUFDM0UsU0FBUyxjQUFjLENBQUMsQ0FBK0Q7SUFDckYsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLFVBQVUsRUFBRSxhQUFhO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xCLElBQUksRUFBRSxhQUFhO1lBQ25CLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3RCLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDekIsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDYixlQUFlLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN2QixNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNkLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDeEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDakIsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzQixNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLEVBQUU7WUFDSixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNsQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNaLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2YsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNiLGVBQWUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2QsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QixTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNqQixtQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDZDtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFnQztJQUN4RCxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDNUssS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzdLLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUM1SyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDakwsS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDO0NBQy9LLENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxDQUFhO0lBQ25DLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQixjQUFjLEVBQUUsQ0FBQyxDQUFDLFVBQVU7UUFDNUIsY0FBYyxFQUFFLENBQUMsQ0FBQyxVQUFVO1FBQzVCLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUNoQixtQkFBbUIsRUFBRSxDQUFDLENBQUMsY0FBYztRQUNyQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU87UUFDdEIsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtRQUMzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDbEIsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLGVBQWU7UUFDdkMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ3BCLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7UUFDekMsYUFBYSxFQUFFLENBQUMsQ0FBQyxTQUFTO1FBQzFCLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxtQkFBbUI7UUFDL0MsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ3BCLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSztLQUNuQixDQUFDO1NBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBYztJQUM1QyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE9BQU87O1VBRUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Ozs7VUFJdkIsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7O0tBRTNCLENBQUM7QUFDTixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFFaEY7Ozs7OztnRkFNZ0Y7QUFFaEYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBRXhHLHFEQUFxRDtBQUNyRCxTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUQsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLE9BQU87UUFDTCxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDO1FBQ3hELENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdB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LEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ3BCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO1NBQ3BCLENBQUM7SUFFUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNwQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBc0IsRUFBRSxFQUFFLENBQ3RDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7U0FDekIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUV4QixPQUFPOztVQUVDLElBQUksQ0FBQyxPQUFPLENBQUM7Ozs7VUFJYixJQUFJLENBQUMsTUFBTSxDQUFDOztLQUVqQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVyZSBjb2xvciArIHRoZW1lLXRva2VuIG1hdGggZm9yIFRvbGxlIFVJLlxuICpcbiAqIEZyYW1ld29yay0gYW5kIERPTS1mcmVlIHNvIGl0IGNhbiBiYWNrIGJvdGggdGhlIHJ1bnRpbWUgYFRoZW1lU2VydmljZWAgYW5kIGFcbiAqIGJ1aWxkLXRpbWUgdGhlbWUgZ2VuZXJhdG9yICh0aGUgc2hhZGNuLXN0eWxlIFwiY29weSB0aGlzIENTUyBibG9ja1wiIGZsb3cpLCBhbmRcbiAqIHRvIGNlbnRyYWxpemUgdGhlIG1hdGggYWhlYWQgb2YgYSBmdXR1cmUgb2tsY2ggbWlncmF0aW9uLiBObyBzaWRlIGVmZmVjdHMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBSZ2Ige1xuICByOiBudW1iZXI7XG4gIGc6IG51bWJlcjtcbiAgYjogbnVtYmVyO1xufVxuXG4vKiogUGFyc2UgYSAjUkdCIG9yICNSUkdHQkIgaGV4IHN0cmluZyB0byBSR0IsIG9yIG51bGwgaWYgbWFsZm9ybWVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogUmdiIHwgbnVsbCB7XG4gIGNvbnN0IGMgPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgaWYgKGMubGVuZ3RoID09PSAzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHI6IHBhcnNlSW50KGNbMF0gKyBjWzBdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChjWzFdICsgY1sxXSwgMTYpLFxuICAgICAgYjogcGFyc2VJbnQoY1syXSArIGNbMl0sIDE2KSxcbiAgICB9O1xuICB9XG4gIGlmIChjLmxlbmd0aCA9PT0gNikge1xuICAgIHJldHVybiB7XG4gICAgICByOiBwYXJzZUludChjLnN1YnN0cmluZygwLCAyKSwgMTYpLFxuICAgICAgZzogcGFyc2VJbnQoYy5zdWJzdHJpbmcoMiwgNCksIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KGMuc3Vic3RyaW5nKDQsIDYpLCAxNiksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIFNwYWNlLXNlcGFyYXRlZCBSR0IgdHJpcGxldCBmb3IgYSBoZXggY29sb3IgKFRhaWx3aW5kIGA8YWxwaGEtdmFsdWU+YCBmb3JtKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUcmlwbGV0KGhleDogc3RyaW5nLCBmYWxsYmFjayA9ICczNyA5OSAyMzUnKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgcmV0dXJuIHJnYiA/IGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWAgOiBmYWxsYmFjaztcbn1cblxuLyoqIEJsYWNrIG9yIHdoaXRlLCB3aGljaGV2ZXIgY29udHJhc3RzIGJldHRlciB3aXRoIHRoZSBnaXZlbiBjb2xvci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFzdENvbG9yKGhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgaWYgKCFyZ2IpIHJldHVybiAnI2ZmZmZmZic7XG4gIGNvbnN0IGx1bWluYW5jZSA9ICgwLjI5OSAqIHJnYi5yICsgMC41ODcgKiByZ2IuZyArIDAuMTE0ICogcmdiLmIpIC8gMjU1O1xuICByZXR1cm4gbHVtaW5hbmNlID4gMC41ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xufVxuXG4vKiogQ29udHJhc3QgY29sb3IgYXMgYW4gUkdCIHRyaXBsZXQgKGZvciBgLS1wcmltYXJ5LWZvcmVncm91bmRgKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250cmFzdFRyaXBsZXQoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmdiVHJpcGxldChnZXRDb250cmFzdENvbG9yKGhleCksICcyNTUgMjU1IDI1NScpO1xufVxuXG4vKiogTGlnaHRlbiBhIGhleCBjb2xvciB0b3dhcmQgd2hpdGUgYnkgYHBlcmNlbnRgICgw4oCTMTAwKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWdodGVuQ29sb3IoaGV4OiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHJnYiA9IGhleFRvUmdiKGhleCk7XG4gIGlmICghcmdiKSByZXR1cm4gaGV4O1xuICBjb25zdCByID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5yICsgKDI1NSAtIHJnYi5yKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICBjb25zdCBnID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5nICsgKDI1NSAtIHJnYi5nKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICBjb25zdCBiID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5iICsgKDI1NSAtIHJnYi5iKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICByZXR1cm4gYCMkeygoMSA8PCAyNCkgKyAociA8PCAxNikgKyAoZyA8PCA4KSArIGIpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX1gO1xufVxuXG5mdW5jdGlvbiBjbGFtcChuOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgbikpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhzbCB7XG4gIGg6IG51bWJlcjtcbiAgczogbnVtYmVyO1xuICBsOiBudW1iZXI7XG59XG5cbi8qKiBDb252ZXJ0IGEgaGV4IGNvbG9yIHRvIEhTTCAoaCAw4oCTMzYwLCBzL2wgMOKAkzEwMCksIG9yIG51bGwgaWYgbWFsZm9ybWVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvSHNsKGhleDogc3RyaW5nKTogSHNsIHwgbnVsbCB7XG4gIGNvbnN0IHJnYiA9IGhleFRvUmdiKGhleCk7XG4gIGlmICghcmdiKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgciA9IHJnYi5yIC8gMjU1LFxuICAgIGcgPSByZ2IuZyAvIDI1NSxcbiAgICBiID0gcmdiLmIgLyAyNTU7XG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLFxuICAgIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCA9IDA7XG4gIGxldCBzID0gMDtcbiAgY29uc3QgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKG1heCAhPT0gbWluKSB7XG4gICAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgICBzID0gbCA+IDAuNSA/IGQgLyAoMiAtIG1heCAtIG1pbikgOiBkIC8gKG1heCArIG1pbik7XG4gICAgc3dpdGNoIChtYXgpIHtcbiAgICAgIGNhc2UgcjpcbiAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZzpcbiAgICAgICAgaCA9IChiIC0gcikgLyBkICsgMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBoID0gKHIgLSBnKSAvIGQgKyA0O1xuICAgIH1cbiAgICBoIC89IDY7XG4gIH1cbiAgcmV0dXJuIHsgaDogaCAqIDM2MCwgczogcyAqIDEwMCwgbDogbCAqIDEwMCB9O1xufVxuXG4vKiogQ29udmVydCBIU0wgKGggMOKAkzM2MCwgcy9sIDDigJMxMDApIHRvIGEgI1JSR0dCQiBoZXggc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhzbFRvSGV4KGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpOiBzdHJpbmcge1xuICBoID0gKChoICUgMzYwKSArIDM2MCkgJSAzNjAgLyAzNjA7XG4gIHMgPSBjbGFtcChzLCAwLCAxMDApIC8gMTAwO1xuICBsID0gY2xhbXAobCwgMCwgMTAwKSAvIDEwMDtcbiAgY29uc3QgaHVlMnJnYiA9IChwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgaWYgKHQgPiAxKSB0IC09IDE7XG4gICAgaWYgKHQgPCAxIC8gNikgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7XG4gICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgaWYgKHQgPCAyIC8gMykgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2O1xuICAgIHJldHVybiBwO1xuICB9O1xuICBsZXQgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcjtcbiAgaWYgKHMgPT09IDApIHtcbiAgICByID0gZyA9IGIgPSBsO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgIGNvbnN0IHAgPSAyICogbCAtIHE7XG4gICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICBnID0gaHVlMnJnYihwLCBxLCBoKTtcbiAgICBiID0gaHVlMnJnYihwLCBxLCBoIC0gMSAvIDMpO1xuICB9XG4gIGNvbnN0IHRvID0gKHg6IG51bWJlcikgPT4gTWF0aC5yb3VuZCh4ICogMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgcmV0dXJuIGAjJHt0byhyKX0ke3RvKGcpfSR7dG8oYil9YDtcbn1cblxuLyoqIERhcmtlbiBhIGhleCBjb2xvciB0b3dhcmQgYmxhY2sgYnkgYHBlcmNlbnRgICgw4oCTMTAwKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXJrZW5Db2xvcihoZXg6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2IoaGV4KTtcbiAgaWYgKCFyZ2IpIHJldHVybiBoZXg7XG4gIGNvbnN0IGZhY3RvciA9IDEgLSBwZXJjZW50IC8gMTAwO1xuICBjb25zdCByID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuciAqIGZhY3RvcikpO1xuICBjb25zdCBnID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuZyAqIGZhY3RvcikpO1xuICBjb25zdCBiID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuYiAqIGZhY3RvcikpO1xuICByZXR1cm4gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xufVxuXG4vKiogRGVyaXZlZCByYWRpdXMgc2NhbGUgZnJvbSBhIGJhc2UgcmFkaXVzIChlLmcuICcwLjVyZW0nKSwgb3IgbnVsbCBpZiBtYWxmb3JtZWQuICovXG5leHBvcnQgZnVuY3Rpb24gcmFkaXVzU2NhbGUocmFkaXVzOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCB7XG4gIGNvbnN0IG0gPSByYWRpdXMubWF0Y2goL14oXFxkKlxcLj9cXGQrKShbYS16XSt8JSkkLyk7XG4gIGlmICghbSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IG4gPSBwYXJzZUZsb2F0KG1bMV0pO1xuICBjb25zdCB1ID0gbVsyXTtcbiAgcmV0dXJuIHtcbiAgICAnLS1yYWRpdXMnOiByYWRpdXMsXG4gICAgJy0tcmFkaXVzLXNtJzogYCR7biAqIDAuNX0ke3V9YCxcbiAgICAnLS1yYWRpdXMtbWQnOiBgJHtufSR7dX1gLFxuICAgICctLXJhZGl1cy1sZyc6IGAke24gKiAxLjV9JHt1fWAsXG4gICAgJy0tcmFkaXVzLXhsJzogYCR7biAqIDJ9JHt1fWAsXG4gICAgJy0tcmFkaXVzLTJ4bCc6IGAke24gKiAzfSR7dX1gLFxuICAgICctLXJhZGl1cy0zeGwnOiBgJHtuICogNH0ke3V9YCxcbiAgICAnLS1yYWRpdXMtZnVsbCc6ICc5OTk5cHgnLFxuICB9O1xufVxuXG4vKiogT3B0aW9uYWwgdHlwb2dyYXBoeSBzdGFja3MgZm9yIHRoZSB0aGVtZSBnZW5lcmF0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvbnRUb2tlbnMge1xuICBzYW5zPzogc3RyaW5nO1xuICBzZXJpZj86IHN0cmluZztcbiAgbW9ubz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSB0aGUgYDpyb290YCArIGAuZGFya2AgQ1NTIGN1c3RvbS1wcm9wZXJ0eSBibG9jayBmb3IgYSBwcmltYXJ5IGNvbG9yXG4gKiAoZnVsbCA1MOKAkzkwMCByYW1wLCBjb250cmFzdCBmb3JlZ3JvdW5kLCBmb2N1cyByaW5nLCBhbmQgcmFkaXVzIHNjYWxlKS4gVGhpcyBpc1xuICogdGhlIHRoZW1lLWdlbmVyYXRvciBlbmdpbmUg4oCUIGlkZW50aWNhbCB0byB3aGF0IGBUaGVtZVNlcnZpY2VgIGluamVjdHMgYXQgcnVudGltZSxcbiAqIGFuZCBzdWl0YWJsZSBmb3IgZW1pdHRpbmcgYSBjb3B5LXBhc3RlIGJsb2NrIGEgY29uc3VtZXIgY2FuIGNvbW1pdC5cbiAqXG4gKiBQYXNzIGBmb250c2AgdG8gYWxzbyBlbWl0IGAtLWZvbnQtc2Fuc2AgLyBgLS1mb250LXNlcmlmYCAvIGAtLWZvbnQtbW9ub2AgKHRoZXlcbiAqIGRvIG5vdCB2YXJ5IGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHNvIHRoZXkgbGFuZCBpbiBgOnJvb3RgIG9ubHkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUaGVtZUNzcyhwcmltYXJ5SGV4OiBzdHJpbmcsIHJhZGl1cyA9ICcwLjVyZW0nLCBmb250cz86IEZvbnRUb2tlbnMpOiBzdHJpbmcge1xuICBjb25zdCBiYXNlID0gcmdiVHJpcGxldChwcmltYXJ5SGV4KTtcbiAgY29uc3QgcmluZ0xpZ2h0ID0gcmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNDApLCAnOTYgMTY1IDI1MCcpO1xuICBjb25zdCByaW5nRGFyayA9IHJnYlRyaXBsZXQobGlnaHRlbkNvbG9yKHByaW1hcnlIZXgsIDIwKSwgJzE0NyAxOTcgMjUzJyk7XG4gIGNvbnN0IGZnID0gY29udHJhc3RUcmlwbGV0KHByaW1hcnlIZXgpO1xuXG4gIGNvbnN0IHNjYWxlID0gcmFkaXVzU2NhbGUocmFkaXVzKTtcbiAgY29uc3QgcmFkaXVzVmFycyA9IHNjYWxlXG4gICAgPyBPYmplY3QuZW50cmllcyhzY2FsZSlcbiAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfTogJHt2fTtgKVxuICAgICAgICAuam9pbignXFxuICAgICAgICAnKVxuICAgIDogYC0tcmFkaXVzOiAke3JhZGl1c307YDtcblxuICBjb25zdCBmb250VmFycyA9IGZvbnRzXG4gICAgPyBbXG4gICAgICAgIGZvbnRzLnNhbnMgPyBgLS1mb250LXNhbnM6ICR7Zm9udHMuc2Fuc307YCA6ICcnLFxuICAgICAgICBmb250cy5zZXJpZiA/IGAtLWZvbnQtc2VyaWY6ICR7Zm9udHMuc2VyaWZ9O2AgOiAnJyxcbiAgICAgICAgZm9udHMubW9ubyA/IGAtLWZvbnQtbW9ubzogJHtmb250cy5tb25vfTtgIDogJycsXG4gICAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJ1xcbiAgICAgICAgJylcbiAgICA6ICcnO1xuXG4gIHJldHVybiBgXG4gICAgICA6cm9vdCB7XG4gICAgICAgIC0tcHJpbWFyeTogJHtiYXNlfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7Zmd9O1xuICAgICAgICAke3JhZGl1c1ZhcnN9JHtmb250VmFycyA/ICdcXG4gICAgICAgICcgKyBmb250VmFycyA6ICcnfVxuICAgICAgICAtLXByaW1hcnktNTA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgOTApKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgODApKX07XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgNDApKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7cmdiVHJpcGxldChsaWdodGVuQ29sb3IocHJpbWFyeUhleCwgMjApKX07XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZX07XG4gICAgICAgIC0tcHJpbWFyeS02MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHtyZ2JUcmlwbGV0KGRhcmtlbkNvbG9yKHByaW1hcnlIZXgsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktODAwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS05MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA4MCkpfTtcbiAgICAgICAgLS1yaW5nOiAke3JpbmdMaWdodH07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIHtcbiAgICAgICAgLS1wcmltYXJ5OiAke2Jhc2V9O1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogJHtmZ307XG4gICAgICAgICR7cmFkaXVzVmFyc31cbiAgICAgICAgLS1wcmltYXJ5LTUwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgODUpKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA3NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTIwMDogJHtyZ2JUcmlwbGV0KGRhcmtlbkNvbG9yKHByaW1hcnlIZXgsIDY1KSl9O1xuICAgICAgICAtLXByaW1hcnktMzAwOiAke3JnYlRyaXBsZXQoZGFya2VuQ29sb3IocHJpbWFyeUhleCwgNTUpKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7cmdiVHJpcGxldChkYXJrZW5Db2xvcihwcmltYXJ5SGV4LCA0NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTUwMDogJHtiYXNlfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCAzNSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCA1MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogJHtyZ2JUcmlwbGV0KGxpZ2h0ZW5Db2xvcihwcmltYXJ5SGV4LCA2NSkpfTtcbiAgICAgICAgLS1yaW5nOiAke3JpbmdEYXJrfTtcbiAgICAgIH1cbiAgICBgO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogQmFzZSAobmV1dHJhbCkgY29sb3IgZmFtaWxpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBUaGUgbmV1dHJhbCBzdXJmYWNlL2ZvcmVncm91bmQgdG9rZW5zIGEgYmFzZSBjb2xvciBkcml2ZXMgKG9uZSBhcHBlYXJhbmNlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVRva2VucyB7XG4gIGJhY2tncm91bmQ6IHN0cmluZztcbiAgZm9yZWdyb3VuZDogc3RyaW5nO1xuICBjYXJkOiBzdHJpbmc7XG4gIGNhcmRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIHBvcG92ZXI6IHN0cmluZztcbiAgcG9wb3ZlckZvcmVncm91bmQ6IHN0cmluZztcbiAgbXV0ZWQ6IHN0cmluZztcbiAgbXV0ZWRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGFjY2VudDogc3RyaW5nO1xuICBhY2NlbnRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIHNlY29uZGFyeTogc3RyaW5nO1xuICBzZWNvbmRhcnlGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBpbnB1dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VQYWxldHRlIHtcbiAgbGlnaHQ6IEJhc2VUb2tlbnM7XG4gIGRhcms6IEJhc2VUb2tlbnM7XG59XG5cbi8qKiBCdWlsZCBhIGxpZ2h0K2RhcmsgbmV1dHJhbCBwYWxldHRlIGZyb20gYSBUYWlsd2luZC1zdHlsZSBzaGFkZSByYW1wLiAqL1xuZnVuY3Rpb24gbmV1dHJhbFBhbGV0dGUoczogUmVjb3JkPDUwIHwgMTAwIHwgMjAwIHwgNDAwIHwgNTAwIHwgODAwIHwgOTAwIHwgOTUwLCBzdHJpbmc+KTogQmFzZVBhbGV0dGUge1xuICByZXR1cm4ge1xuICAgIGxpZ2h0OiB7XG4gICAgICBiYWNrZ3JvdW5kOiAnMjU1IDI1NSAyNTUnLFxuICAgICAgZm9yZWdyb3VuZDogc1s5NTBdLFxuICAgICAgY2FyZDogJzI1NSAyNTUgMjU1JyxcbiAgICAgIGNhcmRGb3JlZ3JvdW5kOiBzWzk1MF0sXG4gICAgICBwb3BvdmVyOiAnMjU1IDI1NSAyNTUnLFxuICAgICAgcG9wb3ZlckZvcmVncm91bmQ6IHNbOTUwXSxcbiAgICAgIG11dGVkOiBzWzEwMF0sXG4gICAgICBtdXRlZEZvcmVncm91bmQ6IHNbNTAwXSxcbiAgICAgIGFjY2VudDogc1sxMDBdLFxuICAgICAgYWNjZW50Rm9yZWdyb3VuZDogc1s5MDBdLFxuICAgICAgc2Vjb25kYXJ5OiBzWzEwMF0sXG4gICAgICBzZWNvbmRhcnlGb3JlZ3JvdW5kOiBzWzkwMF0sXG4gICAgICBib3JkZXI6IHNbMjAwXSxcbiAgICAgIGlucHV0OiBzWzIwMF0sXG4gICAgfSxcbiAgICBkYXJrOiB7XG4gICAgICBiYWNrZ3JvdW5kOiBzWzk1MF0sXG4gICAgICBmb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIGNhcmQ6IHNbOTUwXSxcbiAgICAgIGNhcmRGb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIHBvcG92ZXI6IHNbOTUwXSxcbiAgICAgIHBvcG92ZXJGb3JlZ3JvdW5kOiBzWzUwXSxcbiAgICAgIG11dGVkOiBzWzgwMF0sXG4gICAgICBtdXRlZEZvcmVncm91bmQ6IHNbNDAwXSxcbiAgICAgIGFjY2VudDogc1s4MDBdLFxuICAgICAgYWNjZW50Rm9yZWdyb3VuZDogc1s1MF0sXG4gICAgICBzZWNvbmRhcnk6IHNbODAwXSxcbiAgICAgIHNlY29uZGFyeUZvcmVncm91bmQ6IHNbNTBdLFxuICAgICAgYm9yZGVyOiBzWzgwMF0sXG4gICAgICBpbnB1dDogc1s4MDBdLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTmV1dHJhbCBiYXNlLWNvbG9yIGZhbWlsaWVzIChSR0IgdHJpcGxldHMpLCBtYXRjaGluZyBUYWlsd2luZCdzIFppbmMgLyBTbGF0ZSAvXG4gKiBHcmF5IC8gTmV1dHJhbCAvIFN0b25lIHJhbXBzLiBgemluY2AgcmVwcm9kdWNlcyB0aGUgbGlicmFyeSdzIHNoaXBwZWQgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBCQVNFX1BBTEVUVEVTOiBSZWNvcmQ8c3RyaW5nLCBCYXNlUGFsZXR0ZT4gPSB7XG4gIHppbmM6IG5ldXRyYWxQYWxldHRlKHsgNTA6ICcyNTAgMjUwIDI1MCcsIDEwMDogJzI0NCAyNDQgMjQ1JywgMjAwOiAnMjI4IDIyOCAyMzEnLCA0MDA6ICcxNjEgMTYxIDE3MCcsIDUwMDogJzExMyAxMTMgMTIyJywgODAwOiAnMzkgMzkgNDInLCA5MDA6ICcyNCAyNCAyNycsIDk1MDogJzkgOSAxMScgfSksXG4gIHNsYXRlOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjQ4IDI1MCAyNTInLCAxMDA6ICcyNDEgMjQ1IDI0OScsIDIwMDogJzIyNiAyMzIgMjQwJywgNDAwOiAnMTQ4IDE2MyAxODQnLCA1MDA6ICcxMDAgMTE2IDEzOScsIDgwMDogJzMwIDQxIDU5JywgOTAwOiAnMTUgMjMgNDInLCA5NTA6ICcyIDYgMjMnIH0pLFxuICBncmF5OiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjQ5IDI1MCAyNTEnLCAxMDA6ICcyNDMgMjQ0IDI0NicsIDIwMDogJzIyOSAyMzEgMjM1JywgNDAwOiAnMTU2IDE2MyAxNzUnLCA1MDA6ICcxMDcgMTE0IDEyOCcsIDgwMDogJzMxIDQxIDU1JywgOTAwOiAnMTcgMjQgMzknLCA5NTA6ICczIDcgMTgnIH0pLFxuICBuZXV0cmFsOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjUwIDI1MCAyNTAnLCAxMDA6ICcyNDUgMjQ1IDI0NScsIDIwMDogJzIyOSAyMjkgMjI5JywgNDAwOiAnMTYzIDE2MyAxNjMnLCA1MDA6ICcxMTUgMTE1IDExNScsIDgwMDogJzM4IDM4IDM4JywgOTAwOiAnMjMgMjMgMjMnLCA5NTA6ICcxMCAxMCAxMCcgfSksXG4gIHN0b25lOiBuZXV0cmFsUGFsZXR0ZSh7IDUwOiAnMjUwIDI1MCAyNDknLCAxMDA6ICcyNDUgMjQ1IDI0NCcsIDIwMDogJzIzMSAyMjkgMjI4JywgNDAwOiAnMTY4IDE2MiAxNTgnLCA1MDA6ICcxMjAgMTEzIDEwOCcsIDgwMDogJzQxIDM3IDM2JywgOTAwOiAnMjggMjUgMjMnLCA5NTA6ICcxMiAxMCA5JyB9KSxcbn07XG5cbmZ1bmN0aW9uIGJhc2VUb2tlbkJsb2NrKHQ6IEJhc2VUb2tlbnMpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuICAgICctLWJhY2tncm91bmQnOiB0LmJhY2tncm91bmQsXG4gICAgJy0tZm9yZWdyb3VuZCc6IHQuZm9yZWdyb3VuZCxcbiAgICAnLS1jYXJkJzogdC5jYXJkLFxuICAgICctLWNhcmQtZm9yZWdyb3VuZCc6IHQuY2FyZEZvcmVncm91bmQsXG4gICAgJy0tcG9wb3Zlcic6IHQucG9wb3ZlcixcbiAgICAnLS1wb3BvdmVyLWZvcmVncm91bmQnOiB0LnBvcG92ZXJGb3JlZ3JvdW5kLFxuICAgICctLW11dGVkJzogdC5tdXRlZCxcbiAgICAnLS1tdXRlZC1mb3JlZ3JvdW5kJzogdC5tdXRlZEZvcmVncm91bmQsXG4gICAgJy0tYWNjZW50JzogdC5hY2NlbnQsXG4gICAgJy0tYWNjZW50LWZvcmVncm91bmQnOiB0LmFjY2VudEZvcmVncm91bmQsXG4gICAgJy0tc2Vjb25kYXJ5JzogdC5zZWNvbmRhcnksXG4gICAgJy0tc2Vjb25kYXJ5LWZvcmVncm91bmQnOiB0LnNlY29uZGFyeUZvcmVncm91bmQsXG4gICAgJy0tYm9yZGVyJzogdC5ib3JkZXIsXG4gICAgJy0taW5wdXQnOiB0LmlucHV0LFxuICB9KVxuICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a306ICR7dn07YClcbiAgICAuam9pbignXFxuICAgICAgICAnKTtcbn1cblxuLyoqIEVtaXQgdGhlIGA6cm9vdGAgKyBgLmRhcmtgIG5ldXRyYWwtdG9rZW4gYmxvY2sgZm9yIGEgYmFzZSBjb2xvciBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUJhc2VDc3MoYmFzZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwID0gQkFTRV9QQUxFVFRFU1tiYXNlSWRdID8/IEJBU0VfUEFMRVRURVNbJ3ppbmMnXTtcbiAgcmV0dXJuIGBcbiAgICAgIDpyb290IHtcbiAgICAgICAgJHtiYXNlVG9rZW5CbG9jayhwLmxpZ2h0KX1cbiAgICAgIH1cblxuICAgICAgLmRhcmsge1xuICAgICAgICAke2Jhc2VUb2tlbkJsb2NrKHAuZGFyayl9XG4gICAgICB9XG4gICAgYDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIENoYXJ0IHBhbGV0dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0gT0tMYWIvT0tMQ0ggaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2hhcnQgc3RlcHMgYXJlIHBsYWNlZCBpbiBPS0xDSCwgbm90IEhTTC4gSFNMIFwibGlnaHRuZXNzXCIgaXMgbm90IHBlcmNlcHR1YWw6XG4gKiBIU0wgNzElIG9uIGEgeWVsbG93IHJlYWRzIGFzIE9LTGFiIEwgMC44NiB3aGlsZSB0aGUgc2FtZSA3MSUgb24gYSBibHVlIHJlYWRzXG4gKiB+MC41NSwgc28gYW4gSFNMLWJhc2VkIHJhbXAgc2lsZW50bHkgcHJvZHVjZXMgc3RlcHMgdGhhdCBhcmUgZmFyIHRvbyBsaWdodCB0b1xuICogc2l0IGFsb25nc2lkZSB0aGUgb3RoZXJzLiBXb3JraW5nIGluIE9LTENIIGxldHMgdXMgc2V0IHBlcmNlaXZlZCBsaWdodG5lc3MgYW5kXG4gKiBjb2xvdXJmdWxuZXNzIGRpcmVjdGx5LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3Qgc3JnYlRvTGluZWFyID0gKGM6IG51bWJlcikgPT4gKGMgPD0gMC4wNDA0NSA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkpO1xuY29uc3QgbGluZWFyVG9TcmdiID0gKGM6IG51bWJlcikgPT4gKGMgPD0gMC4wMDMxMzA4ID8gMTIuOTIgKiBjIDogMS4wNTUgKiBNYXRoLnBvdyhjLCAxIC8gMi40KSAtIDAuMDU1KTtcblxuLyoqIHNSR0IgaGV4IOKGkiBPS0xDSCAoTCAw4oCTMSwgQyBjaHJvbWEsIGggZGVncmVlcykuICovXG5mdW5jdGlvbiBoZXhUb09rbGNoKGhleDogc3RyaW5nKTogeyBMOiBudW1iZXI7IEM6IG51bWJlcjsgaDogbnVtYmVyIH0ge1xuICBjb25zdCByID0gc3JnYlRvTGluZWFyKHBhcnNlSW50KGhleC5zbGljZSgxLCAzKSwgMTYpIC8gMjU1KTtcbiAgY29uc3QgZyA9IHNyZ2JUb0xpbmVhcihwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KSAvIDI1NSk7XG4gIGNvbnN0IGIgPSBzcmdiVG9MaW5lYXIocGFyc2VJbnQoaGV4LnNsaWNlKDUsIDcpLCAxNikgLyAyNTUpO1xuICBjb25zdCBsID0gTWF0aC5jYnJ0KDAuNDEyMjIxNDcwOCAqIHIgKyAwLjUzNjMzMjUzNjMgKiBnICsgMC4wNTE0NDU5OTI5ICogYik7XG4gIGNvbnN0IG0gPSBNYXRoLmNicnQoMC4yMTE5MDM0OTgyICogciArIDAuNjgwNjk5NTQ1MSAqIGcgKyAwLjEwNzM5Njk1NjYgKiBiKTtcbiAgY29uc3QgcyA9IE1hdGguY2JydCgwLjA4ODMwMjQ2MTkgKiByICsgMC4yODE3MTg4Mzc2ICogZyArIDAuNjI5OTc4NzAwNSAqIGIpO1xuICBjb25zdCBBID0gMS45Nzc5OTg0OTUxICogbCAtIDIuNDI4NTkyMjA1ICogbSArIDAuNDUwNTkzNzA5OSAqIHM7XG4gIGNvbnN0IEIgPSAwLjAyNTkwNDAzNzEgKiBsICsgMC43ODI3NzE3NjYyICogbSAtIDAuODA4Njc1NzY2ICogcztcbiAgcmV0dXJuIHtcbiAgICBMOiAwLjIxMDQ1NDI1NTMgKiBsICsgMC43OTM2MTc3ODUgKiBtIC0gMC4wMDQwNzIwNDY4ICogcyxcbiAgICBDOiBNYXRoLmh5cG90KEEsIEIpLFxuICAgIGg6IChNYXRoLmF0YW4yKEIsIEEpICogMTgwKSAvIE1hdGguUEksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9rbGNoVG9MaW5lYXJSZ2IoTDogbnVtYmVyLCBDOiBudW1iZXIsIGhEZWc6IG51bWJlcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IGggPSAoaERlZyAqIE1hdGguUEkpIC8gMTgwO1xuICBjb25zdCBBID0gQyAqIE1hdGguY29zKGgpO1xuICBjb25zdCBCID0gQyAqIE1hdGguc2luKGgpO1xuICBjb25zdCBsID0gKEwgKyAwLjM5NjMzNzc3NzQgKiBBICsgMC4yMTU4MDM3NTczICogQikgKiogMztcbiAgY29uc3QgbSA9IChMIC0gMC4xMDU1NjEzNDU4ICogQSAtIDAuMDYzODU0MTcyOCAqIEIpICoqIDM7XG4gIGNvbnN0IHMgPSAoTCAtIDAuMDg5NDg0MTc3NSAqIEEgLSAxLjI5MTQ4NTU0OCAqIEIpICoqIDM7XG4gIHJldHVybiBbXG4gICAgNC4wNzY3NDE2NjIxICogbCAtIDMuMzA3NzExNTkxMyAqIG0gKyAwLjIzMDk2OTkyOTIgKiBzLFxuICAgIC0xLjI2ODQzODAwNDYgKiBsICsgMi42MDk3NTc0MDExICogbSAtIDAuMzQxMzE5Mzk2NSAqIHMsXG4gICAgLTAuMDA0MTk2MDg2MyAqIGwgLSAwLjcwMzQxODYxNDcgKiBtICsgMS43MDc2MTQ3MDEgKiBzLFxuICBdO1xufVxuXG5jb25zdCBpblNyZ2JHYW11dCA9IChyZ2I6IG51bWJlcltdKSA9PiByZ2IuZXZlcnkoKGMpID0+IGMgPj0gLTAuMDAwMSAmJiBjIDw9IDEuMDAwMSk7XG5cbi8qKiBMYXJnZXN0IGNocm9tYSB0aGlzIGxpZ2h0bmVzcy9odWUgY2FuIGNhcnJ5IGluc2lkZSBzUkdCLiAqL1xuZnVuY3Rpb24gbWF4Q2hyb21hKEw6IG51bWJlciwgaDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGMgPSAwLjQ7XG4gIHdoaWxlIChjID4gMC4wMDEgJiYgIWluU3JnYkdhbXV0KG9rbGNoVG9MaW5lYXJSZ2IoTCwgYywgaCkpKSBjIC09IDAuMDA0O1xuICByZXR1cm4gYztcbn1cblxuLyoqIE9LTENIIOKGkiBoZXgsIHJlZHVjaW5nIGNocm9tYSB0byBmaXQgc1JHQiB3aGlsZSBwcmVzZXJ2aW5nIGxpZ2h0bmVzcyBhbmQgaHVlLiAqL1xuZnVuY3Rpb24gb2tsY2hUb0hleChMOiBudW1iZXIsIEM6IG51bWJlciwgaDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgYyA9IE1hdGgubWluKEMsIG1heENocm9tYShMLCBoKSk7XG4gIGNvbnN0IFtyLCBnLCBiXSA9IG9rbGNoVG9MaW5lYXJSZ2IoTCwgYywgaCkubWFwKCh2KSA9PlxuICAgIE1hdGgucm91bmQoTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgbGluZWFyVG9TcmdiKHYpKSkgKiAyNTUpXG4gICk7XG4gIHJldHVybiBgIyR7W3IsIGcsIGJdLm1hcCgodikgPT4gdi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YDtcbn1cblxuLyoqXG4gKiBQZXJjZXB0dWFsIChPS0xDSCkgbGlnaHRuZXNzIGJhbmRzIGEgY2F0ZWdvcmljYWwgY2hhcnQgbWFyayBtdXN0IHNpdCBpbnNpZGUgdG9cbiAqIHJlYWQgYXMgYSBkaXN0aW5jdCBzZXJpZXMgYWdhaW5zdCBlYWNoIHN1cmZhY2UuIEJlbG93IHRoZSBiYW5kIGEgbWFyayBtdWRkaWVzXG4gKiBpbnRvIHRoZSBiYWNrZ3JvdW5kOyBhYm92ZSBpdCwgbWFya3Mgd2FzaCBvdXQgYW5kIHN0b3AgYmVpbmcgc2VwYXJhYmxlLiBEYXJrJ3NcbiAqIGJhbmQgaXMgYm90aCBsb3dlciBhbmQgbmFycm93ZXIgdGhhbiBsaWdodCdzIOKAlCBpdCBpcyBub3QgYSBtaXJyb3IgaW1hZ2UuXG4gKi9cbmNvbnN0IENIQVJUX0JBTkQgPSB7IGxpZ2h0OiBbMC40MywgMC43N10gYXMgY29uc3QsIGRhcms6IFswLjQ4LCAwLjY3XSBhcyBjb25zdCB9O1xuXG4vKiogQ2hyb21hIGJlbG93IHRoaXMgcmVhZHMgYXMgZ3JheSByYXRoZXIgdGhhbiBhcyBhIGNvbG91ci4gKi9cbmNvbnN0IENIQVJUX0NIUk9NQV9GTE9PUiA9IDAuMTE1O1xuXG4vKipcbiAqIE51ZGdlcyBsaWdodG5lc3Mgd2l0aGluIHRoZSBiYW5kIHVudGlsIHRoaXMgaHVlIGNhbiBjYXJyeSB0aGUgY2hyb21hIGZsb29yLlxuICogRGFyayB5ZWxsb3dzIGFuZCB0ZWFscyBoYXZlIGEgbmFycm93IHNSR0IgZ2FtdXQsIHNvIGEgc3RlcCBwbGFjZWQgdG9vIGRhcmtcbiAqIHdvdWxkIGJlIGNsYW1wZWQgaW50byBhIG11ZGR5IG5lYXItZ3JheS5cbiAqL1xuZnVuY3Rpb24gc25hcExpZ2h0bmVzcyh0YXJnZXRMOiBudW1iZXIsIGg6IG51bWJlciwgbG86IG51bWJlciwgaGk6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChtYXhDaHJvbWEodGFyZ2V0TCwgaCkgPj0gQ0hBUlRfQ0hST01BX0ZMT09SKSByZXR1cm4gdGFyZ2V0TDtcbiAgZm9yIChsZXQgZCA9IDAuMDE7IGQgPD0gaGkgLSBsbzsgZCArPSAwLjAxKSB7XG4gICAgaWYgKHRhcmdldEwgKyBkIDw9IGhpICYmIG1heENocm9tYSh0YXJnZXRMICsgZCwgaCkgPj0gQ0hBUlRfQ0hST01BX0ZMT09SKSByZXR1cm4gdGFyZ2V0TCArIGQ7XG4gICAgaWYgKHRhcmdldEwgLSBkID49IGxvICYmIG1heENocm9tYSh0YXJnZXRMIC0gZCwgaCkgPj0gQ0hBUlRfQ0hST01BX0ZMT09SKSByZXR1cm4gdGFyZ2V0TCAtIGQ7XG4gIH1cbiAgLy8gTm8gbGlnaHRuZXNzIGluIHRoZSBiYW5kIGNsZWFycyB0aGUgZmxvb3IgZm9yIHRoaXMgaHVlIOKAlCB0YWtlIHRoZSBtb3N0XG4gIC8vIGNvbG91cmZ1bCBwb2ludCBhdmFpbGFibGUgcmF0aGVyIHRoYW4gdGhlIHRhcmdldCwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGJlXG4gIC8vIGdhbXV0LWNsYW1wZWQgaW50byBhIG5lYXItZ3JheS5cbiAgbGV0IGJlc3QgPSB0YXJnZXRMO1xuICBsZXQgYmVzdEMgPSBtYXhDaHJvbWEodGFyZ2V0TCwgaCk7XG4gIGZvciAobGV0IEwgPSBsbzsgTCA8PSBoaTsgTCArPSAwLjAxKSB7XG4gICAgY29uc3QgYyA9IG1heENocm9tYShMLCBoKTtcbiAgICBpZiAoYyA+IGJlc3RDKSB7XG4gICAgICBiZXN0QyA9IGM7XG4gICAgICBiZXN0ID0gTDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Q7XG59XG5cbi8qKlxuICogRGVyaXZlIDUgY2hhcnQgY29sb3JzIGZyb20gb25lIGJhc2UgaGV4LCBzcHJlYWRpbmcgaHVlcyB3aWRlbHkgYW5kXG4gKiBhbHRlcm5hdGluZyBsaWdodG5lc3Mgc28gYWRqYWNlbnQgc2VyaWVzIHN0YXkgc2VwYXJhYmxlIOKAlCBpbmNsdWRpbmcgZm9yXG4gKiByZWQtZ3JlZW4gY29sb3VyIGJsaW5kbmVzcywgd2hlcmUgaHVlIGFsb25lIGNhcnJpZXMgYWxtb3N0IG5vIGluZm9ybWF0aW9uIGFuZFxuICogdGhlIGxpZ2h0bmVzcyBkaWZmZXJlbmNlIGRvZXMgdGhlIHdvcmsuXG4gKlxuICogYG1vZGVgIHJlLXN0ZXBzIHRoZSByYW1wIGZvciB0aGUgdGFyZ2V0IHN1cmZhY2UuIERhcmsgaXMgTk9UIGEgbGlnaHRlbmVkIGZsaXBcbiAqIG9mIGxpZ2h0OiBpdHMgdXNhYmxlIGxpZ2h0bmVzcyBiYW5kIGlzIGJvdGggbmFycm93ZXIgYW5kIGxvd2VyLlxuICpcbiAqIE5PVEU6IGEgcGFsZXR0ZSBkZXJpdmVkIGZyb20gYW4gYXJiaXRyYXJ5IGJyYW5kIGh1ZSBjYW5ub3QgYmUgKmd1YXJhbnRlZWQqXG4gKiBjb2xvdXItYmxpbmQtc2FmZSDigJQgZml2ZSBodWVzIHNwcmVhZCBmcm9tIG9uZSBzdGFydGluZyBwb2ludCB3aWxsLCBmb3Igc29tZVxuICogYmFzZXMsIHB1dCBhIGNvbmZ1c2FibGUgcGFpciBuZXh0IHRvIGVhY2ggb3RoZXIuIFRoZSBzaGlwcGVkIGRlZmF1bHRzIGluXG4gKiBgdGhlbWUuY3NzYCBhcmUgYSBmaXhlZCwgdmFsaWRhdGVkIHBhbGV0dGU7IHByZWZlciB0aG9zZSB1bmxlc3MgYnJhbmQtbWF0Y2hlZFxuICogY2hhcnRzIG1hdHRlciBtb3JlIHRoYW4gZ3VhcmFudGVlZCBzZXBhcmF0aW9uLiBXaGF0ZXZlciB5b3UgdXNlLCBrZWVwIHRoZVxuICogbGVnZW5kIGFuZCBkaXJlY3QgbGFiZWxzIG9uLCBzbyBjb2xvdXIgaXMgbmV2ZXIgdGhlIG9ubHkgY2hhbm5lbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ2hhcnRSYW1wKGhleDogc3RyaW5nLCBtb2RlOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0Jyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgYmFzZSA9IGhleFRvT2tsY2goL14jLy50ZXN0KGhleCkgPyBoZXggOiAnIzI1NjNlYicpO1xuICBjb25zdCBbbG8sIGhpXSA9IENIQVJUX0JBTkRbbW9kZV07XG5cbiAgLy8gSHVlIG9mZnNldHMgc3ByZWFkIH43MuKAkzE4MMKwIGFwYXJ0IHJhdGhlciB0aGFuIHRoZSDCsTMwwrAgXCJhbmFsb2dvdXNcIiBzZXQgdGhlXG4gIC8vIGZpcnN0IHZlcnNpb24gdXNlZCwgd2hpY2ggbGVmdCBuZWlnaGJvdXJpbmcgc2VyaWVzIG9ubHkgMzLCsCBhcGFydCDigJQgdW5kZXJcbiAgLy8gcHJvdGFub3BpYSB0aG9zZSBjb2xsYXBzZWQgdG8gzpRFIDEuNSwgaS5lLiB0aGUgc2FtZSBjb2xvdXIuIExpZ2h0bmVzcyBhbHNvXG4gIC8vIGFsdGVybmF0ZXMsIHNvIGh1ZXMgdGhhdCBzdGlsbCBjb252ZXJnZSB1bmRlciBDVkQgZGlmZmVyIGluIGx1bWluYW5jZS5cbiAgY29uc3QgZGVmcyA9XG4gICAgbW9kZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBbXG4gICAgICAgICAgeyBkaDogMCwgTDogMC41NSB9LFxuICAgICAgICAgIHsgZGg6IDE4MCwgTDogMC43MiB9LFxuICAgICAgICAgIHsgZGg6IDkwLCBMOiAwLjQ2IH0sXG4gICAgICAgICAgeyBkaDogMjcwLCBMOiAwLjY4IH0sXG4gICAgICAgICAgeyBkaDogNDUsIEw6IDAuNiB9LFxuICAgICAgICBdXG4gICAgICA6IFtcbiAgICAgICAgICB7IGRoOiAwLCBMOiAwLjU4IH0sXG4gICAgICAgICAgeyBkaDogMTgwLCBMOiAwLjY2IH0sXG4gICAgICAgICAgeyBkaDogOTAsIEw6IDAuNSB9LFxuICAgICAgICAgIHsgZGg6IDI3MCwgTDogMC42MyB9LFxuICAgICAgICAgIHsgZGg6IDQ1LCBMOiAwLjU0IH0sXG4gICAgICAgIF07XG5cbiAgcmV0dXJuIGRlZnMubWFwKChkKSA9PiB7XG4gICAgY29uc3QgaCA9IGJhc2UuaCArIGQuZGg7XG4gICAgY29uc3QgTCA9IHNuYXBMaWdodG5lc3MoZC5MLCBoLCBsbywgaGkpO1xuICAgIHJldHVybiByZ2JUcmlwbGV0KG9rbGNoVG9IZXgoTCwgMC4xNSwgaCkpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFbWl0IHRoZSBgOnJvb3RgICsgYC5kYXJrYCBgLS1jaGFydC0x4oCmNWAgYmxvY2sgZm9yIGEgY2hhcnQgYmFzZSBjb2xvciwgd2l0aFxuICogZWFjaCBtb2RlIHJlLXN0ZXBwZWQgZm9yIGl0cyBvd24gc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ2hhcnRDc3MoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB2YXJzID0gKG1vZGU6ICdsaWdodCcgfCAnZGFyaycpID0+XG4gICAgZ2VuZXJhdGVDaGFydFJhbXAoaGV4LCBtb2RlKVxuICAgICAgLm1hcCgodCwgaSkgPT4gYC0tY2hhcnQtJHtpICsgMX06ICR7dH07YClcbiAgICAgIC5qb2luKCdcXG4gICAgICAgICcpO1xuXG4gIHJldHVybiBgXG4gICAgICA6cm9vdCB7XG4gICAgICAgICR7dmFycygnbGlnaHQnKX1cbiAgICAgIH1cblxuICAgICAgLmRhcmsge1xuICAgICAgICAke3ZhcnMoJ2RhcmsnKX1cbiAgICAgIH1cbiAgICBgO1xufVxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -86,4 +86,64 @@ export * from './lib/phone-number.service';
|
|
|
86
86
|
export * from './lib/country-codes.service';
|
|
87
87
|
export * from './lib/resizable-panel.component';
|
|
88
88
|
export * from './lib/resizable-panel-item.component';
|
|
89
|
-
|
|
89
|
+
export * from './lib/aspect-ratio.component';
|
|
90
|
+
export * from './lib/resizable.component';
|
|
91
|
+
export * from './lib/context-menu.component';
|
|
92
|
+
export * from './lib/context-menu-trigger.directive';
|
|
93
|
+
export * from './lib/context-menu.service';
|
|
94
|
+
export * from './lib/select.service';
|
|
95
|
+
export * from './lib/radio-service';
|
|
96
|
+
export * from './lib/types/date-range';
|
|
97
|
+
/* --- shadcn parity: phase 1 --- */
|
|
98
|
+
export * from './lib/spinner.component';
|
|
99
|
+
export * from './lib/kbd.component';
|
|
100
|
+
export * from './lib/item.component';
|
|
101
|
+
export * from './lib/native-select.component';
|
|
102
|
+
export * from './lib/typography.component';
|
|
103
|
+
/* --- shadcn parity: phase 2 --- */
|
|
104
|
+
export * from './lib/field.component';
|
|
105
|
+
export * from './lib/input-group.component';
|
|
106
|
+
/* --- shadcn parity: phase 3 --- */
|
|
107
|
+
export * from './lib/table.component';
|
|
108
|
+
export * from './lib/menubar.component';
|
|
109
|
+
export * from './lib/navigation-menu.component';
|
|
110
|
+
/* --- shadcn parity: phase 4 --- */
|
|
111
|
+
export * from './lib/command.service';
|
|
112
|
+
export * from './lib/command.component';
|
|
113
|
+
export * from './lib/command-dialog.component';
|
|
114
|
+
export * from './lib/combobox.component';
|
|
115
|
+
/* --- AI & chat: transcript surface --- */
|
|
116
|
+
export * from './lib/message-scroller.service';
|
|
117
|
+
export * from './lib/message-scroller.component';
|
|
118
|
+
export * from './lib/message.component';
|
|
119
|
+
export * from './lib/bubble.component';
|
|
120
|
+
export * from './lib/marker.component';
|
|
121
|
+
export * from './lib/attachment.component';
|
|
122
|
+
export * from './lib/conversation.component';
|
|
123
|
+
/* --- AI & chat: composer and response parts --- */
|
|
124
|
+
export * from './lib/prompt-input.component';
|
|
125
|
+
export * from './lib/reasoning.component';
|
|
126
|
+
export * from './lib/tool.component';
|
|
127
|
+
export * from './lib/sources.component';
|
|
128
|
+
export * from './lib/suggestion.component';
|
|
129
|
+
export * from './lib/inline-citation.component';
|
|
130
|
+
export * from './lib/shimmer.component';
|
|
131
|
+
/* --- AI & chat: agent workflow --- */
|
|
132
|
+
export * from './lib/task.component';
|
|
133
|
+
export * from './lib/chain-of-thought.component';
|
|
134
|
+
export * from './lib/plan.component';
|
|
135
|
+
export * from './lib/queue.component';
|
|
136
|
+
export * from './lib/checkpoint.component';
|
|
137
|
+
export * from './lib/confirmation.component';
|
|
138
|
+
export * from './lib/context.component';
|
|
139
|
+
export * from './lib/model-selector.component';
|
|
140
|
+
/* --- Charts --- */
|
|
141
|
+
export * from './lib/chart.service';
|
|
142
|
+
export * from './lib/chart.component';
|
|
143
|
+
export * from './lib/chart-pie.component';
|
|
144
|
+
/* --- Internationalisation --- */
|
|
145
|
+
export * from './lib/direction.component';
|
|
146
|
+
/* --- Date & time --- */
|
|
147
|
+
export * from './lib/time-picker.component';
|
|
148
|
+
export * from './lib/date-time-picker.component';
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLDhCQUE4QixDQUFBO0FB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Q0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsOEJBQThCLENBQUM7QUFFN0Msb0RBQW9EO0FBQ3BELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMseUJBQXlCLENBQUM7QUFFeEMsdUNBQXVDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxvQkFBb0I7QUFDcEIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsa0NBQWtDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMseUJBQXlCO0FBQ3pCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdG9sbGVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jb2xvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdC1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdC1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N3aXRjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NrZWxldG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b29sdGlwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2FzdC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9hc3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9sbGUtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL211bHRpLXNlbGVjdC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXNrZWQtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1waWNrZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvbGxlLWNlbGwuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWNjb3JkaW9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLXJlZidcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC1zdGFjay5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24tZ3JvdXAuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFuZ2UtY2FsZW5kYXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhlbWUuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLWxhYmVsLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxlcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F2YXRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXZhdGFyLWZhbGxiYWNrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmVhZGNydW1iLWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWItc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vdHAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290cC1zbG90LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vdHAtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BvcG92ZXItY29udGVudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlZ21lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZGViYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nhcm91c2VsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xhYmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2dyZXNzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbGlkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9nZ2xlLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ob3Zlci1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xsYXBzaWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2Nyb2xsLWFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxlcnQtZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxlcnQtZGlhbG9nLnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsZXJ0LWRpYWxvZy1keW5hbWljLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGVldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGVldC1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlZXQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlZXQtd3JhcHBlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY291bnRyeS1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1udW1iZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3VudHJ5LWNvZGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzaXphYmxlLXBhbmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNpemFibGUtcGFuZWwtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNwZWN0LXJhdGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNpemFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRleHQtbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGV4dC1tZW51LXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvZGF0ZS1yYW5nZSc7XG5cbi8qIC0tLSBzaGFkY24gcGFyaXR5OiBwaGFzZSAxIC0tLSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Bpbm5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2JkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uYXRpdmUtc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBvZ3JhcGh5LmNvbXBvbmVudCc7XG5cbi8qIC0tLSBzaGFkY24gcGFyaXR5OiBwaGFzZSAyIC0tLSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XG5cbi8qIC0tLSBzaGFkY24gcGFyaXR5OiBwaGFzZSAzIC0tLSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnViYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25hdmlnYXRpb24tbWVudS5jb21wb25lbnQnO1xuXG5cbi8qIC0tLSBzaGFkY24gcGFyaXR5OiBwaGFzZSA0IC0tLSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbWFuZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1hbmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1hbmQtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21ib2JveC5jb21wb25lbnQnO1xuXG4vKiAtLS0gQUkgJiBjaGF0OiB0cmFuc2NyaXB0IHN1cmZhY2UgLS0tICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLXNjcm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1zY3JvbGxlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnViYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXJrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F0dGFjaG1lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnZlcnNhdGlvbi5jb21wb25lbnQnO1xuXG4vKiAtLS0gQUkgJiBjaGF0OiBjb21wb3NlciBhbmQgcmVzcG9uc2UgcGFydHMgLS0tICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9tcHQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlYXNvbmluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9vbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc291cmNlcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3VnZ2VzdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5saW5lLWNpdGF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGltbWVyLmNvbXBvbmVudCc7XG5cbi8qIC0tLSBBSSAmIGNoYXQ6IGFnZW50IHdvcmtmbG93IC0tLSAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFzay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhaW4tb2YtdGhvdWdodC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGxhbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcXVldWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrcG9pbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwtc2VsZWN0b3IuY29tcG9uZW50JztcblxuLyogLS0tIENoYXJ0cyAtLS0gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0LXBpZS5jb21wb25lbnQnO1xuXG4vKiAtLS0gSW50ZXJuYXRpb25hbGlzYXRpb24gLS0tICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3Rpb24uY29tcG9uZW50Jztcbi8qIC0tLSBEYXRlICYgdGltZSAtLS0gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG4iXX0=
|