@ngxsmk/theme 1.3.0 → 1.3.2

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ngxsmk/theme
2
2
 
3
- The design-token engine of the [NGXSMK UI kit](https://github.com/NGXSMK/ngxsmk-ui-kit). A `ThemeConfig` maps to a flat set of `--ngxsmk-*` CSS custom properties that every `@ngxsmk/core` component reads. Ships 4 presets, light/dark/system strategies, and runtime theme switching via `NgxsmkThemeService`.
3
+ The design-token engine of the [NGXSMK UI kit](https://ngxsmk.github.io/ngxsmk-ui-kit). A `ThemeConfig` maps to a flat set of `--ngxsmk-*` CSS custom properties that every `@ngxsmk/core` component reads. Ships 4 presets, light/dark/system strategies, and runtime theme switching via `NgxsmkThemeService`.
4
4
 
5
5
  ## Compatibility
6
6
 
@@ -1,4 +1,4 @@
1
- export function hexToHsl(hex) {
1
+ function hexToRgb(hex) {
2
2
  const value = hex.replace('#', '');
3
3
  const full = value.length === 3
4
4
  ? value
@@ -12,90 +12,80 @@ export function hexToHsl(hex) {
12
12
  const r = parseInt(full.slice(0, 2), 16) / 255;
13
13
  const g = parseInt(full.slice(2, 4), 16) / 255;
14
14
  const b = parseInt(full.slice(4, 6), 16) / 255;
15
- const max = Math.max(r, g, b);
16
- const min = Math.min(r, g, b);
17
- const delta = max - min;
18
- const l = (max + min) / 2;
19
- let h = 0;
20
- let s = 0;
21
- if (delta !== 0) {
22
- s = delta / (1 - Math.abs(2 * l - 1));
23
- switch (max) {
24
- case r:
25
- h = 60 * (((g - b) / delta) % 6);
26
- break;
27
- case g:
28
- h = 60 * ((b - r) / delta + 2);
29
- break;
30
- default:
31
- h = 60 * ((r - g) / delta + 4);
32
- }
33
- }
15
+ return { r, g, b };
16
+ }
17
+ function srgbToLinear(c) {
18
+ return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
19
+ }
20
+ function linearToSrgb(c) {
21
+ return c <= 0.0031308 ? c * 12.92 : 1.055 * Math.pow(c, 1 / 2.4) - 0.055;
22
+ }
23
+ export function hexToOklch(hex) {
24
+ const { r: sr, g: sg, b: sb } = hexToRgb(hex);
25
+ const r = srgbToLinear(sr);
26
+ const g = srgbToLinear(sg);
27
+ const b = srgbToLinear(sb);
28
+ const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
29
+ const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
30
+ const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
31
+ const l_ = Math.cbrt(l);
32
+ const m_ = Math.cbrt(m);
33
+ const s_ = Math.cbrt(s);
34
+ const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;
35
+ const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;
36
+ const b_ = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;
37
+ const C = Math.sqrt(a * a + b_ * b_);
38
+ let h = (Math.atan2(b_, a) * 180) / Math.PI;
34
39
  if (h < 0)
35
40
  h += 360;
36
- return { h, s: s * 100, l: l * 100 };
41
+ return { l: L, c: C, h };
37
42
  }
38
- export function hslToHex({ h, s, l }) {
39
- const sn = s / 100;
40
- const ln = l / 100;
41
- const c = (1 - Math.abs(2 * ln - 1)) * sn;
42
- const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
43
- const m = ln - c / 2;
44
- let rgb;
45
- if (h < 60)
46
- rgb = [c, x, 0];
47
- else if (h < 120)
48
- rgb = [x, c, 0];
49
- else if (h < 180)
50
- rgb = [0, c, x];
51
- else if (h < 240)
52
- rgb = [0, x, c];
53
- else if (h < 300)
54
- rgb = [x, 0, c];
55
- else
56
- rgb = [c, 0, x];
57
- const toHex = (v) => Math.round((v + m) * 255)
58
- .toString(16)
59
- .padStart(2, '0');
60
- return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`.toUpperCase();
43
+ export function oklchToHex({ l: L, c: C, h }) {
44
+ const hRad = (h * Math.PI) / 180;
45
+ const a = C * Math.cos(hRad);
46
+ const b_ = C * Math.sin(hRad);
47
+ const l_ = L + 0.3963377774 * a + 0.2158037573 * b_;
48
+ const m_ = L - 0.1055613458 * a - 0.0638541728 * b_;
49
+ const s_ = L - 0.0894841775 * a - 1.291485548 * b_;
50
+ const l = l_ * l_ * l_;
51
+ const m = m_ * m_ * m_;
52
+ const s = s_ * s_ * s_;
53
+ const r = +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;
54
+ const g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
55
+ const b = -0.0041960863 * l - 0.7034186148 * m + 1.707614701 * s;
56
+ const rClamped = Math.min(255, Math.max(0, Math.round(linearToSrgb(r) * 255)));
57
+ const gClamped = Math.min(255, Math.max(0, Math.round(linearToSrgb(g) * 255)));
58
+ const bClamped = Math.min(255, Math.max(0, Math.round(linearToSrgb(b) * 255)));
59
+ const toHex = (v) => v.toString(16).padStart(2, '0');
60
+ return `#${toHex(rClamped)}${toHex(gClamped)}${toHex(bClamped)}`.toUpperCase();
61
61
  }
62
- /** Shift a color's lightness by `delta` percentage points (clamped 0–100). */
62
+ /** Shift a color's lightness by `delta` (clamped 0–1). */
63
63
  export function shiftLightness(hex, delta) {
64
- const hsl = hexToHsl(hex);
65
- return hslToHex({ ...hsl, l: Math.min(100, Math.max(0, hsl.l + delta)) });
64
+ const oklch = hexToOklch(hex);
65
+ return oklchToHex({ ...oklch, l: Math.min(1.0, Math.max(0.0, oklch.l + delta)) });
66
66
  }
67
- /** Rotate a color's hue by `degrees`, keeping saturation and lightness. */
67
+ /** Rotate a color's hue by `degrees`, keeping chroma and lightness. */
68
68
  export function rotateHue(hex, degrees) {
69
- const hsl = hexToHsl(hex);
70
- return hslToHex({ ...hsl, h: (((hsl.h + degrees) % 360) + 360) % 360 });
69
+ const oklch = hexToOklch(hex);
70
+ return oklchToHex({ ...oklch, h: (((oklch.h + degrees) % 360) + 360) % 360 });
71
71
  }
72
- /**
73
- * Lightness stops for each scale step. Tuned so that step 500/600 stays close
74
- * to typical brand-color lightness and the extremes remain usable as tinted
75
- * backgrounds (50–100) and readable text (900–950).
76
- */
72
+ /** Lightness stops for each scale step in OKLCH (0–1). */
77
73
  const LIGHTNESS_STOPS = {
78
- 50: 97,
79
- 100: 94,
80
- 200: 87,
81
- 300: 78,
82
- 400: 66,
83
- 500: 56,
84
- 600: 48,
85
- 700: 40,
86
- 800: 32,
87
- 900: 25,
88
- 950: 16,
74
+ 50: 0.97,
75
+ 100: 0.94,
76
+ 200: 0.87,
77
+ 300: 0.78,
78
+ 400: 0.66,
79
+ 500: 0.56,
80
+ 600: 0.48,
81
+ 700: 0.4,
82
+ 800: 0.32,
83
+ 900: 0.25,
84
+ 950: 0.16,
89
85
  };
90
- /**
91
- * Derive a full 50–950 color scale from a single brand hex.
92
- *
93
- * The input color keeps its exact value at the step whose lightness stop is
94
- * nearest to the input's own lightness, so `scale[step]` round-trips brand
95
- * colors instead of shifting them.
96
- */
86
+ /** Derive a full 50–950 color scale from a single brand hex. */
97
87
  export function deriveScale(baseHex) {
98
- const base = hexToHsl(baseHex);
88
+ const base = hexToOklch(baseHex);
99
89
  let nearest = 500;
100
90
  let nearestDelta = Number.POSITIVE_INFINITY;
101
91
  for (const [step, stop] of Object.entries(LIGHTNESS_STOPS)) {
@@ -108,8 +98,15 @@ export function deriveScale(baseHex) {
108
98
  const scale = {};
109
99
  for (const [step, stop] of Object.entries(LIGHTNESS_STOPS)) {
110
100
  const key = Number(step);
111
- scale[key] = key === nearest ? hslToHex(base) : hslToHex({ h: base.h, s: base.s, l: stop });
101
+ if (key === nearest) {
102
+ scale[key] = oklchToHex(base);
103
+ }
104
+ else {
105
+ // Perceptually scale chroma using a sine taper so that extremes (50/950) don't clip/saturate unnaturally.
106
+ const scaleChroma = base.c * Math.sin(Math.PI * stop);
107
+ scale[key] = oklchToHex({ l: stop, c: scaleChroma, h: base.h });
108
+ }
112
109
  }
113
110
  return scale;
114
111
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvbGliL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVztJQUNsQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxNQUFNLElBQUksR0FDUixLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEtBQUs7YUFDRixLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDL0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ1osS0FBSyxDQUFDO2dCQUNKLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUjtnQkFDRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUFFLENBQUMsSUFBSSxHQUFHLENBQUM7SUFFcEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQU87SUFDdkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckIsSUFBSSxHQUE2QixDQUFDO0lBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEdBQUc7UUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztRQUM3QixH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QUM7UUFDN0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yU2NhbGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqIEhTTCB0cmlwbGU6IGggaW4gWzAsMzYwKSwgcyBhbmQgbCBpbiBbMCwxMDBdLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIc2wge1xuICBoOiBudW1iZXI7XG4gIHM6IG51bWJlcjtcbiAgbDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9Ic2woaGV4OiBzdHJpbmcpOiBIc2wge1xuICBjb25zdCB2YWx1ZSA9IGhleC5yZXBsYWNlKCcjJywgJycpO1xuICBjb25zdCBmdWxsID1cbiAgICB2YWx1ZS5sZW5ndGggPT09IDNcbiAgICAgID8gdmFsdWVcbiAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgLm1hcCgoYykgPT4gYyArIGMpXG4gICAgICAgICAgLmpvaW4oJycpXG4gICAgICA6IHZhbHVlO1xuICBpZiAoIS9eWzAtOWEtZkEtRl17Nn0kLy50ZXN0KGZ1bGwpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhleCBjb2xvcjogXCIke2hleH1cImApO1xuICB9XG5cbiAgY29uc3QgciA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoMCwgMiksIDE2KSAvIDI1NTtcbiAgY29uc3QgZyA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoMiwgNCksIDE2KSAvIDI1NTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoNCwgNiksIDE2KSAvIDI1NTtcblxuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG4gIGNvbnN0IGRlbHRhID0gbWF4IC0gbWluO1xuICBjb25zdCBsID0gKG1heCArIG1pbikgLyAyO1xuXG4gIGxldCBoID0gMDtcbiAgbGV0IHMgPSAwO1xuICBpZiAoZGVsdGEgIT09IDApIHtcbiAgICBzID0gZGVsdGEgLyAoMSAtIE1hdGguYWJzKDIgKiBsIC0gMSkpO1xuICAgIHN3aXRjaCAobWF4KSB7XG4gICAgICBjYXNlIHI6XG4gICAgICAgIGggPSA2MCAqICgoKGcgLSBiKSAvIGRlbHRhKSAlIDYpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZzpcbiAgICAgICAgaCA9IDYwICogKChiIC0gcikgLyBkZWx0YSArIDIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGggPSA2MCAqICgociAtIGcpIC8gZGVsdGEgKyA0KTtcbiAgICB9XG4gIH1cbiAgaWYgKGggPCAwKSBoICs9IDM2MDtcblxuICByZXR1cm4geyBoLCBzOiBzICogMTAwLCBsOiBsICogMTAwIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoc2xUb0hleCh7IGgsIHMsIGwgfTogSHNsKTogc3RyaW5nIHtcbiAgY29uc3Qgc24gPSBzIC8gMTAwO1xuICBjb25zdCBsbiA9IGwgLyAxMDA7XG4gIGNvbnN0IGMgPSAoMSAtIE1hdGguYWJzKDIgKiBsbiAtIDEpKSAqIHNuO1xuICBjb25zdCB4ID0gYyAqICgxIC0gTWF0aC5hYnMoKChoIC8gNjApICUgMikgLSAxKSk7XG4gIGNvbnN0IG0gPSBsbiAtIGMgLyAyO1xuXG4gIGxldCByZ2I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgaWYgKGggPCA2MCkgcmdiID0gW2MsIHgsIDBdO1xuICBlbHNlIGlmIChoIDwgMTIwKSByZ2IgPSBbeCwgYywgMF07XG4gIGVsc2UgaWYgKGggPCAxODApIHJnYiA9IFswLCBjLCB4XTtcbiAgZWxzZSBpZiAoaCA8IDI0MCkgcmdiID0gWzAsIHgsIGNdO1xuICBlbHNlIGlmIChoIDwgMzAwKSByZ2IgPSBbeCwgMCwgY107XG4gIGVsc2UgcmdiID0gW2MsIDAsIHhdO1xuXG4gIGNvbnN0IHRvSGV4ID0gKHY6IG51bWJlcikgPT5cbiAgICBNYXRoLnJvdW5kKCh2ICsgbSkgKiAyNTUpXG4gICAgICAudG9TdHJpbmcoMTYpXG4gICAgICAucGFkU3RhcnQoMiwgJzAnKTtcblxuICByZXR1cm4gYCMke3RvSGV4KHJnYlswXSl9JHt0b0hleChyZ2JbMV0pfSR7dG9IZXgocmdiWzJdKX1gLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKiBTaGlmdCBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IGBkZWx0YWAgcGVyY2VudGFnZSBwb2ludHMgKGNsYW1wZWQgMOKAkzEwMCkuICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRMaWdodG5lc3MoaGV4OiBzdHJpbmcsIGRlbHRhOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBoc2wgPSBoZXhUb0hzbChoZXgpO1xuICByZXR1cm4gaHNsVG9IZXgoeyAuLi5oc2wsIGw6IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgaHNsLmwgKyBkZWx0YSkpIH0pO1xufVxuXG4vKiogUm90YXRlIGEgY29sb3IncyBodWUgYnkgYGRlZ3JlZXNgLCBrZWVwaW5nIHNhdHVyYXRpb24gYW5kIGxpZ2h0bmVzcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVIdWUoaGV4OiBzdHJpbmcsIGRlZ3JlZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGhzbCA9IGhleFRvSHNsKGhleCk7XG4gIHJldHVybiBoc2xUb0hleCh7IC4uLmhzbCwgaDogKCgoaHNsLmggKyBkZWdyZWVzKSAlIDM2MCkgKyAzNjApICUgMzYwIH0pO1xufVxuXG4vKipcbiAqIExpZ2h0bmVzcyBzdG9wcyBmb3IgZWFjaCBzY2FsZSBzdGVwLiBUdW5lZCBzbyB0aGF0IHN0ZXAgNTAwLzYwMCBzdGF5cyBjbG9zZVxuICogdG8gdHlwaWNhbCBicmFuZC1jb2xvciBsaWdodG5lc3MgYW5kIHRoZSBleHRyZW1lcyByZW1haW4gdXNhYmxlIGFzIHRpbnRlZFxuICogYmFja2dyb3VuZHMgKDUw4oCTMTAwKSBhbmQgcmVhZGFibGUgdGV4dCAoOTAw4oCTOTUwKS5cbiAqL1xuY29uc3QgTElHSFRORVNTX1NUT1BTOiBSZWNvcmQ8a2V5b2YgQ29sb3JTY2FsZSwgbnVtYmVyPiA9IHtcbiAgNTA6IDk3LFxuICAxMDA6IDk0LFxuICAyMDA6IDg3LFxuICAzMDA6IDc4LFxuICA0MDA6IDY2LFxuICA1MDA6IDU2LFxuICA2MDA6IDQ4LFxuICA3MDA6IDQwLFxuICA4MDA6IDMyLFxuICA5MDA6IDI1LFxuICA5NTA6IDE2LFxufTtcblxuLyoqXG4gKiBEZXJpdmUgYSBmdWxsIDUw4oCTOTUwIGNvbG9yIHNjYWxlIGZyb20gYSBzaW5nbGUgYnJhbmQgaGV4LlxuICpcbiAqIFRoZSBpbnB1dCBjb2xvciBrZWVwcyBpdHMgZXhhY3QgdmFsdWUgYXQgdGhlIHN0ZXAgd2hvc2UgbGlnaHRuZXNzIHN0b3AgaXNcbiAqIG5lYXJlc3QgdG8gdGhlIGlucHV0J3Mgb3duIGxpZ2h0bmVzcywgc28gYHNjYWxlW3N0ZXBdYCByb3VuZC10cmlwcyBicmFuZFxuICogY29sb3JzIGluc3RlYWQgb2Ygc2hpZnRpbmcgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVNjYWxlKGJhc2VIZXg6IHN0cmluZyk6IENvbG9yU2NhbGUge1xuICBjb25zdCBiYXNlID0gaGV4VG9Ic2woYmFzZUhleCk7XG5cbiAgbGV0IG5lYXJlc3Q6IGtleW9mIENvbG9yU2NhbGUgPSA1MDA7XG4gIGxldCBuZWFyZXN0RGVsdGEgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIGZvciAoY29uc3QgW3N0ZXAsIHN0b3BdIG9mIE9iamVjdC5lbnRyaWVzKExJR0hUTkVTU19TVE9QUykpIHtcbiAgICBjb25zdCBkZWx0YSA9IE1hdGguYWJzKHN0b3AgLSBiYXNlLmwpO1xuICAgIGlmIChkZWx0YSA8IG5lYXJlc3REZWx0YSkge1xuICAgICAgbmVhcmVzdERlbHRhID0gZGVsdGE7XG4gICAgICBuZWFyZXN0ID0gTnVtYmVyKHN0ZXApIGFzIGtleW9mIENvbG9yU2NhbGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NhbGUgPSB7fSBhcyBDb2xvclNjYWxlO1xuICBmb3IgKGNvbnN0IFtzdGVwLCBzdG9wXSBvZiBPYmplY3QuZW50cmllcyhMSUdIVE5FU1NfU1RPUFMpKSB7XG4gICAgY29uc3Qga2V5ID0gTnVtYmVyKHN0ZXApIGFzIGtleW9mIENvbG9yU2NhbGU7XG4gICAgc2NhbGVba2V5XSA9IGtleSA9PT0gbmVhcmVzdCA/IGhzbFRvSGV4KGJhc2UpIDogaHNsVG9IZXgoeyBoOiBiYXNlLmgsIHM6IGJhc2UucywgbDogc3RvcCB9KTtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvbGliL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDM0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxJQUFJLEdBQ1IsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxLQUFLO2FBQ0YsS0FBSyxDQUFDLEVBQUUsQ0FBQzthQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDL0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsQ0FBUztJQUM3QixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFTO0lBQzdCLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDM0UsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBVztJQUNwQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0IsTUFBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEIsTUFBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLEVBQUUsR0FBRyxXQUFXLEdBQUcsRUFBRSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbkUsTUFBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLEVBQUUsR0FBRyxXQUFXLEdBQUcsRUFBRSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbkUsTUFBTSxFQUFFLEdBQUcsWUFBWSxHQUFHLEVBQUUsR0FBRyxZQUFZLEdBQUcsRUFBRSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFcEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUFFLENBQUMsSUFBSSxHQUFHLENBQUM7SUFFcEIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQVM7SUFDakQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU5QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3BELE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDcEQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUVuRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUV2QixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDbEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUVqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsTUFBTSxRQUFR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QUFDO0lBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBcUIsQ0FBQztRQUM3QyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNwQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sMEdBQTBHO1lBQzFHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKiogT0tMQ0ggY29sb3I6IGwgaW4gWzAsMV0sIGMgaW4gWzAsMC40XSwgaCBpbiBbMCwzNjApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPa2xjaCB7XG4gIGw6IG51bWJlcjtcbiAgYzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyIH0ge1xuICBjb25zdCB2YWx1ZSA9IGhleC5yZXBsYWNlKCcjJywgJycpO1xuICBjb25zdCBmdWxsID1cbiAgICB2YWx1ZS5sZW5ndGggPT09IDNcbiAgICAgID8gdmFsdWVcbiAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgLm1hcCgoYykgPT4gYyArIGMpXG4gICAgICAgICAgLmpvaW4oJycpXG4gICAgICA6IHZhbHVlO1xuICBpZiAoIS9eWzAtOWEtZkEtRl17Nn0kLy50ZXN0KGZ1bGwpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhleCBjb2xvcjogXCIke2hleH1cImApO1xuICB9XG5cbiAgY29uc3QgciA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoMCwgMiksIDE2KSAvIDI1NTtcbiAgY29uc3QgZyA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoMiwgNCksIDE2KSAvIDI1NTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KGZ1bGwuc2xpY2UoNCwgNiksIDE2KSAvIDI1NTtcbiAgcmV0dXJuIHsgciwgZywgYiB9O1xufVxuXG5mdW5jdGlvbiBzcmdiVG9MaW5lYXIoYzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGMgPD0gMC4wNDA0NSA/IGMgLyAxMi45MiA6IE1hdGgucG93KChjICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG59XG5cbmZ1bmN0aW9uIGxpbmVhclRvU3JnYihjOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYyA8PSAwLjAwMzEzMDggPyBjICogMTIuOTIgOiAxLjA1NSAqIE1hdGgucG93KGMsIDEgLyAyLjQpIC0gMC4wNTU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb09rbGNoKGhleDogc3RyaW5nKTogT2tsY2gge1xuICBjb25zdCB7IHI6IHNyLCBnOiBzZywgYjogc2IgfSA9IGhleFRvUmdiKGhleCk7XG4gIGNvbnN0IHIgPSBzcmdiVG9MaW5lYXIoc3IpO1xuICBjb25zdCBnID0gc3JnYlRvTGluZWFyKHNnKTtcbiAgY29uc3QgYiA9IHNyZ2JUb0xpbmVhcihzYik7XG5cbiAgY29uc3QgbCA9IDAuNDEyMjIxNDcwOCAqIHIgKyAwLjUzNjMzMjUzNjMgKiBnICsgMC4wNTE0NDU5OTI5ICogYjtcbiAgY29uc3QgbSA9IDAuMjExOTAzNDk4MiAqIHIgKyAwLjY4MDY5OTU0NTEgKiBnICsgMC4xMDczOTY5NTY2ICogYjtcbiAgY29uc3QgcyA9IDAuMDg4MzAyNDYxOSAqIHIgKyAwLjI4MTcxODgzNzYgKiBnICsgMC42Mjk5Nzg3MDA1ICogYjtcblxuICBjb25zdCBsXyA9IE1hdGguY2JydChsKTtcbiAgY29uc3QgbV8gPSBNYXRoLmNicnQobSk7XG4gIGNvbnN0IHNfID0gTWF0aC5jYnJ0KHMpO1xuXG4gIGNvbnN0IEwgPSAwLjIxMDQ1NDI1NTMgKiBsXyArIDAuNzkzNjE3Nzg1ICogbV8gLSAwLjAwNDA3MjA0NjggKiBzXztcbiAgY29uc3QgYSA9IDEuOTc3OTk4NDk1MSAqIGxfIC0gMi40Mjg1OTIyMDUgKiBtXyArIDAuNDUwNTkzNzA5OSAqIHNfO1xuICBjb25zdCBiXyA9IDAuMDI1OTA0MDM3MSAqIGxfICsgMC43ODI3NzE3NjYyICogbV8gLSAwLjgwODY3NTc2NiAqIHNfO1xuXG4gIGNvbnN0IEMgPSBNYXRoLnNxcnQoYSAqIGEgKyBiXyAqIGJfKTtcbiAgbGV0IGggPSAoTWF0aC5hdGFuMihiXywgYSkgKiAxODApIC8gTWF0aC5QSTtcbiAgaWYgKGggPCAwKSBoICs9IDM2MDtcblxuICByZXR1cm4geyBsOiBMLCBjOiBDLCBoIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBva2xjaFRvSGV4KHsgbDogTCwgYzogQywgaCB9OiBPa2xjaCk6IHN0cmluZyB7XG4gIGNvbnN0IGhSYWQgPSAoaCAqIE1hdGguUEkpIC8gMTgwO1xuICBjb25zdCBhID0gQyAqIE1hdGguY29zKGhSYWQpO1xuICBjb25zdCBiXyA9IEMgKiBNYXRoLnNpbihoUmFkKTtcblxuICBjb25zdCBsXyA9IEwgKyAwLjM5NjMzNzc3NzQgKiBhICsgMC4yMTU4MDM3NTczICogYl87XG4gIGNvbnN0IG1fID0gTCAtIDAuMTA1NTYxMzQ1OCAqIGEgLSAwLjA2Mzg1NDE3MjggKiBiXztcbiAgY29uc3Qgc18gPSBMIC0gMC4wODk0ODQxNzc1ICogYSAtIDEuMjkxNDg1NTQ4ICogYl87XG5cbiAgY29uc3QgbCA9IGxfICogbF8gKiBsXztcbiAgY29uc3QgbSA9IG1fICogbV8gKiBtXztcbiAgY29uc3QgcyA9IHNfICogc18gKiBzXztcblxuICBjb25zdCByID0gKzQuMDc2NzQxNjYyMSAqIGwgLSAzLjMwNzcxMTU5MTMgKiBtICsgMC4yMzA5Njk5MjkyICogcztcbiAgY29uc3QgZyA9IC0xLjI2ODQzODAwNDYgKiBsICsgMi42MDk3NTc0MDExICogbSAtIDAuMzQxMzE5Mzk2NSAqIHM7XG4gIGNvbnN0IGIgPSAtMC4wMDQxOTYwODYzICogbCAtIDAuNzAzNDE4NjE0OCAqIG0gKyAxLjcwNzYxNDcwMSAqIHM7XG5cbiAgY29uc3QgckNsYW1wZWQgPSBNYXRoLm1pbigyNTUsIE1hdGgubWF4KDAsIE1hdGgucm91bmQobGluZWFyVG9TcmdiKHIpICogMjU1KSkpO1xuICBjb25zdCBnQ2xhbXBlZCA9IE1hdGgubWluKDI1NSwgTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChsaW5lYXJUb1NyZ2IoZykgKiAyNTUpKSk7XG4gIGNvbnN0IGJDbGFtcGVkID0gTWF0aC5taW4oMjU1LCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKGxpbmVhclRvU3JnYihiKSAqIDI1NSkpKTtcblxuICBjb25zdCB0b0hleCA9ICh2OiBudW1iZXIpID0+IHYudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIHJldHVybiBgIyR7dG9IZXgockNsYW1wZWQpfSR7dG9IZXgoZ0NsYW1wZWQpfSR7dG9IZXgoYkNsYW1wZWQpfWAudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqIFNoaWZ0IGEgY29sb3IncyBsaWdodG5lc3MgYnkgYGRlbHRhYCAoY2xhbXBlZCAw4oCTMSkuICovXG5leHBvcnQgZnVuY3Rpb24gc2hpZnRMaWdodG5lc3MoaGV4OiBzdHJpbmcsIGRlbHRhOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBva2xjaCA9IGhleFRvT2tsY2goaGV4KTtcbiAgcmV0dXJuIG9rbGNoVG9IZXgoeyAuLi5va2xjaCwgbDogTWF0aC5taW4oMS4wLCBNYXRoLm1heCgwLjAsIG9rbGNoLmwgKyBkZWx0YSkpIH0pO1xufVxuXG4vKiogUm90YXRlIGEgY29sb3IncyBodWUgYnkgYGRlZ3JlZXNgLCBrZWVwaW5nIGNocm9tYSBhbmQgbGlnaHRuZXNzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZUh1ZShoZXg6IHN0cmluZywgZGVncmVlczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3Qgb2tsY2ggPSBoZXhUb09rbGNoKGhleCk7XG4gIHJldHVybiBva2xjaFRvSGV4KHsgLi4ub2tsY2gsIGg6ICgoKG9rbGNoLmggKyBkZWdyZWVzKSAlIDM2MCkgKyAzNjApICUgMzYwIH0pO1xufVxuXG4vKiogTGlnaHRuZXNzIHN0b3BzIGZvciBlYWNoIHNjYWxlIHN0ZXAgaW4gT0tMQ0ggKDDigJMxKS4gKi9cbmNvbnN0IExJR0hUTkVTU19TVE9QUzogUmVjb3JkPGtleW9mIENvbG9yU2NhbGUsIG51bWJlcj4gPSB7XG4gIDUwOiAwLjk3LFxuICAxMDA6IDAuOTQsXG4gIDIwMDogMC44NyxcbiAgMzAwOiAwLjc4LFxuICA0MDA6IDAuNjYsXG4gIDUwMDogMC41NixcbiAgNjAwOiAwLjQ4LFxuICA3MDA6IDAuNCxcbiAgODAwOiAwLjMyLFxuICA5MDA6IDAuMjUsXG4gIDk1MDogMC4xNixcbn07XG5cbi8qKiBEZXJpdmUgYSBmdWxsIDUw4oCTOTUwIGNvbG9yIHNjYWxlIGZyb20gYSBzaW5nbGUgYnJhbmQgaGV4LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVNjYWxlKGJhc2VIZXg6IHN0cmluZyk6IENvbG9yU2NhbGUge1xuICBjb25zdCBiYXNlID0gaGV4VG9Pa2xjaChiYXNlSGV4KTtcblxuICBsZXQgbmVhcmVzdDoga2V5b2YgQ29sb3JTY2FsZSA9IDUwMDtcbiAgbGV0IG5lYXJlc3REZWx0YSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgZm9yIChjb25zdCBbc3RlcCwgc3RvcF0gb2YgT2JqZWN0LmVudHJpZXMoTElHSFRORVNTX1NUT1BTKSkge1xuICAgIGNvbnN0IGRlbHRhID0gTWF0aC5hYnMoc3RvcCAtIGJhc2UubCk7XG4gICAgaWYgKGRlbHRhIDwgbmVhcmVzdERlbHRhKSB7XG4gICAgICBuZWFyZXN0RGVsdGEgPSBkZWx0YTtcbiAgICAgIG5lYXJlc3QgPSBOdW1iZXIoc3RlcCkgYXMga2V5b2YgQ29sb3JTY2FsZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzY2FsZSA9IHt9IGFzIENvbG9yU2NhbGU7XG4gIGZvciAoY29uc3QgW3N0ZXAsIHN0b3BdIG9mIE9iamVjdC5lbnRyaWVzKExJR0hUTkVTU19TVE9QUykpIHtcbiAgICBjb25zdCBrZXkgPSBOdW1iZXIoc3RlcCkgYXMga2V5b2YgQ29sb3JTY2FsZTtcbiAgICBpZiAoa2V5ID09PSBuZWFyZXN0KSB7XG4gICAgICBzY2FsZVtrZXldID0gb2tsY2hUb0hleChiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGVyY2VwdHVhbGx5IHNjYWxlIGNocm9tYSB1c2luZyBhIHNpbmUgdGFwZXIgc28gdGhhdCBleHRyZW1lcyAoNTAvOTUwKSBkb24ndCBjbGlwL3NhdHVyYXRlIHVubmF0dXJhbGx5LlxuICAgICAgY29uc3Qgc2NhbGVDaHJvbWEgPSBiYXNlLmMgKiBNYXRoLnNpbihNYXRoLlBJICogc3RvcCk7XG4gICAgICBzY2FsZVtrZXldID0gb2tsY2hUb0hleCh7IGw6IHN0b3AsIGM6IHNjYWxlQ2hyb21hLCBoOiBiYXNlLmggfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { deriveScale, rotateHue, shiftLightness } from './color';
2
2
  import { resolveTheme } from './define-config';
3
- import { CONTROL_HEIGHT } from './tokens';
3
+ import { CONTROL_HEIGHT, CONTROL_HEIGHTS, ICON_SIZE, OPACITY, TRACKING } from './tokens';
4
4
  function scaleVars(prefix, scale) {
5
5
  const vars = {};
6
6
  for (const [step, value] of Object.entries(scale)) {
@@ -21,6 +21,16 @@ function staticVars(theme) {
21
21
  // Motion Tokens
22
22
  '--ngxsmk-motion-duration': 'var(--ngxsmk-duration-normal)',
23
23
  '--ngxsmk-motion-ease': 'var(--ngxsmk-ease-in-out)',
24
+ // Interactive-state motion: shared lift/press transforms. Neutralized to
25
+ // `none` under prefers-reduced-motion (see buildThemeCss).
26
+ '--ngxsmk-hover-lift': 'translateY(-1px)',
27
+ '--ngxsmk-press-scale': 'scale(0.98)',
28
+ // Focus ring: THE focus indicator for every component. Aliases the
29
+ // mode-aware --ngxsmk-shadow-focus; the error variant derives from the
30
+ // semantic error role so invalid controls ring red in both modes.
31
+ '--ngxsmk-focus-ring': 'var(--ngxsmk-shadow-focus)',
32
+ '--ngxsmk-focus-ring-error': '0 0 0 2px color-mix(in srgb, var(--ngxsmk-color-error) 15%, transparent), ' +
33
+ '0 0 0 4px color-mix(in srgb, var(--ngxsmk-color-error) 45%, transparent)',
24
34
  // Component-specific Tokens (Buttons)
25
35
  '--ngxsmk-button-bg': 'var(--ngxsmk-color-primary)',
26
36
  '--ngxsmk-button-color': 'var(--ngxsmk-color-on-primary)',
@@ -51,6 +61,18 @@ function staticVars(theme) {
51
61
  '--ngxsmk-switch-thumb-bg': 'var(--ngxsmk-color-surface)',
52
62
  '--ngxsmk-switch-checked-bg': 'var(--ngxsmk-color-primary)',
53
63
  };
64
+ for (const [key, value] of Object.entries(CONTROL_HEIGHTS)) {
65
+ vars[`--ngxsmk-control-height-${key}`] = value;
66
+ }
67
+ for (const [key, value] of Object.entries(OPACITY)) {
68
+ vars[`--ngxsmk-opacity-${key}`] = value;
69
+ }
70
+ for (const [key, value] of Object.entries(ICON_SIZE)) {
71
+ vars[`--ngxsmk-icon-${key}`] = value;
72
+ }
73
+ for (const [key, value] of Object.entries(TRACKING)) {
74
+ vars[`--ngxsmk-tracking-${key}`] = value;
75
+ }
54
76
  for (const [key, value] of Object.entries(theme.spacing)) {
55
77
  vars[`--ngxsmk-space-${key}`] = value;
56
78
  }
@@ -232,7 +254,21 @@ export function buildThemeCss(config) {
232
254
  darkBlock = block(`:root.${cn}, :root.${cn} body, .${cn}`, dark);
233
255
  }
234
256
  }
235
- const reducedMotion = `@media (prefers-reduced-motion: reduce) {\n :root {\n --ngxsmk-motion-duration: 0ms;\n }\n}`;
257
+ // Zero every duration token (components animate with --ngxsmk-duration-*
258
+ // directly) and neutralize the shared transforms so ALL token-driven motion
259
+ // stops. `.ngxsmk-reduce-motion` offers the same as an app-level opt-in.
260
+ const reducedVars = {
261
+ '--ngxsmk-motion-duration': '0ms',
262
+ '--ngxsmk-hover-lift': 'none',
263
+ '--ngxsmk-press-scale': 'none',
264
+ };
265
+ for (const key of Object.keys(theme.duration)) {
266
+ reducedVars[`--ngxsmk-duration-${key}`] = '0ms';
267
+ }
268
+ const reducedMotion = [
269
+ `@media (prefers-reduced-motion: reduce) {\n${block(':root', reducedVars, ' ')}\n}`,
270
+ block(':root.ngxsmk-reduce-motion, .ngxsmk-reduce-motion', reducedVars),
271
+ ].join('\n\n');
236
272
  return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
237
273
  }
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTFDLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELFNBQVMsVUFBVSxDQUFDLEtBQW9CO0lBQ3RDLE1BQU0sSUFBSSxHQUFTO1FBQ2pCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUMzQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3RELHlCQUF5QixFQUFFLGNBQWM7UUFFekMsZ0JBQWdCO1FBQ2hCLDBCQUEwQixFQUFFLCtCQUErQjtRQUMzRCxzQkFBc0IsRUFBRSwyQkFBMkI7UUFFbkQsc0NBQXNDO1FBQ3RDLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7UUFFekMsb0NBQW9DO1FBQ3BDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxzQkFBc0IsRUFBRSx5QkFBeUI7UUFDakQsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELDRCQUE0QixFQUFFLDZCQUE2QjtRQUUzRCx3Q0FBd0M7UUFDeEMsdUJBQXVCLEVBQUUsNkJBQTZCO1FBQ3RELDJCQUEyQixFQUFFLHlCQUF5QjtRQUN0RCxpQ0FBaUMsRUFBRSw2QkFBNkI7UUFFaEUsdUNBQXVDO1FBQ3ZDLDBCQUEwQixFQUFFLFFBQVE7UUFDcEMsc0JBQXNCLEVBQUUscUNBQXFDO1FBQzdELHlCQUF5QixFQUFFLDZCQUE2QjtRQUN4RCwwQkFBMEIsRUFBRSwyQkFBMkI7UUFFdkQscUNBQXFDO1FBQ3JDLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsd0JBQXdCLEVBQUUsU0FBUztRQUNuQyx3QkFBd0IsRUFBRSwyQkFBMkI7UUFDckQsb0JBQW9CLEVBQUUsb0NBQW9DO1FBQzFELDRCQUE0QixFQUFFLFVBQVU7UUFDeEMsMEJBQTBCLEVBQUUsNkJBQTZCO1FBQ3pELDRCQUE0QixFQUFFLDZCQUE2QjtLQUM1RCxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sS0FBSyxHQUFjLE1BQU0sQ0FBQyxJQUFvQixDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksTUFBTSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLE1BQU0sT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNoRSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsdURBQXVEO0lBQ3ZELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNqRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDNUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRTdDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELDJDQUEyQztBQUMzQyxTQUFTLFNBQVMsQ0FBQyxLQUFvQjtJQUNyQyxNQUFNLElBQUksR0FBUztRQUNqQixjQUFjLEVBQUUsT0FBTztRQUV2Qix3QkFBd0IsRUFBRSxLQUFLLENBQUMsU0FBUztRQUN6QywyQkFBMkIsRUFBRSxTQUFTO1FBQ3RDLDhCQUE4QixFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLCtCQUErQixFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JFLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3BELHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBRXZELDBCQUEwQixFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQy9DLDZCQUE2QixFQUFFLFNBQVM7UUFDeEMsZ0NBQWdDLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsaUNBQWlDLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0Usb0NBQW9DLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDMUQsdUNBQXVDLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFFN0Qsc0ZBQXNGO1FBQ3RGLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlDLDhCQUE4QixFQUFFLFNBQVM7UUFDekMsd0JBQXdCLEVBQUUsU0FBUztRQUNuQywyQkFBMkIsRUFBRSxTQUFTO1FBQ3RDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3BELG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3ZELDhCQUE4QixFQUFFLHFCQUFxQjtRQUNyRCwrQkFBK0IsRUFBRSxvQkFBb0I7UUFDckQsa0NBQWtDLEVBQUUsU0FBUztRQUM3Qyx3QkFBd0IsRUFBRSxvQkFBb0I7UUFDOUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDbkQsZ0NBQWdDLEVBQUUscUJBQXFCO1FBRXZELG1CQUFtQjtRQUNuQiwwQkFBMEIsRUFBRSxTQUFTO1FBQ3JDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzdDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRTlDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQ3RDLHlCQUF5QixFQUFFLG9CQUFvQjtRQUMvQyx1QkFBdUIsRUFBRSxhQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxLQUFLLENBQUMsU0FBUyxvQkFBb0I7S0FDNUgsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDL0MsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFELElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyQyxJQUFJLENBQUMscUJBQXFCLElBQUksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLHFCQUFxQixJQUFJLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLFNBQVMsUUFBUSxDQUFDLEtBQW9CO0lBQ3BDLE1BQU0sSUFBSSxHQUFTO1FBQ2pCLGNBQWMsRUFBRSxNQUFNO1FBRXRCLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzFDLDJCQUEyQixFQUFFLFNBQVM7UUFDdEMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDaEQsK0JBQStCLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDakQsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEQscUNBQXFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFdkQsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDaEQsNkJBQTZCLEVBQUUsU0FBUztRQUN4QyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUN0RCxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUN2RCxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUMxRCx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUU3RCx5RUFBeUU7UUFDekUsOERBQThEO1FBQzlELDJCQUEyQixFQUFFLFNBQVM7UUFDdEMsOEJBQThCLEVBQUUsU0FBUztRQUN6Qyx3QkFBd0IsRUFBRSxTQUFTO1FBQ25DLDJCQUEyQixFQUFFLFNBQVM7UUFDdEMsZ0NBQWdDLEVBQUUsU0FBUztRQUMzQyxtQ0FBbUMsRUFBRSxTQUFTO1FBQzlDLDhCQUE4QixFQUFFLHlCQUF5QjtRQUN6RCwrQkFBK0IsRUFBRSx3QkFBd0I7UUFDekQsa0NBQWtDLEVBQUUsU0FBUztRQUM3Qyx3QkFBd0IsRUFBRSx3QkFBd0I7UUFDbEQsK0JBQStCLEVBQUUsU0FBUztRQUMxQyxnQ0FBZ0MsRUFBRSx5QkFBeUI7UUFFM0QsbUJBQW1CO1FBQ25CLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzlDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRTlDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLHlCQUF5QixFQUFFLHFCQUFxQjtRQUNoRCx1QkFBdUIsRUFBRSxnQ0FBZ0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsb0RBQW9ELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG9CQUFvQjtLQUNsSyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsbUNBQW1DLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMscUJBQXFCLElBQUksWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxRQUFnQixFQUFFLElBQVUsRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMzRixPQUFPLEdBQUcsTUFBTSxHQUFHLFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sR0FBRyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFtQztJQUMvRCxNQUFNLEtBQUssR0FDVCxPQUFPLElBQUksTUFBTSxJQUFJLFNBQVMsSUFBSyxNQUFpQjtRQUNsRCxDQUFDLENBQUUsTUFBd0I7UUFDM0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFxQixDQUFDLENBQUM7SUFFMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0IsSUFBSSxTQUFpQixDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxLQUFLLE9BQU87WUFDVixTQUFTLEdBQUcsMENBQTBDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdEYsTUFBTTtRQUNSLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLHVFQUF1RTtZQUN2RSw4REFBOEQ7WUFDOUQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDcEMsU0FBUyxHQUFHO2dCQUNWLDBDQUEwQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDekUsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDckQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixNQUFNO1FBQ1IsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUix1RUFBdUU7WUFDdkUseUVBQXlFO1lBQ3pFLHlFQUF5RTtZQUN6RSx3RUFBd0U7WUFDeEUsMENBQTBDO1lBQzFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3BDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsa0dBQWtHLENBQUM7SUFDekgsT0FBTyw0REFBNEQsSUFBSSxPQUFPLFNBQVMsT0FBTyxhQUFhLElBQUksQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVyaXZlU2NhbGUsIHJvdGF0ZUh1ZSwgc2hpZnRMaWdodG5lc3MgfSBmcm9tICcuL2NvbG9yJztcbmltcG9ydCB7IHJlc29sdmVUaGVtZSB9IGZyb20gJy4vZGVmaW5lLWNvbmZpZyc7XG5pbXBvcnQgeyBDb2xvclNjYWxlLCBSZXNvbHZlZFRoZW1lLCBUaGVtZUNvbmZpZywgVHlwZVJvbGVTaXplLCBUeXBlU3R5bGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENPTlRST0xfSEVJR0hUIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNwYWNpbmcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstc3BhY2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5yYWRpdXMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstcmFkaXVzLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2hhZG93KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNoYWRvdy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmR1cmF0aW9uKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuZWFzaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWVhc2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS56SW5kZXgpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstei0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2l6ZXMgPSB7IGxhcmdlOiAnbGcnLCBtZWRpdW06ICdtZCcsIHNtYWxsOiAnc20nIH0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgW3JvbGUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhlbWUudHlwb2dyYXBoeSkpIHtcbiAgICBmb3IgKGNvbnN0IFtzaXplLCBzdWZmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHNpemVzKSkge1xuICAgICAgY29uc3Qgc3R5bGU6IFR5cGVTdHlsZSA9IHN0eWxlc1tzaXplIGFzIFR5cGVSb2xlU2l6ZV07XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXNpemVgXSA9IHN0eWxlLnNpemU7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LWxpbmVgXSA9IHN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXdlaWdodGBdID0gc3R5bGUud2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJhLXNtYWxsIGJvZHkgdGV4dCBmb3IgZGVuc2UgbWV0YWRhdGEgcm93czsgYmVsb3cgdGhlIHNtYWxsZXN0XG4gIC8vIFR5cGVSb2xlU2l6ZSBzbyBpdCBpcyBlbWl0dGVkIG91dHNpZGUgdGhlIHJvbGUgbG9vcC5cbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXNpemUnXSA9ICcwLjY4NzVyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtbGluZSddID0gJzFyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtd2VpZ2h0J10gPSAnNDAwJztcblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBsaWdodCBtb2RlLiAqL1xuZnVuY3Rpb24gbGlnaHRWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdsaWdodCcsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5QmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtOCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtMTQpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcblxuICAgIC8vIERlZmF1bHQgbGlnaHQgdGhlbWU6IGNvb2wtZ3JleSBib2R5LCB3aGl0ZSBjYXJkcyBmbG9hdGluZyBvbiB0b3AsIGhhaXJsaW5lIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDUgNTQgODkgLyAwLjA1KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtYWN0aXZlJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDUgNTQgODkgLyAwLjA2KScsXG5cbiAgICAvLyBFbGV2YXRpb24gbGFkZGVyXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0yJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzMwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDEgMTggNDAgLyAwLjQpJyxcbiAgICAnLS1uZ3hzbWstc2hhZG93LWZvY3VzJzogYDAgMCAwIDJweCAke3RoZW1lLmJyYW5kWzEwMF19LCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRCYXNlfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9ICcjRkZGRkZGJztcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgaGV4XSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zZW1hbnRpYykpIHtcbiAgICBjb25zdCBzY2FsZSA9IGRlcml2ZVNjYWxlKGhleCk7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfWBdID0gaGV4O1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9ICcjRkZGRkZGJztcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMTAwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbODAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5saWdodCB9O1xufVxuXG4vKiogU2VtYW50aWMgcm9sZSB0b2tlbnMgZm9yIGRhcmsgbW9kZS4gKi9cbmZ1bmN0aW9uIGRhcmtWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdkYXJrJyxcblxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5JzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHRoZW1lLmJyYW5kWzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktYWN0aXZlJzogdGhlbWUuYnJhbmRbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzEwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5WzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogdGhlbWUuc2Vjb25kYXJ5WzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiB0aGVtZS5zZWNvbmRhcnlbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGRhcmsgdGhlbWU6IG5lYXItbmV1dHJhbCBjaGFyY29hbCBib2R5LCBzbGlnaHRseSBsaWdodGVyIGNhcmQsXG4gICAgLy8gbGlnaHRlciBzdGlsbCBmb3IgcG9wb3ZlcnM7IGhhaXJsaW5lIGxpZ2h0LW9uLWRhcmsgYm9yZGVycy5cbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2dyb3VuZCc6ICcjMTExMTEyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjMUYxRjIyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiAnI0FBQUZCNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1jb250YWluZXInOiAnIzI4MjkyQycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogJyM0OTRENTMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiB0aGVtZS5uZXV0cmFsWzgwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0zJzogdGhlbWUubmV1dHJhbFs2MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNSc6IHRoZW1lLm5ldXRyYWxbNDAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1yaW5nJzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDE3IDE3IDE4IC8gMC42KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gMjUlLCB0cmFuc3BhcmVudCksIDAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZFs0MDBdfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNDAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9IHRlcnRpYXJ5Wzk1MF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IHNjYWxlWzQwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMzAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5kYXJrIH07XG59XG5cbmZ1bmN0aW9uIGJsb2NrKHNlbGVjdG9yOiBzdHJpbmcsIHZhcnM6IFZhcnMsIGluZGVudCA9ICcnKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBPYmplY3QuZW50cmllcyh2YXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IGAke2luZGVudH0gICR7bmFtZX06ICR7dmFsdWV9O2ApO1xuICByZXR1cm4gYCR7aW5kZW50fSR7c2VsZWN0b3J9IHtcXG4ke2xpbmVzLmpvaW4oJ1xcbicpfVxcbiR7aW5kZW50fX1gO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRoZW1lIGNvbmZpZyBpbnRvIGEgQ1NTIHN0eWxlc2hlZXQgb2YgYC0tbmd4c21rLSpgIGN1c3RvbVxuICogcHJvcGVydGllcy4gRW1pdHMgc3RhdGljIHRva2VucyBwbHVzIGxpZ2h0LW1vZGUgcm9sZXMgb24gYDpyb290YCwgYW5kXG4gKiBkYXJrLW1vZGUgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmVkIGRhcmstbW9kZSBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVGhlbWVDc3MoY29uZmlnOiBUaGVtZUNvbmZpZyB8IFJlc29sdmVkVGhlbWUpOiBzdHJpbmcge1xuICBjb25zdCB0aGVtZSA9XG4gICAgJ2JyYW5kJyBpbiBjb25maWcgJiYgJ3NwYWNpbmcnIGluIChjb25maWcgYXMgb2JqZWN0KVxuICAgICAgPyAoY29uZmlnIGFzIFJlc29sdmVkVGhlbWUpXG4gICAgICA6IHJlc29sdmVUaGVtZShjb25maWcgYXMgVGhlbWVDb25maWcpO1xuXG4gIGNvbnN0IHJvb3QgPSBibG9jaygnOnJvb3QnLCB7IC4uLnN0YXRpY1ZhcnModGhlbWUpLCAuLi5saWdodFZhcnModGhlbWUpIH0pO1xuICBjb25zdCBkYXJrID0gZGFya1ZhcnModGhlbWUpO1xuXG4gIGxldCBkYXJrQmxvY2s6IHN0cmluZztcbiAgc3dpdGNoICh0aGVtZS5kYXJrTW9kZS5zdHJhdGVneSkge1xuICAgIGNhc2UgJ21lZGlhJzpcbiAgICAgIGRhcmtCbG9jayA9IGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N5c3RlbSc6IHtcbiAgICAgIC8vIGBsaWdodC1kYXJrKClgIHN1cHBvcnQgaXMgcGVyLXByb3BlcnR5OyB0aGUgY2xhc3MgYmxvY2sgc3RpbGwgc2VydmVzXG4gICAgICAvLyBhcyB0aGUgb3ZlcnJpZGUgaG9vaywgc28gYHN5c3RlbWAgYmVoYXZlcyBhcyBtZWRpYSArIGNsYXNzLlxuICAgICAgY29uc3QgY24gPSB0aGVtZS5kYXJrTW9kZS5jbGFzc05hbWU7XG4gICAgICBkYXJrQmxvY2sgPSBbXG4gICAgICAgIGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YCxcbiAgICAgICAgYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKSxcbiAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gYDpyb290LjxjbGFzcz5gIChzcGVjaWZpY2l0eSAwLDIsMCkgcGx1cyBhIGBib2R5YCB2YXJpYW50IGRlZmVuZCB0aGVcbiAgICAgIC8vIGRhcmsgdG9rZW5zIGFnYWluc3QgdGhpcmQtcGFydHkgc3R5bGVzaGVldHMgdGhhdCByZWRlZmluZSBgLS1uZ3hzbWstKmBcbiAgICAgIC8vIG9uIGEgcGxhaW4gYDpyb290YCAoMCwxLDApIOKAlCB0aG9zZSB3b3VsZCBvdGhlcndpc2Ugd2luIGJ5IHNvdXJjZSBvcmRlclxuICAgICAgLy8gd2hlbiBpbmplY3RlZCBpbnRvIDxoZWFkPiBhZnRlciB0aGlzIHNoZWV0LiBUaGUgYmFyZSBgLjxjbGFzcz5gIGtlZXBzXG4gICAgICAvLyBzY29wZWQgKG5vbi1yb290KSBkYXJrIHJlZ2lvbnMgd29ya2luZy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWR1Y2VkTW90aW9uID0gYEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICA6cm9vdCB7XFxuICAgIC0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbjogMG1zO1xcbiAgfVxcbn1gO1xuICByZXR1cm4gYC8qIEdlbmVyYXRlZCBieSBAbmd4c21rL3RoZW1lIOKAlCBkbyBub3QgZWRpdCBieSBoYW5kLiAqL1xcbiR7cm9vdH1cXG5cXG4ke2RhcmtCbG9ja31cXG5cXG4ke3JlZHVjZWRNb3Rpb259XFxuYDtcbn1cbiJdfQ==
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl6RixTQUFTLFNBQVMsQ0FBQyxNQUFjLEVBQUUsS0FBaUI7SUFDbEQsTUFBTSxJQUFJLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGtCQUFrQixNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxTQUFTLFVBQVUsQ0FBQyxLQUFvQjtJQUN0QyxNQUFNLElBQUksR0FBUztRQUNqQixHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNsQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQzNDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxNQUFN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QUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxLQUFLLE1B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QUFXLEdBQVM7UUFDeEIsMEJBQTBCLEVBQUUsS0FBSztRQUNqQyxxQkFBcUIsRUFBRSxNQUFNO1FBQzdCLHNCQUFzQixFQUFFLE1BQU07S0FDL0IsQ0FBQztJQUNGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxXQUFXLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRztRQUNwQiw4Q0FBOEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDcEYsS0FBSyxDQUFDLG1EQUFtRCxFQUFFLFdBQVcsQ0FBQztLQUN4RSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNmLE9BQU8sNERBQTRELElBQUksT0FBTyxTQUFTLE9BQU8sYUFBYSxJQUFJLENBQUM7QUFDbEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlcml2ZVNjYWxlLCByb3RhdGVIdWUsIHNoaWZ0TGlnaHRuZXNzIH0gZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyByZXNvbHZlVGhlbWUgfSBmcm9tICcuL2RlZmluZS1jb25maWcnO1xuaW1wb3J0IHsgQ29sb3JTY2FsZSwgUmVzb2x2ZWRUaGVtZSwgVGhlbWVDb25maWcsIFR5cGVSb2xlU2l6ZSwgVHlwZVN0eWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDT05UUk9MX0hFSUdIVCwgQ09OVFJPTF9IRUlHSFRTLCBJQ09OX1NJWkUsIE9QQUNJVFksIFRSQUNLSU5HIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gSW50ZXJhY3RpdmUtc3RhdGUgbW90aW9uOiBzaGFyZWQgbGlmdC9wcmVzcyB0cmFuc2Zvcm1zLiBOZXV0cmFsaXplZCB0b1xuICAgIC8vIGBub25lYCB1bmRlciBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIChzZWUgYnVpbGRUaGVtZUNzcykuXG4gICAgJy0tbmd4c21rLWhvdmVyLWxpZnQnOiAndHJhbnNsYXRlWSgtMXB4KScsXG4gICAgJy0tbmd4c21rLXByZXNzLXNjYWxlJzogJ3NjYWxlKDAuOTgpJyxcblxuICAgIC8vIEZvY3VzIHJpbmc6IFRIRSBmb2N1cyBpbmRpY2F0b3IgZm9yIGV2ZXJ5IGNvbXBvbmVudC4gQWxpYXNlcyB0aGVcbiAgICAvLyBtb2RlLWF3YXJlIC0tbmd4c21rLXNoYWRvdy1mb2N1czsgdGhlIGVycm9yIHZhcmlhbnQgZGVyaXZlcyBmcm9tIHRoZVxuICAgIC8vIHNlbWFudGljIGVycm9yIHJvbGUgc28gaW52YWxpZCBjb250cm9scyByaW5nIHJlZCBpbiBib3RoIG1vZGVzLlxuICAgICctLW5neHNtay1mb2N1cy1yaW5nJzogJ3ZhcigtLW5neHNtay1zaGFkb3ctZm9jdXMpJyxcbiAgICAnLS1uZ3hzbWstZm9jdXMtcmluZy1lcnJvcic6XG4gICAgICAnMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItZXJyb3IpIDE1JSwgdHJhbnNwYXJlbnQpLCAnICtcbiAgICAgICcwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1lcnJvcikgNDUlLCB0cmFuc3BhcmVudCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKENPTlRST0xfSEVJR0hUUykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1jb250cm9sLWhlaWdodC0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKE9QQUNJVFkpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstb3BhY2l0eS0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKElDT05fU0laRSkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1pY29uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoVFJBQ0tJTkcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstdHJhY2tpbmctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zcGFjaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNwYWNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUucmFkaXVzKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXJhZGl1cy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNoYWRvdykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1zaGFkb3ctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5kdXJhdGlvbikpIHtcbiAgICB2YXJzW2AtLW5neHNtay1kdXJhdGlvbi0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmVhc2luZykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1lYXNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuekluZGV4KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXotJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHNpemVzID0geyBsYXJnZTogJ2xnJywgbWVkaXVtOiAnbWQnLCBzbWFsbDogJ3NtJyB9IGFzIGNvbnN0O1xuICBmb3IgKGNvbnN0IFtyb2xlLCBzdHlsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnR5cG9ncmFwaHkpKSB7XG4gICAgZm9yIChjb25zdCBbc2l6ZSwgc3VmZml4XSBvZiBPYmplY3QuZW50cmllcyhzaXplcykpIHtcbiAgICAgIGNvbnN0IHN0eWxlOiBUeXBlU3R5bGUgPSBzdHlsZXNbc2l6ZSBhcyBUeXBlUm9sZVNpemVdO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1zaXplYF0gPSBzdHlsZS5zaXplO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1saW5lYF0gPSBzdHlsZS5saW5lSGVpZ2h0O1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS13ZWlnaHRgXSA9IHN0eWxlLndlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBFeHRyYS1zbWFsbCBib2R5IHRleHQgZm9yIGRlbnNlIG1ldGFkYXRhIHJvd3M7IGJlbG93IHRoZSBzbWFsbGVzdFxuICAvLyBUeXBlUm9sZVNpemUgc28gaXQgaXMgZW1pdHRlZCBvdXRzaWRlIHRoZSByb2xlIGxvb3AuXG4gIHZhcnNbJy0tbmd4c21rLXRleHQtYm9keS14cy1zaXplJ10gPSAnMC42ODc1cmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLWxpbmUnXSA9ICcxcmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXdlaWdodCddID0gJzQwMCc7XG5cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKiBTZW1hbnRpYyByb2xlIHRva2VucyBmb3IgbGlnaHQgbW9kZS4gKi9cbmZ1bmN0aW9uIGxpZ2h0VmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgICdjb2xvci1zY2hlbWUnOiAnbGlnaHQnLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC04KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC0xNCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeSc6IHRoZW1lLnNlY29uZGFyeUJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktYWN0aXZlJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzkwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGxpZ2h0IHRoZW1lOiBjb29sLWdyZXkgYm9keSwgd2hpdGUgY2FyZHMgZmxvYXRpbmcgb24gdG9wLCBoYWlybGluZSBib3JkZXJzLlxuICAgICctLW5neHNtay1jb2xvci1iYWNrZ3JvdW5kJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYig1IDU0IDg5IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYig1IDU0IDg5IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNTBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTMnOiB0aGVtZS5uZXV0cmFsWzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNCc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS01JzogdGhlbWUubmV1dHJhbFszMDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXJpbmcnOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxIDE4IDQwIC8gMC40KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggJHt0aGVtZS5icmFuZFsxMDBdfSwgMCAwIDAgNHB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kQmFzZX0gNDUlLCB0cmFuc3BhcmVudClgLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzUwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSAnI0ZGRkZGRic7XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVs5MDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IGhleDtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9YF0gPSAnI0ZGRkZGRic7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzEwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzgwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMubGlnaHQgfTtcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBkYXJrIG1vZGUuICovXG5mdW5jdGlvbiBkYXJrVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgICdjb2xvci1zY2hlbWUnOiAnZGFyaycsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiB0aGVtZS5icmFuZFszMDBdLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHRoZW1lLmJyYW5kWzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbOTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeSc6IHRoZW1lLnNlY29uZGFyeVs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1ob3Zlcic6IHRoZW1lLnNlY29uZGFyeVszMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktYWN0aXZlJzogdGhlbWUuc2Vjb25kYXJ5WzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVsxMDBdLFxuXG4gICAgLy8gRGVmYXVsdCBkYXJrIHRoZW1lOiBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgYm9keSwgc2xpZ2h0bHkgbGlnaHRlciBjYXJkLFxuICAgIC8vIGxpZ2h0ZXIgc3RpbGwgZm9yIHBvcG92ZXJzOyBoYWlybGluZSBsaWdodC1vbi1kYXJrIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiAnIzExMTExMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnIzFGMUYyMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6ICcjMjgyOTJDJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogJyNBQUFGQjUnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMDUpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1hY3RpdmUnOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6ICcjNDk0RDUzJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMDYpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogdGhlbWUubmV1dHJhbFs4MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzcwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbNjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzQwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxNyAxNyAxOCAvIDAuNiknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kWzQwMF19IDI1JSwgdHJhbnNwYXJlbnQpLCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gNDUlLCB0cmFuc3BhcmVudClgLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzQwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs5NTBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBzY2FsZVs0MDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzMwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMuZGFyayB9O1xufVxuXG5mdW5jdGlvbiBibG9jayhzZWxlY3Rvcjogc3RyaW5nLCB2YXJzOiBWYXJzLCBpbmRlbnQgPSAnJyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gT2JqZWN0LmVudHJpZXModmFycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBgJHtpbmRlbnR9ICAke25hbWV9OiAke3ZhbHVlfTtgKTtcbiAgcmV0dXJuIGAke2luZGVudH0ke3NlbGVjdG9yfSB7XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1cXG4ke2luZGVudH19YDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSB0aGVtZSBjb25maWcgaW50byBhIENTUyBzdHlsZXNoZWV0IG9mIGAtLW5neHNtay0qYCBjdXN0b21cbiAqIHByb3BlcnRpZXMuIEVtaXRzIHN0YXRpYyB0b2tlbnMgcGx1cyBsaWdodC1tb2RlIHJvbGVzIG9uIGA6cm9vdGAsIGFuZFxuICogZGFyay1tb2RlIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJlZCBkYXJrLW1vZGUgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRoZW1lQ3NzKGNvbmZpZzogVGhlbWVDb25maWcgfCBSZXNvbHZlZFRoZW1lKTogc3RyaW5nIHtcbiAgY29uc3QgdGhlbWUgPVxuICAgICdicmFuZCcgaW4gY29uZmlnICYmICdzcGFjaW5nJyBpbiAoY29uZmlnIGFzIG9iamVjdClcbiAgICAgID8gKGNvbmZpZyBhcyBSZXNvbHZlZFRoZW1lKVxuICAgICAgOiByZXNvbHZlVGhlbWUoY29uZmlnIGFzIFRoZW1lQ29uZmlnKTtcblxuICBjb25zdCByb290ID0gYmxvY2soJzpyb290JywgeyAuLi5zdGF0aWNWYXJzKHRoZW1lKSwgLi4ubGlnaHRWYXJzKHRoZW1lKSB9KTtcbiAgY29uc3QgZGFyayA9IGRhcmtWYXJzKHRoZW1lKTtcblxuICBsZXQgZGFya0Jsb2NrOiBzdHJpbmc7XG4gIHN3aXRjaCAodGhlbWUuZGFya01vZGUuc3RyYXRlZ3kpIHtcbiAgICBjYXNlICdtZWRpYSc6XG4gICAgICBkYXJrQmxvY2sgPSBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzeXN0ZW0nOiB7XG4gICAgICAvLyBgbGlnaHQtZGFyaygpYCBzdXBwb3J0IGlzIHBlci1wcm9wZXJ0eTsgdGhlIGNsYXNzIGJsb2NrIHN0aWxsIHNlcnZlc1xuICAgICAgLy8gYXMgdGhlIG92ZXJyaWRlIGhvb2ssIHNvIGBzeXN0ZW1gIGJlaGF2ZXMgYXMgbWVkaWEgKyBjbGFzcy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gW1xuICAgICAgICBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWAsXG4gICAgICAgIGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayksXG4gICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIGA6cm9vdC48Y2xhc3M+YCAoc3BlY2lmaWNpdHkgMCwyLDApIHBsdXMgYSBgYm9keWAgdmFyaWFudCBkZWZlbmQgdGhlXG4gICAgICAvLyBkYXJrIHRva2VucyBhZ2FpbnN0IHRoaXJkLXBhcnR5IHN0eWxlc2hlZXRzIHRoYXQgcmVkZWZpbmUgYC0tbmd4c21rLSpgXG4gICAgICAvLyBvbiBhIHBsYWluIGA6cm9vdGAgKDAsMSwwKSDigJQgdGhvc2Ugd291bGQgb3RoZXJ3aXNlIHdpbiBieSBzb3VyY2Ugb3JkZXJcbiAgICAgIC8vIHdoZW4gaW5qZWN0ZWQgaW50byA8aGVhZD4gYWZ0ZXIgdGhpcyBzaGVldC4gVGhlIGJhcmUgYC48Y2xhc3M+YCBrZWVwc1xuICAgICAgLy8gc2NvcGVkIChub24tcm9vdCkgZGFyayByZWdpb25zIHdvcmtpbmcuXG4gICAgICBjb25zdCBjbiA9IHRoZW1lLmRhcmtNb2RlLmNsYXNzTmFtZTtcbiAgICAgIGRhcmtCbG9jayA9IGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayk7XG4gICAgfVxuICB9XG5cbiAgLy8gWmVybyBldmVyeSBkdXJhdGlvbiB0b2tlbiAoY29tcG9uZW50cyBhbmltYXRlIHdpdGggLS1uZ3hzbWstZHVyYXRpb24tKlxuICAvLyBkaXJlY3RseSkgYW5kIG5ldXRyYWxpemUgdGhlIHNoYXJlZCB0cmFuc2Zvcm1zIHNvIEFMTCB0b2tlbi1kcml2ZW4gbW90aW9uXG4gIC8vIHN0b3BzLiBgLm5neHNtay1yZWR1Y2UtbW90aW9uYCBvZmZlcnMgdGhlIHNhbWUgYXMgYW4gYXBwLWxldmVsIG9wdC1pbi5cbiAgY29uc3QgcmVkdWNlZFZhcnM6IFZhcnMgPSB7XG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICcwbXMnLFxuICAgICctLW5neHNtay1ob3Zlci1saWZ0JzogJ25vbmUnLFxuICAgICctLW5neHNtay1wcmVzcy1zY2FsZSc6ICdub25lJyxcbiAgfTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhlbWUuZHVyYXRpb24pKSB7XG4gICAgcmVkdWNlZFZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gJzBtcyc7XG4gIH1cbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IFtcbiAgICBgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4ke2Jsb2NrKCc6cm9vdCcsIHJlZHVjZWRWYXJzLCAnICAnKX1cXG59YCxcbiAgICBibG9jaygnOnJvb3Qubmd4c21rLXJlZHVjZS1tb3Rpb24sIC5uZ3hzbWstcmVkdWNlLW1vdGlvbicsIHJlZHVjZWRWYXJzKSxcbiAgXS5qb2luKCdcXG5cXG4nKTtcbiAgcmV0dXJuIGAvKiBHZW5lcmF0ZWQgYnkgQG5neHNtay90aGVtZSDigJQgZG8gbm90IGVkaXQgYnkgaGFuZC4gKi9cXG4ke3Jvb3R9XFxuXFxuJHtkYXJrQmxvY2t9XFxuXFxuJHtyZWR1Y2VkTW90aW9ufVxcbmA7XG59XG4iXX0=
@@ -59,6 +59,36 @@ export const DEFAULT_TYPOGRAPHY = {
59
59
  * family use this so they read as one consistent size.
60
60
  */
61
61
  export const CONTROL_HEIGHT = '2.5rem';
62
+ /**
63
+ * Control-height ladder. `md` mirrors CONTROL_HEIGHT (the family default);
64
+ * `sm`/`lg` give dense and comfortable variants the same rhythm.
65
+ */
66
+ export const CONTROL_HEIGHTS = {
67
+ sm: '2rem',
68
+ md: CONTROL_HEIGHT,
69
+ lg: '3rem',
70
+ };
71
+ /**
72
+ * Opacity roles. Components must use these instead of ad-hoc literals so
73
+ * disabled/muted content reads identically across the whole kit.
74
+ */
75
+ export const OPACITY = {
76
+ disabled: '0.5',
77
+ muted: '0.7',
78
+ faint: '0.4',
79
+ };
80
+ /** Icon sizing ladder — aligns glyph boxes with the text roles they sit next to. */
81
+ export const ICON_SIZE = {
82
+ sm: '1rem',
83
+ md: '1.25rem',
84
+ lg: '1.5rem',
85
+ };
86
+ /** Letter-spacing roles: tight for display/headline, wide for overline/labels. */
87
+ export const TRACKING = {
88
+ tight: '-0.02em',
89
+ normal: '0',
90
+ wide: '0.08em',
91
+ };
62
92
  export const SPACING = {
63
93
  '0': '0px',
64
94
  '0-5': '0.125rem',
@@ -93,16 +123,18 @@ export const RADIUS = {
93
123
  full: '9999px',
94
124
  };
95
125
  /**
96
- * Soft, diffuse, layered shadows (two stacked blurs, low alpha). Overlay
97
- * CSS resolves these to slightly stronger values in dark mode via the
98
- * elevation tokens on each surface.
126
+ * Soft, diffuse, layered shadows: a 1px hairline "contact" line keeps edges
127
+ * crisp on white, a tight key shadow gives definition, and a wide low-alpha
128
+ * ambient blur supplies the soft depth. Overlay CSS resolves these to
129
+ * slightly stronger values in dark mode via the elevation tokens on each
130
+ * surface.
99
131
  */
100
132
  export const SHADOW = {
101
- sm: '0 1px 1px rgb(0 0 0 / 0.08), 0 2px 8px rgb(0 0 0 / 0.08)',
102
- md: '0 1px 2px rgb(0 0 0 / 0.1), 0 2px 12px rgb(0 0 0 / 0.1)',
103
- lg: '0 2px 2px rgb(0 0 0 / 0.1), 0 8px 24px rgb(0 0 0 / 0.12)',
104
- xl: '0 4px 6px rgb(0 0 0 / 0.1), 0 12px 32px rgb(0 0 0 / 0.16)',
105
- '2xl': '0 8px 12px rgb(0 0 0 / 0.14), 0 24px 48px rgb(0 0 0 / 0.22)',
133
+ sm: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 1px rgb(0 0 0 / 0.07), 0 2px 8px rgb(0 0 0 / 0.07)',
134
+ md: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 2px rgb(0 0 0 / 0.09), 0 4px 16px rgb(0 0 0 / 0.09)',
135
+ lg: '0 0 0 1px rgb(0 0 0 / 0.04), 0 2px 4px rgb(0 0 0 / 0.09), 0 10px 28px rgb(0 0 0 / 0.11)',
136
+ xl: '0 0 0 1px rgb(0 0 0 / 0.04), 0 4px 8px rgb(0 0 0 / 0.1), 0 16px 40px rgb(0 0 0 / 0.15)',
137
+ '2xl': '0 0 0 1px rgb(0 0 0 / 0.05), 0 8px 16px rgb(0 0 0 / 0.13), 0 28px 56px rgb(0 0 0 / 0.2)',
106
138
  };
107
139
  /**
108
140
  * Stacking ladder for overlay components. Anchored popups sit lowest;
@@ -133,4 +165,4 @@ export const EASING = {
133
165
  'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
134
166
  emphasized: 'cubic-bezier(0.2, 0, 0, 1)',
135
167
  };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBZTtJQUN6QyxFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM5QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksRUFBRSwyREFBMkQ7SUFDakUsSUFBSSxFQUFFLDJEQUEyRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQy9ELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2pFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDNUQsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM3RDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzlEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDOUQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsS0FBSyxFQUFFLFVBQVU7SUFDakIsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxNQUFNO0lBQ1gsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCO0lBQzVDLElBQUksRUFBRSxLQUFLO0lBQ1gsRUFBRSxFQUFFLFNBQVMsRUFBRSwwQ0FBMEM7SUFDekQsRUFBRSxFQUFFLFFBQVEsRUFBRSxrREFBa0Q7SUFDaEUsRUFBRSxFQUFFLFNBQVMsRUFBRSxxQ0FBcUM7SUFDcEQsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztJQUN6QixLQUFLLEVBQUUsU0FBUyxFQUFFLDhCQUE4QjtJQUNoRCxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUEyQjtJQUM1QyxFQUFFLEVBQUUsMERBQTBEO0lBQzlELEVBQUUsRUFBRSx5REFBeUQ7SUFDN0QsRUFBRSxFQUFFLDBEQUEwRDtJQUM5RCxFQUFFLEVBQUUsMkRBQTJEO0lBQy9ELEtBQUssRUFBRSw2REFBNkQ7Q0FDckUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTJCO0lBQzdDLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE1BQU07SUFDZCxPQUFPLEVBQUUsTUFBTTtJQUNmLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTJCO0lBQzlDLE9BQU8sRUFBRSxLQUFLO0lBQ2QsSUFBSSxFQUFFLE9BQU87SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsVUFBVSxFQUFFLDRCQUE0QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSwgRm9udEZhbWlsaWVzLCBTZW1hbnRpY0NvbG9ycywgVHlwb2dyYXBoeVNjYWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29vbCBibHVlLWdyZXkgbmV1dHJhbCBzY2FsZS4gTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGVcbiAqIGRhcmtlc3Qgc3RlcHMgZmxhdHRlbiB0b3dhcmQgYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlXG4gKiBzdXJmYWNlcyByZWFkIGxpa2UgYSBzb2Z0LCBkZXNhdHVyYXRlZCBuYXZ5IHJhdGhlciB0aGFuIGEgc2F0dXJhdGVkIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzI1NjNFQicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbmV4cG9ydCBjb25zdCBTUEFDSU5HOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnMCc6ICcwcHgnLFxuICAnMC01JzogJzAuMTI1cmVtJyxcbiAgJzEnOiAnMC4yNXJlbScsXG4gICcxLTUnOiAnMC4zNzVyZW0nLFxuICAnMic6ICcwLjVyZW0nLFxuICAnMyc6ICcwLjc1cmVtJyxcbiAgJzQnOiAnMXJlbScsXG4gICc1JzogJzEuMjVyZW0nLFxuICAnNic6ICcxLjVyZW0nLFxuICAnOCc6ICcycmVtJyxcbiAgJzEwJzogJzIuNXJlbScsXG4gICcxMic6ICczcmVtJyxcbiAgJzE2JzogJzRyZW0nLFxuICAnMjAnOiAnNXJlbScsXG4gICcyNCc6ICc2cmVtJyxcbiAgJzMyJzogJzhyZW0nLFxufTtcblxuLyoqXG4gKiBSYWRpdXMgc2NhbGU6IGlubmVyIDRweCwgZWxlbWVudCA4cHggKGJ1dHRvbnMvaW5wdXRzLCB0aGUgYmFzZSksXG4gKiBjb250YWluZXIgMTJweCAoY2FyZHMpLCB0aGVuIHByb2dyZXNzaXZlbHkgbGFyZ2VyIHRocm91Z2ggMjhweCBcInBhZ2VcIlxuICogcm91bmRpbmcuIERlbGliZXJhdGVseSBnZW5lcm91cyBzbyBzdXJmYWNlcyByZWFkIHNvZnQgYW5kIHJvdW5kZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSQURJVVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIG5vbmU6ICcwcHgnLFxuICBzbTogJzAuMjVyZW0nLCAvLyA0cHggIOKAlCBpbm5lciAobmVzdGVkIGNoaXBzLCBjaGVja2JveGVzKVxuICBtZDogJzAuNXJlbScsIC8vIDhweCAg4oCUIGVsZW1lbnQgKGJ1dHRvbnMsIGlucHV0cykg4oCUIGRlZmF1bHQgYmFzZVxuICBsZzogJzAuNzVyZW0nLCAvLyAxMnB4IOKAlCBjb250YWluZXIgKGNhcmRzLCBwb3BvdmVycylcbiAgeGw6ICcxcmVtJywgLy8gMTZweFxuICAnMnhsJzogJzEuMjVyZW0nLCAvLyAyMHB4XG4gICczeGwnOiAnMS43NXJlbScsIC8vIDI4cHgg4oCUIHBhZ2UgLyBoZXJvIHN1cmZhY2VzXG4gIGZ1bGw6ICc5OTk5cHgnLFxufTtcblxuLyoqXG4gKiBTb2Z0LCBkaWZmdXNlLCBsYXllcmVkIHNoYWRvd3MgKHR3byBzdGFja2VkIGJsdXJzLCBsb3cgYWxwaGEpLiBPdmVybGF5XG4gKiBDU1MgcmVzb2x2ZXMgdGhlc2UgdG8gc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluIGRhcmsgbW9kZSB2aWEgdGhlXG4gKiBlbGV2YXRpb24gdG9rZW5zIG9uIGVhY2ggc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wOCksIDAgMnB4IDhweCByZ2IoMCAwIDAgLyAwLjA4KScsXG4gIG1kOiAnMCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDEycHggcmdiKDAgMCAwIC8gMC4xKScsXG4gIGxnOiAnMCAycHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgOHB4IDI0cHggcmdiKDAgMCAwIC8gMC4xMiknLFxuICB4bDogJzAgNHB4IDZweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDEycHggMzJweCByZ2IoMCAwIDAgLyAwLjE2KScsXG4gICcyeGwnOiAnMCA4cHggMTJweCByZ2IoMCAwIDAgLyAwLjE0KSwgMCAyNHB4IDQ4cHggcmdiKDAgMCAwIC8gMC4yMiknLFxufTtcblxuLyoqXG4gKiBTdGFja2luZyBsYWRkZXIgZm9yIG92ZXJsYXkgY29tcG9uZW50cy4gQW5jaG9yZWQgcG9wdXBzIHNpdCBsb3dlc3Q7XG4gKiB0b29sdGlwcyBhbHdheXMgd2luLiBDb21wb25lbnRzIG11c3QgdXNlIHRoZXNlIGluc3RlYWQgb2YgYWQtaG9jIHZhbHVlc1xuICogc28gb3ZlcmxheXMgbmV2ZXIgZmlnaHQgZWFjaCBvdGhlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFpfSU5ERVg6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRyb3Bkb3duOiAnMTAwMCcsXG4gIHN0aWNreTogJzExMDAnLFxuICBiYW5uZXI6ICcxMjAwJyxcbiAgb3ZlcmxheTogJzEzMDAnLFxuICBtb2RhbDogJzE0MDAnLFxuICBwb3BvdmVyOiAnMTUwMCcsXG4gIHRvYXN0OiAnMTYwMCcsXG4gIHRvb2x0aXA6ICcxNzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgaW5zdGFudDogJzBtcycsXG4gIGZhc3Q6ICcxMDBtcycsXG4gIG5vcm1hbDogJzIwMG1zJyxcbiAgc2xvdzogJzMwMG1zJyxcbiAgc2xvd2VyOiAnNTAwbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEVBU0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbGluZWFyOiAnbGluZWFyJyxcbiAgaW46ICdjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKScsXG4gIG91dDogJ2N1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgJ2luLW91dCc6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgZW1waGFzaXplZDogJ2N1YmljLWJlemllcigwLjIsIDAsIDAsIDEpJyxcbn07XG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBZTtJQUN6QyxFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM5QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksRUFBRSwyREFBMkQ7SUFDakUsSUFBSSxFQUFFLDJEQUEyRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQy9ELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2pFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDNUQsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM3RDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzlEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFL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SSxFQUFFLE9BQU87SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsVUFBVSxFQUFFLDRCQUE0QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSwgRm9udEZhbWlsaWVzLCBTZW1hbnRpY0NvbG9ycywgVHlwb2dyYXBoeVNjYWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29vbCBibHVlLWdyZXkgbmV1dHJhbCBzY2FsZS4gTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGVcbiAqIGRhcmtlc3Qgc3RlcHMgZmxhdHRlbiB0b3dhcmQgYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlXG4gKiBzdXJmYWNlcyByZWFkIGxpa2UgYSBzb2Z0LCBkZXNhdHVyYXRlZCBuYXZ5IHJhdGhlciB0aGFuIGEgc2F0dXJhdGVkIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzI1NjNFQicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbi8qKlxuICogQ29udHJvbC1oZWlnaHQgbGFkZGVyLiBgbWRgIG1pcnJvcnMgQ09OVFJPTF9IRUlHSFQgKHRoZSBmYW1pbHkgZGVmYXVsdCk7XG4gKiBgc21gL2BsZ2AgZ2l2ZSBkZW5zZSBhbmQgY29tZm9ydGFibGUgdmFyaWFudHMgdGhlIHNhbWUgcmh5dGhtLlxuICovXG5leHBvcnQgY29uc3QgQ09OVFJPTF9IRUlHSFRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBzbTogJzJyZW0nLFxuICBtZDogQ09OVFJPTF9IRUlHSFQsXG4gIGxnOiAnM3JlbScsXG59O1xuXG4vKipcbiAqIE9wYWNpdHkgcm9sZXMuIENvbXBvbmVudHMgbXVzdCB1c2UgdGhlc2UgaW5zdGVhZCBvZiBhZC1ob2MgbGl0ZXJhbHMgc29cbiAqIGRpc2FibGVkL211dGVkIGNvbnRlbnQgcmVhZHMgaWRlbnRpY2FsbHkgYWNyb3NzIHRoZSB3aG9sZSBraXQuXG4gKi9cbmV4cG9ydCBjb25zdCBPUEFDSVRZOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkaXNhYmxlZDogJzAuNScsXG4gIG11dGVkOiAnMC43JyxcbiAgZmFpbnQ6ICcwLjQnLFxufTtcblxuLyoqIEljb24gc2l6aW5nIGxhZGRlciDigJQgYWxpZ25zIGdseXBoIGJveGVzIHdpdGggdGhlIHRleHQgcm9sZXMgdGhleSBzaXQgbmV4dCB0by4gKi9cbmV4cG9ydCBjb25zdCBJQ09OX1NJWkU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHNtOiAnMXJlbScsXG4gIG1kOiAnMS4yNXJlbScsXG4gIGxnOiAnMS41cmVtJyxcbn07XG5cbi8qKiBMZXR0ZXItc3BhY2luZyByb2xlczogdGlnaHQgZm9yIGRpc3BsYXkvaGVhZGxpbmUsIHdpZGUgZm9yIG92ZXJsaW5lL2xhYmVscy4gKi9cbmV4cG9ydCBjb25zdCBUUkFDS0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgdGlnaHQ6ICctMC4wMmVtJyxcbiAgbm9ybWFsOiAnMCcsXG4gIHdpZGU6ICcwLjA4ZW0nLFxufTtcblxuZXhwb3J0IGNvbnN0IFNQQUNJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICcwJzogJzBweCcsXG4gICcwLTUnOiAnMC4xMjVyZW0nLFxuICAnMSc6ICcwLjI1cmVtJyxcbiAgJzEtNSc6ICcwLjM3NXJlbScsXG4gICcyJzogJzAuNXJlbScsXG4gICczJzogJzAuNzVyZW0nLFxuICAnNCc6ICcxcmVtJyxcbiAgJzUnOiAnMS4yNXJlbScsXG4gICc2JzogJzEuNXJlbScsXG4gICc4JzogJzJyZW0nLFxuICAnMTAnOiAnMi41cmVtJyxcbiAgJzEyJzogJzNyZW0nLFxuICAnMTYnOiAnNHJlbScsXG4gICcyMCc6ICc1cmVtJyxcbiAgJzI0JzogJzZyZW0nLFxuICAnMzInOiAnOHJlbScsXG59O1xuXG4vKipcbiAqIFJhZGl1cyBzY2FsZTogaW5uZXIgNHB4LCBlbGVtZW50IDhweCAoYnV0dG9ucy9pbnB1dHMsIHRoZSBiYXNlKSxcbiAqIGNvbnRhaW5lciAxMnB4IChjYXJkcyksIHRoZW4gcHJvZ3Jlc3NpdmVseSBsYXJnZXIgdGhyb3VnaCAyOHB4IFwicGFnZVwiXG4gKiByb3VuZGluZy4gRGVsaWJlcmF0ZWx5IGdlbmVyb3VzIHNvIHN1cmZhY2VzIHJlYWQgc29mdCBhbmQgcm91bmRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJBRElVUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbm9uZTogJzBweCcsXG4gIHNtOiAnMC4yNXJlbScsIC8vIDRweCAg4oCUIGlubmVyIChuZXN0ZWQgY2hpcHMsIGNoZWNrYm94ZXMpXG4gIG1kOiAnMC41cmVtJywgLy8gOHB4ICDigJQgZWxlbWVudCAoYnV0dG9ucywgaW5wdXRzKSDigJQgZGVmYXVsdCBiYXNlXG4gIGxnOiAnMC43NXJlbScsIC8vIDEycHgg4oCUIGNvbnRhaW5lciAoY2FyZHMsIHBvcG92ZXJzKVxuICB4bDogJzFyZW0nLCAvLyAxNnB4XG4gICcyeGwnOiAnMS4yNXJlbScsIC8vIDIwcHhcbiAgJzN4bCc6ICcxLjc1cmVtJywgLy8gMjhweCDigJQgcGFnZSAvIGhlcm8gc3VyZmFjZXNcbiAgZnVsbDogJzk5OTlweCcsXG59O1xuXG4vKipcbiAqIFNvZnQsIGRpZmZ1c2UsIGxheWVyZWQgc2hhZG93czogYSAxcHggaGFpcmxpbmUgXCJjb250YWN0XCIgbGluZSBrZWVwcyBlZGdlc1xuICogY3Jpc3Agb24gd2hpdGUsIGEgdGlnaHQga2V5IHNoYWRvdyBnaXZlcyBkZWZpbml0aW9uLCBhbmQgYSB3aWRlIGxvdy1hbHBoYVxuICogYW1iaWVudCBibHVyIHN1cHBsaWVzIHRoZSBzb2Z0IGRlcHRoLiBPdmVybGF5IENTUyByZXNvbHZlcyB0aGVzZSB0b1xuICogc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluIGRhcmsgbW9kZSB2aWEgdGhlIGVsZXZhdGlvbiB0b2tlbnMgb24gZWFjaFxuICogc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wMyksIDAgMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA3KSwgMCAycHggOHB4IHJnYigwIDAgMCAvIDAuMDcpJyxcbiAgbWQ6ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wMyksIDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjA5KSwgMCA0cHggMTZweCByZ2IoMCAwIDAgLyAwLjA5KScsXG4gIGxnOiAnMCAwIDAgMXB4IHJnYigwIDAgMCAvIDAuMDQpLCAwIDJweCA0cHggcmdiKDAgMCAwIC8gMC4wOSksIDAgMTBweCAyOHB4IHJnYigwIDAgMCAvIDAuMTEpJyxcbiAgeGw6ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wNCksIDAgNHB4IDhweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDE2cHggNDBweCByZ2IoMCAwIDAgLyAwLjE1KScsXG4gICcyeGwnOiAnMCAwIDAgMXB4IHJnYigwIDAgMCAvIDAuMDUpLCAwIDhweCAxNnB4IHJnYigwIDAgMCAvIDAuMTMpLCAwIDI4cHggNTZweCByZ2IoMCAwIDAgLyAwLjIpJyxcbn07XG5cbi8qKlxuICogU3RhY2tpbmcgbGFkZGVyIGZvciBvdmVybGF5IGNvbXBvbmVudHMuIEFuY2hvcmVkIHBvcHVwcyBzaXQgbG93ZXN0O1xuICogdG9vbHRpcHMgYWx3YXlzIHdpbi4gQ29tcG9uZW50cyBtdXN0IHVzZSB0aGVzZSBpbnN0ZWFkIG9mIGFkLWhvYyB2YWx1ZXNcbiAqIHNvIG92ZXJsYXlzIG5ldmVyIGZpZ2h0IGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBaX0lOREVYOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkcm9wZG93bjogJzEwMDAnLFxuICBzdGlja3k6ICcxMTAwJyxcbiAgYmFubmVyOiAnMTIwMCcsXG4gIG92ZXJsYXk6ICcxMzAwJyxcbiAgbW9kYWw6ICcxNDAwJyxcbiAgcG9wb3ZlcjogJzE1MDAnLFxuICB0b2FzdDogJzE2MDAnLFxuICB0b29sdGlwOiAnMTcwMCcsXG59O1xuXG5leHBvcnQgY29uc3QgRFVSQVRJT046IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGluc3RhbnQ6ICcwbXMnLFxuICBmYXN0OiAnMTAwbXMnLFxuICBub3JtYWw6ICcyMDBtcycsXG4gIHNsb3c6ICczMDBtcycsXG4gIHNsb3dlcjogJzUwMG1zJyxcbn07XG5cbmV4cG9ydCBjb25zdCBFQVNJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGxpbmVhcjogJ2xpbmVhcicsXG4gIGluOiAnY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSknLFxuICBvdXQ6ICdjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICdpbi1vdXQnOiAnY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsXG4gIGVtcGhhc2l6ZWQ6ICdjdWJpYy1iZXppZXIoMC4yLCAwLCAwLCAxKScsXG59O1xuIl19