valtech-components 2.0.878 → 2.0.879

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.
@@ -47,6 +47,19 @@ export const PATTERN_MOTIFS = {
47
47
  'corner-tr': f => `<path d="M 100 0 L 0 0 A 100 100 0 0 0 100 100 Z" fill="${f}"/>`,
48
48
  'corner-bl': f => `<path d="M 0 100 L 100 100 A 100 100 0 0 0 0 0 Z" fill="${f}"/>`,
49
49
  'corner-br': f => `<path d="M 100 100 L 0 100 A 100 100 0 0 1 100 0 Z" fill="${f}"/>`,
50
+ // ── Logo symbol ──────────────────────────────────────────────
51
+ underscore: f => `<rect x="14" y="72" width="72" height="14" rx="5" fill="${f}"/>`,
52
+ // ── Números — monospace bold, baseline centrada en tile 100x100 ──
53
+ 'num-0': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">0</text>`,
54
+ 'num-1': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">1</text>`,
55
+ 'num-2': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">2</text>`,
56
+ 'num-3': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">3</text>`,
57
+ 'num-4': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">4</text>`,
58
+ 'num-5': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">5</text>`,
59
+ 'num-6': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">6</text>`,
60
+ 'num-7': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">7</text>`,
61
+ 'num-8': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">8</text>`,
62
+ 'num-9': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">9</text>`,
50
63
  };
51
64
  export const MOTIF_KEYS = Object.keys(PATTERN_MOTIFS);
52
65
  // ── Familias ─────────────────────────────────────────────────────────────────
@@ -61,8 +74,27 @@ export const CHEV_KEYS = [
61
74
  'arrow-r',
62
75
  'arrow-l',
63
76
  ];
64
- /** Stroke family — líneas y cruces (complementan chevrons). */
65
- export const STROKE_KEYS = ['cross', 'x-mark', 'slash-r', 'slash-l'];
77
+ /** Stroke family — líneas, cruces y el guión bajo del logo `>_`. */
78
+ export const STROKE_KEYS = [
79
+ 'cross',
80
+ 'x-mark',
81
+ 'slash-r',
82
+ 'slash-l',
83
+ 'underscore',
84
+ ];
85
+ /** Numeric family — dígitos 0-9 en monospace bold. */
86
+ export const NUM_KEYS = [
87
+ 'num-0',
88
+ 'num-1',
89
+ 'num-2',
90
+ 'num-3',
91
+ 'num-4',
92
+ 'num-5',
93
+ 'num-6',
94
+ 'num-7',
95
+ 'num-8',
96
+ 'num-9',
97
+ ];
66
98
  /** Circle / dot family — formas curvas centradas. */
67
99
  export const CIRCLE_KEYS = ['circle', 'circle-sm', 'dot'];
68
100
  /** Diamond solo — forma geométrica angular centrada. */
@@ -111,10 +143,11 @@ export const PATTERN_PALETTES = {
111
143
  mono: ['#080808', '#1a1a1a', '#303030', '#484848', '#707070', '#9e9e9e', '#cecece', '#f0f0f0'],
112
144
  };
113
145
  export const PATTERN_STYLE_CONFIGS = {
114
- branded: { chev: 0.6, stroke: 0.08, circle: 0.04, shape: 0.06, solid: 0.18 },
115
- geometric: { chev: 0.15, stroke: 0.05, circle: 0.18, shape: 0.14, solid: 0.1 },
116
- minimal: { chev: 0.25, stroke: 0.1, circle: 0.12, shape: 0.04, solid: 0.38 },
117
- dense: { chev: 0.42, stroke: 0.14, circle: 0.12, shape: 0.1, solid: 0.08 },
146
+ branded: { chev: 0.58, stroke: 0.1, circle: 0.04, shape: 0.06, solid: 0.18, num: 0.0 },
147
+ geometric: { chev: 0.15, stroke: 0.05, circle: 0.18, shape: 0.14, solid: 0.1, num: 0.0 },
148
+ minimal: { chev: 0.25, stroke: 0.1, circle: 0.12, shape: 0.04, solid: 0.38, num: 0.0 },
149
+ dense: { chev: 0.4, stroke: 0.14, circle: 0.12, shape: 0.1, solid: 0.08, num: 0.02 },
150
+ code: { chev: 0.35, stroke: 0.18, circle: 0.02, shape: 0.02, solid: 0.12, num: 0.2 },
118
151
  };
119
152
  // ── RNG ──────────────────────────────────────────────────────────────────────
120
153
  /**
@@ -152,6 +185,7 @@ export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.ra
152
185
  const t3 = t2 + cfg.circle;
153
186
  const t4 = t3 + cfg.shape;
154
187
  const t5 = t4 + cfg.solid;
188
+ const t6 = t5 + (cfg.num ?? 0);
155
189
  if (roll < t1)
156
190
  key = pickFrom(CHEV_KEYS, rng);
157
191
  else if (roll < t2)
@@ -162,6 +196,8 @@ export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.ra
162
196
  key = pickFrom(SHAPE_KEYS, rng);
163
197
  else if (roll < t5)
164
198
  key = pickFrom(SOLID_KEYS, rng);
199
+ else if (roll < t6)
200
+ key = pickFrom(NUM_KEYS, rng);
165
201
  else
166
202
  key = pickFrom([...TRI_KEYS, ...CORNER_KEYS], rng);
167
203
  const bgIdx = Math.floor(rng() * palette.length);
@@ -202,4 +238,4 @@ export function renderPatternSvgInner(tiles, cols, baseColor) {
202
238
  }
203
239
  return inner;
204
240
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBaUNILE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFZLFdBQVcsRUFBRSxFQUFFLENBQ3ZELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyw4REFBOEQsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9EO0lBQzdFLCtEQUErRDtJQUMvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtJQUNyRixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQyxLQUFLO0lBQzVGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFFQUFx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O0lBQzVDLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7SUFDckIsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsU0FBUyxLQUFLLENBQUM7SUFDckUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxLQUFLLElBQUksMkJBQTJCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsMkNBQTJDLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDekgsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFsdGVjaCBQYXR0ZXJuIFN5c3RlbSDigJQgbW90aWZzICsgcGFsZXR0ZXMuXG4gKlxuICogUHVyZSBkYXRhICsgaGVscGVycywgc2luIGRlcGVuZGVuY2lhcyBBbmd1bGFyLiBSZXVzYWJsZSBkZXNkZSBOb2RlL3NjcmlwdHNcbiAqIChlLmcuLCBnZW5lcmF0ZSBzdGF0aWMgdGh1bWJuYWlscykgbyBkZXNkZSBlbCBjb21wb25lbnRlIGB2YWwtcGF0dGVybmAuXG4gKlxuICogT3JpZ2luYWwgc3BlYzogYGFzc2V0cy9WYWx0ZWNoIFBhdHRlcm4gU3lzdGVtLmh0bWxgIChzaW5nbGUtcGFnZSBkZW1vKS5cbiAqIENhZGEgbW90aWYgZXMgZnVuY2nDs24gYChmaWxsOiBzdHJpbmcpID0+IHN0cmluZ2AgcXVlIGRldnVlbHZlIFNWRyBpbm5lclxuICogbWFya3VwLiBUaWxlIGVzIDEwMHgxMDAgdW5pZGFkZXM7IGVsIG1vdGlmIHNlIHJlbmRlcml6YSBkZW50cm8gZGUgdW4gYDxnXG4gKiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoY29sKjEwMCByb3cqMTAwKVwiPmAgY29uIHVuIGA8cmVjdCB3aWR0aD0xMDAgaGVpZ2h0PTEwMFxuICogZmlsbD1iZy8+YCBkZSBmb25kby5cbiAqL1xuXG5leHBvcnQgdHlwZSBQYXR0ZXJuTW90aWZLZXkgPVxuICB8ICdjaGV2LXInXG4gIHwgJ2NoZXYtbCdcbiAgfCAnY2hldi1kJ1xuICB8ICdjaGV2LXUnXG4gIHwgJ3RyaS10bCdcbiAgfCAndHJpLXRyJ1xuICB8ICd0cmktYmwnXG4gIHwgJ3RyaS1icidcbiAgfCAnc29saWQnXG4gIHwgJ2RpYW1vbmQnXG4gIHwgJ3NtYWxsLXInXG4gIHwgJ3NtYWxsLWwnXG4gIHwgJ2Fycm93LXInXG4gIHwgJ2Fycm93LWwnXG4gIHwgJ2hvdXNlLWQnXG4gIHwgJ2hhbGYtbCdcbiAgfCAnaGFsZi10J1xuICAvLyDilIDilIAgTnVldm9zIG1vdGlmcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgfCAnY2lyY2xlJ1xuICB8ICdjaXJjbGUtc20nXG4gIHwgJ2RvdCdcbiAgfCAnY3Jvc3MnXG4gIHwgJ3gtbWFyaydcbiAgfCAnc2xhc2gtcidcbiAgfCAnc2xhc2gtbCdcbiAgfCAnY29ybmVyLXRsJ1xuICB8ICdjb3JuZXItdHInXG4gIHwgJ2Nvcm5lci1ibCdcbiAgfCAnY29ybmVyLWJyJztcblxuY29uc3QgQ0hFVl9TVFJPS0UgPSAxODtcbmNvbnN0IENIRVZfU01BTExfU1RST0tFID0gMTI7XG5jb25zdCBjaGV2U3R5bGUgPSAoZjogc3RyaW5nLCB3OiBudW1iZXIgPSBDSEVWX1NUUk9LRSkgPT5cbiAgYHN0cm9rZT1cIiR7Zn1cIiBzdHJva2Utd2lkdGg9XCIke3d9XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZmlsbD1cIm5vbmVcImA7XG5cbmV4cG9ydCBjb25zdCBQQVRURVJOX01PVElGUzogUmVjb3JkPFBhdHRlcm5Nb3RpZktleSwgKGZnOiBzdHJpbmcpID0+IHN0cmluZz4gPSB7XG4gIC8vIOKUgOKUgCBDaGV2cm9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ2NoZXYtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMjIgMTggTDcyIDUwIEwyMiA4MlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtbCc6IGYgPT4gYDxwYXRoIGQ9XCJNNzggMTggTDI4IDUwIEw3OCA4MlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtZCc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMjIgTDUwIDcyIEw4MiAyMlwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ2NoZXYtdSc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggNzggTDUwIDI4IEw4MiA3OFwiICR7Y2hldlN0eWxlKGYpfS8+YCxcbiAgJ3NtYWxsLXInOiBmID0+IGA8cGF0aCBkPVwiTTM4IDMyIEw2MiA1MCBMMzggNjhcIiAke2NoZXZTdHlsZShmLCBDSEVWX1NNQUxMX1NUUk9LRSl9Lz5gLFxuICAnc21hbGwtbCc6IGYgPT4gYDxwYXRoIGQ9XCJNNjIgMzIgTDM4IDUwIEw2MiA2OFwiICR7Y2hldlN0eWxlKGYsIENIRVZfU01BTExfU1RST0tFKX0vPmAsXG4gICdhcnJvdy1yJzogZiA9PiBgPHBhdGggZD1cIk0xMCA0MiBMNjAgNDIgTDYwIDI4IEw5MiA1MCBMNjAgNzIgTDYwIDU4IEwxMCA1OCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Fycm93LWwnOiBmID0+IGA8cGF0aCBkPVwiTTkwIDQyIEw0MCA0MiBMNDAgMjggTDggNTAgTDQwIDcyIEw0MCA1OCBMOTAgNTggWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIC8vIOKUgOKUgCBTdHJva2VzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjcm9zczogZiA9PiBgPHBhdGggZD1cIk01MCAxMiBMNTAgODggTTEyIDUwIEw4OCA1MFwiICR7Y2hldlN0eWxlKGYsIDE2KX0vPmAsXG4gICd4LW1hcmsnOiBmID0+IGA8cGF0aCBkPVwiTTE4IDE4IEw4MiA4MiBNODIgMTggTDE4IDgyXCIgJHtjaGV2U3R5bGUoZiwgMTYpfS8+YCxcbiAgJ3NsYXNoLXInOiBmID0+XG4gICAgYDxsaW5lIHgxPVwiMThcIiB5MT1cIjgyXCIgeDI9XCI4MlwiIHkyPVwiMThcIiBzdHJva2U9XCIke2Z9XCIgc3Ryb2tlLXdpZHRoPVwiMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPmAsXG4gICdzbGFzaC1sJzogZiA9PlxuICAgIGA8bGluZSB4MT1cIjE4XCIgeTE9XCIxOFwiIHgyPVwiODJcIiB5Mj1cIjgyXCIgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5gLFxuICAvLyDilIDilIAgRmlsbGVkIHNoYXBlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgY2lyY2xlOiBmID0+IGA8Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjQwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2NpcmNsZS1zbSc6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiMjRcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICBkb3Q6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiMTJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICBkaWFtb25kOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCI1MCwxMiA4OCw1MCA1MCw4OCAxMiw1MFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIHNvbGlkOiAoKSA9PiBgYCxcbiAgLy8g4pSA4pSAIFRyaWFuZ2xlcyAmIGhhbHZlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ3RyaS10bCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktdHInOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIwLDAgMTAwLDAgMTAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktYmwnOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIwLDAgMTAwLDEwMCAwLDEwMFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICd0cmktYnInOiBmID0+IGA8cG9seWdvbiBwb2ludHM9XCIxMDAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2hhbGYtbCc6IGYgPT4gYDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjUwXCIgaGVpZ2h0PVwiMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2hhbGYtdCc6IGYgPT4gYDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjUwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2hvdXNlLWQnOiBmID0+XG4gICAgYDxwb2x5Z29uIHBvaW50cz1cIjUwLDIwIDg4LDUwIDEyLDUwXCIgZmlsbD1cIiR7Zn1cIi8+PHJlY3QgeD1cIjI4XCIgeT1cIjUwXCIgd2lkdGg9XCI0NFwiIGhlaWdodD1cIjMyXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIENvcm5lciBhcmNzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnY29ybmVyLXRsJzogZiA9PiBgPHBhdGggZD1cIk0gMCAwIEwgMTAwIDAgQSAxMDAgMTAwIDAgMCAxIDAgMTAwIFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY29ybmVyLXRyJzogZiA9PiBgPHBhdGggZD1cIk0gMTAwIDAgTCAwIDAgQSAxMDAgMTAwIDAgMCAwIDEwMCAxMDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdjb3JuZXItYmwnOiBmID0+IGA8cGF0aCBkPVwiTSAwIDEwMCBMIDEwMCAxMDAgQSAxMDAgMTAwIDAgMCAwIDAgMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Nvcm5lci1icic6IGYgPT4gYDxwYXRoIGQ9XCJNIDEwMCAxMDAgTCAwIDEwMCBBIDEwMCAxMDAgMCAwIDEgMTAwIDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG59O1xuXG5leHBvcnQgY29uc3QgTU9USUZfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBPYmplY3Qua2V5cyhQQVRURVJOX01PVElGUykgYXMgUGF0dGVybk1vdGlmS2V5W107XG5cbi8vIOKUgOKUgCBGYW1pbGlhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIENoZXZyb24gZmFtaWx5IOKAlCBvcmllbnRhY2lvbmVzICsgdmFyaWFudGVzIHBlcXVlw7Fhcy4gKi9cbmV4cG9ydCBjb25zdCBDSEVWX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAnY2hldi1yJyxcbiAgJ2NoZXYtbCcsXG4gICdjaGV2LWQnLFxuICAnY2hldi11JyxcbiAgJ3NtYWxsLXInLFxuICAnc21hbGwtbCcsXG4gICdhcnJvdy1yJyxcbiAgJ2Fycm93LWwnLFxuXTtcblxuLyoqIFN0cm9rZSBmYW1pbHkg4oCUIGzDrW5lYXMgeSBjcnVjZXMgKGNvbXBsZW1lbnRhbiBjaGV2cm9ucykuICovXG5leHBvcnQgY29uc3QgU1RST0tFX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydjcm9zcycsICd4LW1hcmsnLCAnc2xhc2gtcicsICdzbGFzaC1sJ107XG5cbi8qKiBDaXJjbGUgLyBkb3QgZmFtaWx5IOKAlCBmb3JtYXMgY3VydmFzIGNlbnRyYWRhcy4gKi9cbmV4cG9ydCBjb25zdCBDSVJDTEVfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2NpcmNsZScsICdjaXJjbGUtc20nLCAnZG90J107XG5cbi8qKiBEaWFtb25kIHNvbG8g4oCUIGZvcm1hIGdlb23DqXRyaWNhIGFuZ3VsYXIgY2VudHJhZGEuICovXG5leHBvcnQgY29uc3QgU0hBUEVfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2RpYW1vbmQnXTtcblxuLyoqIFRyaWFuZ2xlIC8gaGFsZi1maWxsIGZhbWlseS4gKi9cbmV4cG9ydCBjb25zdCBUUklfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICd0cmktdGwnLFxuICAndHJpLXRyJyxcbiAgJ3RyaS1ibCcsXG4gICd0cmktYnInLFxuICAnaGFsZi1sJyxcbiAgJ2hhbGYtdCcsXG4gICdob3VzZS1kJyxcbl07XG5cbi8qKiBDb3JuZXIgYXJjIGZhbWlseSDigJQgbWV6Y2xhIHN1YXZlIGNvbiB0cmlhbmdsZXMuICovXG5leHBvcnQgY29uc3QgQ09STkVSX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydjb3JuZXItdGwnLCAnY29ybmVyLXRyJywgJ2Nvcm5lci1ibCcsICdjb3JuZXItYnInXTtcblxuLyoqIE5vLWZvcmVncm91bmQgdGlsZXMg4oCUIHNvbG8gcmVjdCBkZSBmb25kby4gKi9cbmV4cG9ydCBjb25zdCBTT0xJRF9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnc29saWQnXTtcblxuLy8g4pSA4pSAIFBhbGV0YXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKiBCdWlsdC1pbiBwYWxldHRlcyDigJQgOCBjb2xvcmVzIGRhcmsg4oaSIGxpZ2h0LiAqL1xuZXhwb3J0IHR5cGUgUGF0dGVyblBhbGV0dGVLZXkgPVxuICB8ICdwdXJwbGUnXG4gIHwgJ2luaydcbiAgfCAnbGF2ZW5kZXInXG4gIHwgJ21pZG5pZ2h0J1xuICB8ICdlbWJlcidcbiAgfCAnZm9yZXN0J1xuICB8ICdyb3NlJ1xuICB8ICdnb2xkJ1xuICB8ICdtb25vJztcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fUEFMRVRURVM6IFJlY29yZDxQYXR0ZXJuUGFsZXR0ZUtleSwgc3RyaW5nW10+ID0ge1xuICBwdXJwbGU6IFsnIzBlMDQyMCcsICcjMmExMTU4JywgJyM0YTFkOTYnLCAnIzcwMjZkZicsICcjOTE1NmU4JywgJyNiNDhlZWEnLCAnI2Q5YzNmNScsICcjZWJkY2ZkJ10sXG4gIGluazogWycjMDAwMDAwJywgJyMwYTBmMWMnLCAnIzFhMjIzNScsICcjMmQzYTU1JywgJyM0YTU4NzgnLCAnIzdkOGFhNScsICcjYjhjMWQ0JywgJyNlNGU4ZjAnXSxcbiAgbGF2ZW5kZXI6IFtcbiAgICAnIzFhMGUzYScsXG4gICAgJyMyZTE3NTUnLFxuICAgICcjNWEzYWEwJyxcbiAgICAnIzdlNWRjNicsXG4gICAgJyNhMThiZDknLFxuICAgICcjYzRhOGYwJyxcbiAgICAnI2RjY2VmNScsXG4gICAgJyNmMGU2ZmMnLFxuICBdLFxuICBtaWRuaWdodDogW1xuICAgICcjMDIwODE0JyxcbiAgICAnIzA3MTQyOCcsXG4gICAgJyMwZDIyNDgnLFxuICAgICcjMWEzYTZlJyxcbiAgICAnIzI2NTZhOCcsXG4gICAgJyM0ZDgyZDQnLFxuICAgICcjOGFiNGViJyxcbiAgICAnI2M1ZDlmNScsXG4gIF0sXG4gIGVtYmVyOiBbJyMxMjAyMDAnLCAnIzJlMDgwMCcsICcjNmIxYTAwJywgJyNiODMyMDAnLCAnI2U4NWExMCcsICcjZjU5MDQyJywgJyNmOWM0OGEnLCAnI2ZkZThjYyddLFxuICBmb3Jlc3Q6IFsnIzAxMGEwNCcsICcjMDUyMDEwJywgJyMwYTQwMjAnLCAnIzBmNjYzNScsICcjMThhMDU4JywgJyMzZWNlODAnLCAnIzg2ZThiNCcsICcjYzRmNWRjJ10sXG4gIHJvc2U6IFsnIzEyMDEwYScsICcjMmUwNDIwJywgJyM2YjBhNDgnLCAnI2IwMTg3MCcsICcjZTA0MGEwJywgJyNmMDgwYzgnLCAnI2Y4YmNlNCcsICcjZmRlMGYzJ10sXG4gIGdvbGQ6IFsnIzEwMDgwMCcsICcjMmExYTAwJywgJyM1YzM4MDAnLCAnIzllNjAwMCcsICcjZDQ5MjBhJywgJyNmMGJjNDAnLCAnI2Y4ZGE4YycsICcjZmRmMGNjJ10sXG4gIG1vbm86IFsnIzA4MDgwOCcsICcjMWExYTFhJywgJyMzMDMwMzAnLCAnIzQ4NDg0OCcsICcjNzA3MDcwJywgJyM5ZTllOWUnLCAnI2NlY2VjZScsICcjZjBmMGYwJ10sXG59O1xuXG4vLyDilIDilIAgUHJlc2V0cyBkZSBlc3RpbG8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogUHJlc2V0IGRlIGNvbXBvc2ljacOzbiBkZWwgcGF0csOzbi4gQ29udHJvbGEgcXXDqSBmYW1pbGlhcyBwcmVkb21pbmFuLlxuICpcbiAqIC0gYGJyYW5kZWRgICAg4oaSIENoZXZyb25zIGRvbWluYW50ZXMgKGlkZW50aWRhZCBWYWx0ZWNoIGA+X2ApLiBEZWZhdWx0LlxuICogLSBgZ2VvbWV0cmljYCDihpIgVHJpw6FuZ3Vsb3MsIGVzcXVpbmFzIHkgY8OtcmN1bG9zLiBNw6FzIGFycXVpdGVjdMOzbmljby5cbiAqIC0gYG1pbmltYWxgICAg4oaSIEVzcGFjaW9zIHPDs2xpZG9zIGNvbiB0cmF6b3Mgc3V0aWxlcy4gTGltcGlvLCBjb3Jwb3JhdGl2by5cbiAqIC0gYGRlbnNlYCAgICAg4oaSIE1lemNsYSByaWNhIGRlIHRvZGFzIGxhcyBmYW1pbGlhcy4gTcOheGltYSB0ZXh0dXJhLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuU3R5bGVLZXkgPSAnYnJhbmRlZCcgfCAnZ2VvbWV0cmljJyB8ICdtaW5pbWFsJyB8ICdkZW5zZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkRlbnNpdHlDb25maWcge1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIGNoZXZyb24gZmFtaWx5LiAqL1xuICBjaGV2OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgc3Ryb2tlIGZhbWlseSAoY3Jvc3MsIHgsIHNsYXNoKS4gKi9cbiAgc3Ryb2tlOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgY8OtcmN1bG9zLiAqL1xuICBjaXJjbGU6IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaWRhZCBkZSBkaWFtb25kLiAqL1xuICBzaGFwZTogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIHNvbGlkIChlc3BhY2lvIHZhY8OtbykuICovXG4gIHNvbGlkOiBudW1iZXI7XG4gIC8qKiBSZXN0byDihpIgdHJpYW5nbGVzICsgY29ybmVycy4gKi9cbn1cblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fU1RZTEVfQ09ORklHUzogUmVjb3JkPFBhdHRlcm5TdHlsZUtleSwgUGF0dGVybkRlbnNpdHlDb25maWc+ID0ge1xuICBicmFuZGVkOiB7IGNoZXY6IDAuNiwgc3Ryb2tlOiAwLjA4LCBjaXJjbGU6IDAuMDQsIHNoYXBlOiAwLjA2LCBzb2xpZDogMC4xOCB9LFxuICBnZW9tZXRyaWM6IHsgY2hldjogMC4xNSwgc3Ryb2tlOiAwLjA1LCBjaXJjbGU6IDAuMTgsIHNoYXBlOiAwLjE0LCBzb2xpZDogMC4xIH0sXG4gIG1pbmltYWw6IHsgY2hldjogMC4yNSwgc3Ryb2tlOiAwLjEsIGNpcmNsZTogMC4xMiwgc2hhcGU6IDAuMDQsIHNvbGlkOiAwLjM4IH0sXG4gIGRlbnNlOiB7IGNoZXY6IDAuNDIsIHN0cm9rZTogMC4xNCwgY2lyY2xlOiAwLjEyLCBzaGFwZTogMC4xLCBzb2xpZDogMC4wOCB9LFxufTtcblxuLy8g4pSA4pSAIFJORyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBNdWxiZXJyeTMyIHNlZWRlZCBSTkcg4oCUIGRldnVlbHZlIGZ1bmNpw7NuIGAoKT0+WzAsMSlgLlxuICogRGV0ZXJtaW5pc3RpYzogbWlzbW8gc2VlZCDihpIgbWlzbWEgc2VjdWVuY2lhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXVsYmVycnkzMihzZWVkOiBudW1iZXIpOiAoKSA9PiBudW1iZXIge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHNlZWQgPSAoc2VlZCArIDB4NmQyYjc5ZjUpID4+PiAwO1xuICAgIGxldCB0ID0gc2VlZDtcbiAgICB0ID0gTWF0aC5pbXVsKHQgXiAodCA+Pj4gMTUpLCB0IHwgMSk7XG4gICAgdCBePSB0ICsgTWF0aC5pbXVsKHQgXiAodCA+Pj4gNyksIHQgfCA2MSk7XG4gICAgcmV0dXJuICgodCBeICh0ID4+PiAxNCkpID4+PiAwKSAvIDQyOTQ5NjcyOTY7XG4gIH07XG59XG5cbi8vIOKUgOKUgCBHZW5lcmFjacOzbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuR2VuQ29uZmlnIHtcbiAgY29sczogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG4gIHNlZWQ6IG51bWJlcjtcbiAgcGFsZXR0ZTogc3RyaW5nW107XG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuVGlsZSB7XG4gIG1vdGlmOiBQYXR0ZXJuTW90aWZLZXk7XG4gIGJnOiBzdHJpbmc7XG4gIGZnOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHBpY2tGcm9tPFQ+KGFycjogVFtdLCBybmc6ICgpID0+IG51bWJlcik6IFQge1xuICByZXR1cm4gYXJyW01hdGguZmxvb3Iocm5nKCkgKiBhcnIubGVuZ3RoKV0hO1xufVxuXG4vKipcbiAqIEdlbmVyYSBVTiB0aWxlIHJlc3BldGFuZG8gZGVuc2lkYWRlcyBkZSBmYW1pbGlhICsgY29udHJhc3RlIGRlIHBhbGV0dGUuXG4gKiBBY2VwdGEgdW4gY29uZmlnIG9wY2lvbmFsIGRlIGRlbnNpZGFkZXMgKGRlIFBhdHRlcm5TdHlsZUtleSBvIGNoZXZyb25EZW5zaXR5IGxlZ2FjeSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbVRpbGUoXG4gIHBhbGV0dGU6IHN0cmluZ1tdLFxuICBjaGV2cm9uRGVuc2l0eSA9IDAuNTUsXG4gIHJuZzogKCkgPT4gbnVtYmVyID0gTWF0aC5yYW5kb20sXG4gIGRlbnNpdHlDb25maWc/OiBQYXR0ZXJuRGVuc2l0eUNvbmZpZ1xuKTogUGF0dGVyblRpbGUge1xuICBjb25zdCBjZmcgPSBkZW5zaXR5Q29uZmlnID8/IHtcbiAgICBjaGV2OiBjaGV2cm9uRGVuc2l0eSxcbiAgICBzdHJva2U6IDAuMDgsXG4gICAgY2lyY2xlOiAwLjA1LFxuICAgIHNoYXBlOiAwLjA3LFxuICAgIHNvbGlkOiAwLjIsXG4gIH07XG5cbiAgY29uc3Qgcm9sbCA9IHJuZygpO1xuICBsZXQga2V5OiBQYXR0ZXJuTW90aWZLZXk7XG5cbiAgY29uc3QgdDEgPSBjZmcuY2hldjtcbiAgY29uc3QgdDIgPSB0MSArIGNmZy5zdHJva2U7XG4gIGNvbnN0IHQzID0gdDIgKyBjZmcuY2lyY2xlO1xuICBjb25zdCB0NCA9IHQzICsgY2ZnLnNoYXBlO1xuICBjb25zdCB0NSA9IHQ0ICsgY2ZnLnNvbGlkO1xuXG4gIGlmIChyb2xsIDwgdDEpIGtleSA9IHBpY2tGcm9tKENIRVZfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQyKSBrZXkgPSBwaWNrRnJvbShTVFJPS0VfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQzKSBrZXkgPSBwaWNrRnJvbShDSVJDTEVfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQ0KSBrZXkgPSBwaWNrRnJvbShTSEFQRV9LRVlTLCBybmcpO1xuICBlbHNlIGlmIChyb2xsIDwgdDUpIGtleSA9IHBpY2tGcm9tKFNPTElEX0tFWVMsIHJuZyk7XG4gIGVsc2Uga2V5ID0gcGlja0Zyb20oWy4uLlRSSV9LRVlTLCAuLi5DT1JORVJfS0VZU10sIHJuZyk7XG5cbiAgY29uc3QgYmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgZmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgdHJpZXMgPSAwO1xuICB3aGlsZSAoTWF0aC5hYnMoZmdJZHggLSBiZ0lkeCkgPCAzICYmIHRyaWVzIDwgNikge1xuICAgIGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgICB0cmllcysrO1xuICB9XG4gIHJldHVybiB7IG1vdGlmOiBrZXksIGJnOiBwYWxldHRlW2JnSWR4XSEsIGZnOiBwYWxldHRlW2ZnSWR4XSEgfTtcbn1cblxuLyoqIEdlbmVyYSBtYXRyaXogY29tcGxldGEgZGUgdGlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXR0ZXJuVGlsZXMoY2ZnOiBQYXR0ZXJuR2VuQ29uZmlnKTogUGF0dGVyblRpbGVbXSB7XG4gIGNvbnN0IHsgY29scywgcm93cywgc2VlZCwgcGFsZXR0ZSB9ID0gY2ZnO1xuICBjb25zdCBjaGV2cm9uRGVuc2l0eSA9IGNmZy5jaGV2cm9uRGVuc2l0eSA/PyAwLjU1O1xuICBjb25zdCBkZW5zaXR5Q29uZmlnID0gY2ZnLnN0eWxlID8gUEFUVEVSTl9TVFlMRV9DT05GSUdTW2NmZy5zdHlsZV0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHIgPSBtdWxiZXJyeTMyKHNlZWQpO1xuICBjb25zdCB0aWxlczogUGF0dGVyblRpbGVbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHMgKiByb3dzOyBpKyspIHtcbiAgICB0aWxlcy5wdXNoKGdlbmVyYXRlUmFuZG9tVGlsZShwYWxldHRlLCBjaGV2cm9uRGVuc2l0eSwgciwgZGVuc2l0eUNvbmZpZykpO1xuICB9XG4gIHJldHVybiB0aWxlcztcbn1cblxuLyoqXG4gKiBSZW5kZXJpemEgZWwgaW5uZXIgU1ZHIChzaW4gZWwgYDxzdmc+YCByb290KSBwYXJhIHVuYSBtYXRyaXogZGUgdGlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQYXR0ZXJuU3ZnSW5uZXIoXG4gIHRpbGVzOiBQYXR0ZXJuVGlsZVtdLFxuICBjb2xzOiBudW1iZXIsXG4gIGJhc2VDb2xvcjogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBXID0gY29scyAqIDEwMDtcbiAgY29uc3Qgcm93cyA9IE1hdGguY2VpbCh0aWxlcy5sZW5ndGggLyBjb2xzKTtcbiAgY29uc3QgSCA9IHJvd3MgKiAxMDA7XG4gIGxldCBpbm5lciA9IGA8cmVjdCB3aWR0aD1cIiR7V31cIiBoZWlnaHQ9XCIke0h9XCIgZmlsbD1cIiR7YmFzZUNvbG9yfVwiLz5gO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYyA9IGkgJSBjb2xzO1xuICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKGkgLyBjb2xzKTtcbiAgICBjb25zdCB0ID0gdGlsZXNbaV0hO1xuICAgIGNvbnN0IHNoYXBlID0gUEFUVEVSTl9NT1RJRlNbdC5tb3RpZl0odC5mZyk7XG4gICAgaW5uZXIgKz0gYDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2MgKiAxMDB9ICR7ciAqIDEwMH0pXCI+PHJlY3Qgd2lkdGg9XCIxMDBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHt0LmJnfVwiLz4ke3NoYXBlfTwvZz5gO1xuICB9XG4gIHJldHVybiBpbm5lcjtcbn1cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNkNILE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFZLFdBQVcsRUFBRSxFQUFFLENBQ3ZELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyw4REFBOEQsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9EO0lBQzdFLCtEQUErRDtJQUMvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtJQUNyRixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQyxLQUFLO0lBQzVGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFFQUFxRSxDQUFDLEtBQUs7SUFDM0YsK0RBQStEO0lBQy9ELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHlDQUF5QyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJO0lBQ3pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHlDQUF5QyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJO0lBQzVFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNiLGlEQUFpRCxDQUFDLDhDQUE4QztJQUNsRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDYixpREFBaUQsQ0FBQyw4Q0FBOEM7SUFDbEcsK0RBQStEO0lBQy9ELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDLEtBQUs7SUFDM0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsS0FBSztJQUNoRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQyxLQUFLO0lBQ3hELE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLG1EQUFtRCxDQUFDLEtBQUs7SUFDdkUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDZiwrREFBK0Q7SUFDL0QsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsMkNBQTJDLENBQUMsS0FBSztJQUNoRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxLQUFLO0lBQ2xFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLDZDQUE2QyxDQUFDLEtBQUs7SUFDbEUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsK0NBQStDLENBQUMsS0FBSztJQUNwRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtREFBbUQsQ0FBQyxLQUFLO0lBQ3hFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLG1EQUFtRCxDQUFDLEtBQUs7SUFDeEUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ2IsNkNBQTZDLENBQUMsdURBQXVELENBQUMsS0FBSztJQUM3RywrREFBK0Q7SUFDL0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMseURBQXlELENBQUMsS0FBSztJQUNqRixXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyREFBMkQsQ0FBQyxLQUFLO0lBQ25GLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLDJEQUEyRCxDQUFDLEtBQUs7SUFDbkYsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsNkRBQTZELENBQUMsS0FBSztJQUNyRixnRUFBZ0U7SUFDaEUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsMkRBQTJELENBQUMsS0FBSztJQUNsRixvRUFBb0U7SUFDcEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ1gsc0lBQXNJLENBQUMsWUFBWTtJQUNySixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDWCxzSUFBc0ksQ0FBQyxZQUFZO0lBQ3JKLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNYLHNJQUFzSSxDQUFDLFlBQVk7SUFDckosT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ1gsc0lBQXNJLENBQUMsWUFBWTtJQUNySixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDWCxzSUFBc0ksQ0FBQyxZQUFZO0lBQ3JKLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNYLHNJQUFzSSxDQUFDLFlBQVk7SUFDckosT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ1gsc0lBQXNJLENBQUMsWUFBWTtJQUNySixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDWCxzSUFBc0ksQ0FBQyxZQUFZO0lBQ3JKLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUNYLHNJQUFzSSxDQUFDLFlBQVk7SUFDckosT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ1gsc0lBQXNJLENBQUMsWUFBWTtDQUN0SixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFzQixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBc0IsQ0FBQztBQUU5RixnRkFBZ0Y7QUFFaEYsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBc0I7SUFDMUMsUUFBUTtJQUNSLFFBQVE7SUFDUixRQUFRO0lBQ1IsUUFBUTtJQUNSLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBc0I7SUFDNUMsT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsU0FBUztJQUNULFlBQVk7Q0FDYixDQUFDO0FBRUYsc0RBQXNEO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBc0I7SUFDekMsT0FBTztJQUNQLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztJQUNQLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztJQUNQLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztDQUNSLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFN0Usd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6RCxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFzQjtJQUN6QyxRQUFRO0lBQ1IsUUFBUTtJQUNSLFFBQVE7SUFDUixRQUFRO0lBQ1IsUUFBUTtJQUNSLFFBQVE7SUFDUixTQUFTO0NBQ1YsQ0FBQztBQUVGLHNEQUFzRDtBQUN0RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQXNCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFbkcsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQWdCdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXdDO0lBQ25FLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDaEcsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUM3RixRQUFRLEVBQUU7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7S0FDVjtJQUNELEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDL0YsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNoRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQzlGLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDOUYsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztDQUMvRixDQUFDO0FBK0JGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrRDtJQUNsRixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUN0RixTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUN4RixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUN0RixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUNwRixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUNyRixDQUFDO0FBRUYsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBWTtJQUNyQyxPQUFPO1FBQ0wsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDYixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUMvQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBbUJELFNBQVMsUUFBUSxDQUFJLEdBQVEsRUFBRSxHQUFpQjtJQUM5QyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBRSxDQUFDO0FBQzlDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQWlCLEVBQ2pCLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLE1BQW9CLElBQUksQ0FBQyxNQUFNLEVBQy9CLGFBQW9DO0lBRXBDLE1BQU0sR0FBRyxHQUFHLGFBQWEsSUFBSTtRQUMzQixJQUFJLEVBQUUsY0FBYztRQUNwQixNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsR0FBRztLQUNYLENBQUM7SUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQW9CLENBQUM7SUFFekIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUNwQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMzQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUMzQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUMxQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUMxQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRS9CLElBQUksSUFBSSxHQUFHLEVBQUU7UUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6QyxJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDaEQsSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hELElBQUksSUFBSSxHQUFHLEVBQUU7UUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMvQyxJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDOztRQUM3QyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUUsRUFBRSxDQUFDO0FBQ2xFLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQXFCO0lBQ3hELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDMUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0UsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxLQUFvQixFQUNwQixJQUFZLEVBQ1osU0FBaUI7SUFFakIsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxTQUFTLEtBQUssQ0FBQztJQUNyRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEtBQUssSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRywyQ0FBMkMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUN6SCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWx0ZWNoIFBhdHRlcm4gU3lzdGVtIOKAlCBtb3RpZnMgKyBwYWxldHRlcy5cbiAqXG4gKiBQdXJlIGRhdGEgKyBoZWxwZXJzLCBzaW4gZGVwZW5kZW5jaWFzIEFuZ3VsYXIuIFJldXNhYmxlIGRlc2RlIE5vZGUvc2NyaXB0c1xuICogKGUuZy4sIGdlbmVyYXRlIHN0YXRpYyB0aHVtYm5haWxzKSBvIGRlc2RlIGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBPcmlnaW5hbCBzcGVjOiBgYXNzZXRzL1ZhbHRlY2ggUGF0dGVybiBTeXN0ZW0uaHRtbGAgKHNpbmdsZS1wYWdlIGRlbW8pLlxuICogQ2FkYSBtb3RpZiBlcyBmdW5jacOzbiBgKGZpbGw6IHN0cmluZykgPT4gc3RyaW5nYCBxdWUgZGV2dWVsdmUgU1ZHIGlubmVyXG4gKiBtYXJrdXAuIFRpbGUgZXMgMTAweDEwMCB1bmlkYWRlczsgZWwgbW90aWYgc2UgcmVuZGVyaXphIGRlbnRybyBkZSB1biBgPGdcbiAqIHRyYW5zZm9ybT1cInRyYW5zbGF0ZShjb2wqMTAwIHJvdyoxMDApXCI+YCBjb24gdW4gYDxyZWN0IHdpZHRoPTEwMCBoZWlnaHQ9MTAwXG4gKiBmaWxsPWJnLz5gIGRlIGZvbmRvLlxuICovXG5cbmV4cG9ydCB0eXBlIFBhdHRlcm5Nb3RpZktleSA9XG4gIHwgJ2NoZXYtcidcbiAgfCAnY2hldi1sJ1xuICB8ICdjaGV2LWQnXG4gIHwgJ2NoZXYtdSdcbiAgfCAndHJpLXRsJ1xuICB8ICd0cmktdHInXG4gIHwgJ3RyaS1ibCdcbiAgfCAndHJpLWJyJ1xuICB8ICdzb2xpZCdcbiAgfCAnZGlhbW9uZCdcbiAgfCAnc21hbGwtcidcbiAgfCAnc21hbGwtbCdcbiAgfCAnYXJyb3ctcidcbiAgfCAnYXJyb3ctbCdcbiAgfCAnaG91c2UtZCdcbiAgfCAnaGFsZi1sJ1xuICB8ICdoYWxmLXQnXG4gIC8vIOKUgOKUgCBOdWV2b3MgbW90aWZzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB8ICdjaXJjbGUnXG4gIHwgJ2NpcmNsZS1zbSdcbiAgfCAnZG90J1xuICB8ICdjcm9zcydcbiAgfCAneC1tYXJrJ1xuICB8ICdzbGFzaC1yJ1xuICB8ICdzbGFzaC1sJ1xuICB8ICdjb3JuZXItdGwnXG4gIHwgJ2Nvcm5lci10cidcbiAgfCAnY29ybmVyLWJsJ1xuICB8ICdjb3JuZXItYnInXG4gIC8vIOKUgOKUgCBMb2dvIHN5bWJvbHMgKyBuw7ptZXJvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgfCAndW5kZXJzY29yZSdcbiAgfCAnbnVtLTAnXG4gIHwgJ251bS0xJ1xuICB8ICdudW0tMidcbiAgfCAnbnVtLTMnXG4gIHwgJ251bS00J1xuICB8ICdudW0tNSdcbiAgfCAnbnVtLTYnXG4gIHwgJ251bS03J1xuICB8ICdudW0tOCdcbiAgfCAnbnVtLTknO1xuXG5jb25zdCBDSEVWX1NUUk9LRSA9IDE4O1xuY29uc3QgQ0hFVl9TTUFMTF9TVFJPS0UgPSAxMjtcbmNvbnN0IGNoZXZTdHlsZSA9IChmOiBzdHJpbmcsIHc6IG51bWJlciA9IENIRVZfU1RST0tFKSA9PlxuICBgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIiR7d31cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBmaWxsPVwibm9uZVwiYDtcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fTU9USUZTOiBSZWNvcmQ8UGF0dGVybk1vdGlmS2V5LCAoZmc6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgLy8g4pSA4pSAIENoZXZyb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnY2hldi1yJzogZiA9PiBgPHBhdGggZD1cIk0yMiAxOCBMNzIgNTAgTDIyIDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1sJzogZiA9PiBgPHBhdGggZD1cIk03OCAxOCBMMjggNTAgTDc4IDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1kJzogZiA9PiBgPHBhdGggZD1cIk0xOCAyMiBMNTAgNzIgTDgyIDIyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi11JzogZiA9PiBgPHBhdGggZD1cIk0xOCA3OCBMNTAgMjggTDgyIDc4XCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnc21hbGwtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMzggMzIgTDYyIDUwIEwzOCA2OFwiICR7Y2hldlN0eWxlKGYsIENIRVZfU01BTExfU1RST0tFKX0vPmAsXG4gICdzbWFsbC1sJzogZiA9PiBgPHBhdGggZD1cIk02MiAzMiBMMzggNTAgTDYyIDY4XCIgJHtjaGV2U3R5bGUoZiwgQ0hFVl9TTUFMTF9TVFJPS0UpfS8+YCxcbiAgJ2Fycm93LXInOiBmID0+IGA8cGF0aCBkPVwiTTEwIDQyIEw2MCA0MiBMNjAgMjggTDkyIDUwIEw2MCA3MiBMNjAgNTggTDEwIDU4IFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnYXJyb3ctbCc6IGYgPT4gYDxwYXRoIGQ9XCJNOTAgNDIgTDQwIDQyIEw0MCAyOCBMOCA1MCBMNDAgNzIgTDQwIDU4IEw5MCA1OCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIFN0cm9rZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGNyb3NzOiBmID0+IGA8cGF0aCBkPVwiTTUwIDEyIEw1MCA4OCBNMTIgNTAgTDg4IDUwXCIgJHtjaGV2U3R5bGUoZiwgMTYpfS8+YCxcbiAgJ3gtbWFyayc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMTggTDgyIDgyIE04MiAxOCBMMTggODJcIiAke2NoZXZTdHlsZShmLCAxNil9Lz5gLFxuICAnc2xhc2gtcic6IGYgPT5cbiAgICBgPGxpbmUgeDE9XCIxOFwiIHkxPVwiODJcIiB4Mj1cIjgyXCIgeTI9XCIxOFwiIHN0cm9rZT1cIiR7Zn1cIiBzdHJva2Utd2lkdGg9XCIxNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+YCxcbiAgJ3NsYXNoLWwnOiBmID0+XG4gICAgYDxsaW5lIHgxPVwiMThcIiB5MT1cIjE4XCIgeDI9XCI4MlwiIHkyPVwiODJcIiBzdHJva2U9XCIke2Z9XCIgc3Ryb2tlLXdpZHRoPVwiMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPmAsXG4gIC8vIOKUgOKUgCBGaWxsZWQgc2hhcGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjaXJjbGU6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY2lyY2xlLXNtJzogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyNFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRvdDogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIxMlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRpYW1vbmQ6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjUwLDEyIDg4LDUwIDUwLDg4IDEyLDUwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgc29saWQ6ICgpID0+IGBgLFxuICAvLyDilIDilIAgVHJpYW5nbGVzICYgaGFsdmVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAndHJpLXRsJzogZiA9PiBgPHBvbHlnb24gcG9pbnRzPVwiMCwwIDEwMCwwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS10cic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAxMDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1ibCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1icic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjEwMCwwIDEwMCwxMDAgMCwxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi1sJzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi10JzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiNTBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaG91c2UtZCc6IGYgPT5cbiAgICBgPHBvbHlnb24gcG9pbnRzPVwiNTAsMjAgODgsNTAgMTIsNTBcIiBmaWxsPVwiJHtmfVwiLz48cmVjdCB4PVwiMjhcIiB5PVwiNTBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgQ29ybmVyIGFyY3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICdjb3JuZXItdGwnOiBmID0+IGA8cGF0aCBkPVwiTSAwIDAgTCAxMDAgMCBBIDEwMCAxMDAgMCAwIDEgMCAxMDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdjb3JuZXItdHInOiBmID0+IGA8cGF0aCBkPVwiTSAxMDAgMCBMIDAgMCBBIDEwMCAxMDAgMCAwIDAgMTAwIDEwMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Nvcm5lci1ibCc6IGYgPT4gYDxwYXRoIGQ9XCJNIDAgMTAwIEwgMTAwIDEwMCBBIDEwMCAxMDAgMCAwIDAgMCAwIFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY29ybmVyLWJyJzogZiA9PiBgPHBhdGggZD1cIk0gMTAwIDEwMCBMIDAgMTAwIEEgMTAwIDEwMCAwIDAgMSAxMDAgMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIExvZ28gc3ltYm9sIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB1bmRlcnNjb3JlOiBmID0+IGA8cmVjdCB4PVwiMTRcIiB5PVwiNzJcIiB3aWR0aD1cIjcyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjVcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgTsO6bWVyb3Mg4oCUIG1vbm9zcGFjZSBib2xkLCBiYXNlbGluZSBjZW50cmFkYSBlbiB0aWxlIDEwMHgxMDAg4pSA4pSAXG4gICdudW0tMCc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjA8L3RleHQ+YCxcbiAgJ251bS0xJzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+MTwvdGV4dD5gLFxuICAnbnVtLTInOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj4yPC90ZXh0PmAsXG4gICdudW0tMyc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjM8L3RleHQ+YCxcbiAgJ251bS00JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NDwvdGV4dD5gLFxuICAnbnVtLTUnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj41PC90ZXh0PmAsXG4gICdudW0tNic6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjY8L3RleHQ+YCxcbiAgJ251bS03JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NzwvdGV4dD5gLFxuICAnbnVtLTgnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj44PC90ZXh0PmAsXG4gICdudW0tOSc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjk8L3RleHQ+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBNT1RJRl9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IE9iamVjdC5rZXlzKFBBVFRFUk5fTU9USUZTKSBhcyBQYXR0ZXJuTW90aWZLZXlbXTtcblxuLy8g4pSA4pSAIEZhbWlsaWFzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogQ2hldnJvbiBmYW1pbHkg4oCUIG9yaWVudGFjaW9uZXMgKyB2YXJpYW50ZXMgcGVxdWXDsWFzLiAqL1xuZXhwb3J0IGNvbnN0IENIRVZfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjaGV2LXInLFxuICAnY2hldi1sJyxcbiAgJ2NoZXYtZCcsXG4gICdjaGV2LXUnLFxuICAnc21hbGwtcicsXG4gICdzbWFsbC1sJyxcbiAgJ2Fycm93LXInLFxuICAnYXJyb3ctbCcsXG5dO1xuXG4vKiogU3Ryb2tlIGZhbWlseSDigJQgbMOtbmVhcywgY3J1Y2VzIHkgZWwgZ3Vpw7NuIGJham8gZGVsIGxvZ28gYD5fYC4gKi9cbmV4cG9ydCBjb25zdCBTVFJPS0VfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjcm9zcycsXG4gICd4LW1hcmsnLFxuICAnc2xhc2gtcicsXG4gICdzbGFzaC1sJyxcbiAgJ3VuZGVyc2NvcmUnLFxuXTtcblxuLyoqIE51bWVyaWMgZmFtaWx5IOKAlCBkw61naXRvcyAwLTkgZW4gbW9ub3NwYWNlIGJvbGQuICovXG5leHBvcnQgY29uc3QgTlVNX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAnbnVtLTAnLFxuICAnbnVtLTEnLFxuICAnbnVtLTInLFxuICAnbnVtLTMnLFxuICAnbnVtLTQnLFxuICAnbnVtLTUnLFxuICAnbnVtLTYnLFxuICAnbnVtLTcnLFxuICAnbnVtLTgnLFxuICAnbnVtLTknLFxuXTtcblxuLyoqIENpcmNsZSAvIGRvdCBmYW1pbHkg4oCUIGZvcm1hcyBjdXJ2YXMgY2VudHJhZGFzLiAqL1xuZXhwb3J0IGNvbnN0IENJUkNMRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnY2lyY2xlJywgJ2NpcmNsZS1zbScsICdkb3QnXTtcblxuLyoqIERpYW1vbmQgc29sbyDigJQgZm9ybWEgZ2VvbcOpdHJpY2EgYW5ndWxhciBjZW50cmFkYS4gKi9cbmV4cG9ydCBjb25zdCBTSEFQRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnZGlhbW9uZCddO1xuXG4vKiogVHJpYW5nbGUgLyBoYWxmLWZpbGwgZmFtaWx5LiAqL1xuZXhwb3J0IGNvbnN0IFRSSV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFtcbiAgJ3RyaS10bCcsXG4gICd0cmktdHInLFxuICAndHJpLWJsJyxcbiAgJ3RyaS1icicsXG4gICdoYWxmLWwnLFxuICAnaGFsZi10JyxcbiAgJ2hvdXNlLWQnLFxuXTtcblxuLyoqIENvcm5lciBhcmMgZmFtaWx5IOKAlCBtZXpjbGEgc3VhdmUgY29uIHRyaWFuZ2xlcy4gKi9cbmV4cG9ydCBjb25zdCBDT1JORVJfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2Nvcm5lci10bCcsICdjb3JuZXItdHInLCAnY29ybmVyLWJsJywgJ2Nvcm5lci1iciddO1xuXG4vKiogTm8tZm9yZWdyb3VuZCB0aWxlcyDigJQgc29sbyByZWN0IGRlIGZvbmRvLiAqL1xuZXhwb3J0IGNvbnN0IFNPTElEX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydzb2xpZCddO1xuXG4vLyDilIDilIAgUGFsZXRhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEJ1aWx0LWluIHBhbGV0dGVzIOKAlCA4IGNvbG9yZXMgZGFyayDihpIgbGlnaHQuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuUGFsZXR0ZUtleSA9XG4gIHwgJ3B1cnBsZSdcbiAgfCAnaW5rJ1xuICB8ICdsYXZlbmRlcidcbiAgfCAnbWlkbmlnaHQnXG4gIHwgJ2VtYmVyJ1xuICB8ICdmb3Jlc3QnXG4gIHwgJ3Jvc2UnXG4gIHwgJ2dvbGQnXG4gIHwgJ21vbm8nO1xuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9QQUxFVFRFUzogUmVjb3JkPFBhdHRlcm5QYWxldHRlS2V5LCBzdHJpbmdbXT4gPSB7XG4gIHB1cnBsZTogWycjMGUwNDIwJywgJyMyYTExNTgnLCAnIzRhMWQ5NicsICcjNzAyNmRmJywgJyM5MTU2ZTgnLCAnI2I0OGVlYScsICcjZDljM2Y1JywgJyNlYmRjZmQnXSxcbiAgaW5rOiBbJyMwMDAwMDAnLCAnIzBhMGYxYycsICcjMWEyMjM1JywgJyMyZDNhNTUnLCAnIzRhNTg3OCcsICcjN2Q4YWE1JywgJyNiOGMxZDQnLCAnI2U0ZThmMCddLFxuICBsYXZlbmRlcjogW1xuICAgICcjMWEwZTNhJyxcbiAgICAnIzJlMTc1NScsXG4gICAgJyM1YTNhYTAnLFxuICAgICcjN2U1ZGM2JyxcbiAgICAnI2ExOGJkOScsXG4gICAgJyNjNGE4ZjAnLFxuICAgICcjZGNjZWY1JyxcbiAgICAnI2YwZTZmYycsXG4gIF0sXG4gIG1pZG5pZ2h0OiBbXG4gICAgJyMwMjA4MTQnLFxuICAgICcjMDcxNDI4JyxcbiAgICAnIzBkMjI0OCcsXG4gICAgJyMxYTNhNmUnLFxuICAgICcjMjY1NmE4JyxcbiAgICAnIzRkODJkNCcsXG4gICAgJyM4YWI0ZWInLFxuICAgICcjYzVkOWY1JyxcbiAgXSxcbiAgZW1iZXI6IFsnIzEyMDIwMCcsICcjMmUwODAwJywgJyM2YjFhMDAnLCAnI2I4MzIwMCcsICcjZTg1YTEwJywgJyNmNTkwNDInLCAnI2Y5YzQ4YScsICcjZmRlOGNjJ10sXG4gIGZvcmVzdDogWycjMDEwYTA0JywgJyMwNTIwMTAnLCAnIzBhNDAyMCcsICcjMGY2NjM1JywgJyMxOGEwNTgnLCAnIzNlY2U4MCcsICcjODZlOGI0JywgJyNjNGY1ZGMnXSxcbiAgcm9zZTogWycjMTIwMTBhJywgJyMyZTA0MjAnLCAnIzZiMGE0OCcsICcjYjAxODcwJywgJyNlMDQwYTAnLCAnI2YwODBjOCcsICcjZjhiY2U0JywgJyNmZGUwZjMnXSxcbiAgZ29sZDogWycjMTAwODAwJywgJyMyYTFhMDAnLCAnIzVjMzgwMCcsICcjOWU2MDAwJywgJyNkNDkyMGEnLCAnI2YwYmM0MCcsICcjZjhkYThjJywgJyNmZGYwY2MnXSxcbiAgbW9ubzogWycjMDgwODA4JywgJyMxYTFhMWEnLCAnIzMwMzAzMCcsICcjNDg0ODQ4JywgJyM3MDcwNzAnLCAnIzllOWU5ZScsICcjY2VjZWNlJywgJyNmMGYwZjAnXSxcbn07XG5cbi8vIOKUgOKUgCBQcmVzZXRzIGRlIGVzdGlsbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlbCBwYXRyw7NuLiBDb250cm9sYSBxdcOpIGZhbWlsaWFzIHByZWRvbWluYW4uXG4gKlxuICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2ggYD5fYCkuIERlZmF1bHQuXG4gKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgeSBjw61yY3Vsb3MuIE3DoXMgYXJxdWl0ZWN0w7NuaWNvLlxuICogLSBgbWluaW1hbGAgICDihpIgRXNwYWNpb3Mgc8OzbGlkb3MgY29uIHRyYXpvcyBzdXRpbGVzLiBMaW1waW8sIGNvcnBvcmF0aXZvLlxuICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gKiAtIGBjb2RlYCAgICAgIOKGkiBOw7ptZXJvcywgdW5kZXJzY29yZSB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuU3R5bGVLZXkgPSAnYnJhbmRlZCcgfCAnZ2VvbWV0cmljJyB8ICdtaW5pbWFsJyB8ICdkZW5zZScgfCAnY29kZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkRlbnNpdHlDb25maWcge1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIGNoZXZyb24gZmFtaWx5LiAqL1xuICBjaGV2OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgc3Ryb2tlIGZhbWlseSAoY3Jvc3MsIHgsIHNsYXNoLCB1bmRlcnNjb3JlKS4gKi9cbiAgc3Ryb2tlOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgY8OtcmN1bG9zLiAqL1xuICBjaXJjbGU6IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaWRhZCBkZSBkaWFtb25kLiAqL1xuICBzaGFwZTogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIHNvbGlkIChlc3BhY2lvIHZhY8OtbykuICovXG4gIHNvbGlkOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgbnVtZXJpYyBmYW1pbHkgKDAtOSkuIERlZmF1bHQ6IDAuICovXG4gIG51bT86IG51bWJlcjtcbiAgLyoqIFJlc3RvIOKGkiB0cmlhbmdsZXMgKyBjb3JuZXJzLiAqL1xufVxuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9TVFlMRV9DT05GSUdTOiBSZWNvcmQ8UGF0dGVyblN0eWxlS2V5LCBQYXR0ZXJuRGVuc2l0eUNvbmZpZz4gPSB7XG4gIGJyYW5kZWQ6IHsgY2hldjogMC41OCwgc3Ryb2tlOiAwLjEsIGNpcmNsZTogMC4wNCwgc2hhcGU6IDAuMDYsIHNvbGlkOiAwLjE4LCBudW06IDAuMCB9LFxuICBnZW9tZXRyaWM6IHsgY2hldjogMC4xNSwgc3Ryb2tlOiAwLjA1LCBjaXJjbGU6IDAuMTgsIHNoYXBlOiAwLjE0LCBzb2xpZDogMC4xLCBudW06IDAuMCB9LFxuICBtaW5pbWFsOiB7IGNoZXY6IDAuMjUsIHN0cm9rZTogMC4xLCBjaXJjbGU6IDAuMTIsIHNoYXBlOiAwLjA0LCBzb2xpZDogMC4zOCwgbnVtOiAwLjAgfSxcbiAgZGVuc2U6IHsgY2hldjogMC40LCBzdHJva2U6IDAuMTQsIGNpcmNsZTogMC4xMiwgc2hhcGU6IDAuMSwgc29saWQ6IDAuMDgsIG51bTogMC4wMiB9LFxuICBjb2RlOiB7IGNoZXY6IDAuMzUsIHN0cm9rZTogMC4xOCwgY2lyY2xlOiAwLjAyLCBzaGFwZTogMC4wMiwgc29saWQ6IDAuMTIsIG51bTogMC4yIH0sXG59O1xuXG4vLyDilIDilIAgUk5HIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIE11bGJlcnJ5MzIgc2VlZGVkIFJORyDigJQgZGV2dWVsdmUgZnVuY2nDs24gYCgpPT5bMCwxKWAuXG4gKiBEZXRlcm1pbmlzdGljOiBtaXNtbyBzZWVkIOKGkiBtaXNtYSBzZWN1ZW5jaWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWxiZXJyeTMyKHNlZWQ6IG51bWJlcik6ICgpID0+IG51bWJlciB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc2VlZCA9IChzZWVkICsgMHg2ZDJiNzlmNSkgPj4+IDA7XG4gICAgbGV0IHQgPSBzZWVkO1xuICAgIHQgPSBNYXRoLmltdWwodCBeICh0ID4+PiAxNSksIHQgfCAxKTtcbiAgICB0IF49IHQgKyBNYXRoLmltdWwodCBeICh0ID4+PiA3KSwgdCB8IDYxKTtcbiAgICByZXR1cm4gKCh0IF4gKHQgPj4+IDE0KSkgPj4+IDApIC8gNDI5NDk2NzI5NjtcbiAgfTtcbn1cblxuLy8g4pSA4pSAIEdlbmVyYWNpw7NuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5HZW5Db25maWcge1xuICBjb2xzOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgc2VlZDogbnVtYmVyO1xuICBwYWxldHRlOiBzdHJpbmdbXTtcbiAgY2hldnJvbkRlbnNpdHk/OiBudW1iZXI7XG4gIHN0eWxlPzogUGF0dGVyblN0eWxlS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5UaWxlIHtcbiAgbW90aWY6IFBhdHRlcm5Nb3RpZktleTtcbiAgYmc6IHN0cmluZztcbiAgZmc6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGlja0Zyb208VD4oYXJyOiBUW10sIHJuZzogKCkgPT4gbnVtYmVyKTogVCB7XG4gIHJldHVybiBhcnJbTWF0aC5mbG9vcihybmcoKSAqIGFyci5sZW5ndGgpXSE7XG59XG5cbi8qKlxuICogR2VuZXJhIFVOIHRpbGUgcmVzcGV0YW5kbyBkZW5zaWRhZGVzIGRlIGZhbWlsaWEgKyBjb250cmFzdGUgZGUgcGFsZXR0ZS5cbiAqIEFjZXB0YSB1biBjb25maWcgb3BjaW9uYWwgZGUgZGVuc2lkYWRlcyAoZGUgUGF0dGVyblN0eWxlS2V5IG8gY2hldnJvbkRlbnNpdHkgbGVnYWN5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tVGlsZShcbiAgcGFsZXR0ZTogc3RyaW5nW10sXG4gIGNoZXZyb25EZW5zaXR5ID0gMC41NSxcbiAgcm5nOiAoKSA9PiBudW1iZXIgPSBNYXRoLnJhbmRvbSxcbiAgZGVuc2l0eUNvbmZpZz86IFBhdHRlcm5EZW5zaXR5Q29uZmlnXG4pOiBQYXR0ZXJuVGlsZSB7XG4gIGNvbnN0IGNmZyA9IGRlbnNpdHlDb25maWcgPz8ge1xuICAgIGNoZXY6IGNoZXZyb25EZW5zaXR5LFxuICAgIHN0cm9rZTogMC4wOCxcbiAgICBjaXJjbGU6IDAuMDUsXG4gICAgc2hhcGU6IDAuMDcsXG4gICAgc29saWQ6IDAuMixcbiAgfTtcblxuICBjb25zdCByb2xsID0gcm5nKCk7XG4gIGxldCBrZXk6IFBhdHRlcm5Nb3RpZktleTtcblxuICBjb25zdCB0MSA9IGNmZy5jaGV2O1xuICBjb25zdCB0MiA9IHQxICsgY2ZnLnN0cm9rZTtcbiAgY29uc3QgdDMgPSB0MiArIGNmZy5jaXJjbGU7XG4gIGNvbnN0IHQ0ID0gdDMgKyBjZmcuc2hhcGU7XG4gIGNvbnN0IHQ1ID0gdDQgKyBjZmcuc29saWQ7XG4gIGNvbnN0IHQ2ID0gdDUgKyAoY2ZnLm51bSA/PyAwKTtcblxuICBpZiAocm9sbCA8IHQxKSBrZXkgPSBwaWNrRnJvbShDSEVWX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mikga2V5ID0gcGlja0Zyb20oU1RST0tFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mykga2V5ID0gcGlja0Zyb20oQ0lSQ0xFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0NCkga2V5ID0gcGlja0Zyb20oU0hBUEVfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQ1KSBrZXkgPSBwaWNrRnJvbShTT0xJRF9LRVlTLCBybmcpO1xuICBlbHNlIGlmIChyb2xsIDwgdDYpIGtleSA9IHBpY2tGcm9tKE5VTV9LRVlTLCBybmcpO1xuICBlbHNlIGtleSA9IHBpY2tGcm9tKFsuLi5UUklfS0VZUywgLi4uQ09STkVSX0tFWVNdLCBybmcpO1xuXG4gIGNvbnN0IGJnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IHRyaWVzID0gMDtcbiAgd2hpbGUgKE1hdGguYWJzKGZnSWR4IC0gYmdJZHgpIDwgMyAmJiB0cmllcyA8IDYpIHtcbiAgICBmZ0lkeCA9IE1hdGguZmxvb3Iocm5nKCkgKiBwYWxldHRlLmxlbmd0aCk7XG4gICAgdHJpZXMrKztcbiAgfVxuICByZXR1cm4geyBtb3RpZjoga2V5LCBiZzogcGFsZXR0ZVtiZ0lkeF0hLCBmZzogcGFsZXR0ZVtmZ0lkeF0hIH07XG59XG5cbi8qKiBHZW5lcmEgbWF0cml6IGNvbXBsZXRhIGRlIHRpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF0dGVyblRpbGVzKGNmZzogUGF0dGVybkdlbkNvbmZpZyk6IFBhdHRlcm5UaWxlW10ge1xuICBjb25zdCB7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUgfSA9IGNmZztcbiAgY29uc3QgY2hldnJvbkRlbnNpdHkgPSBjZmcuY2hldnJvbkRlbnNpdHkgPz8gMC41NTtcbiAgY29uc3QgZGVuc2l0eUNvbmZpZyA9IGNmZy5zdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tjZmcuc3R5bGVdIDogdW5kZWZpbmVkO1xuICBjb25zdCByID0gbXVsYmVycnkzMihzZWVkKTtcbiAgY29uc3QgdGlsZXM6IFBhdHRlcm5UaWxlW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzICogcm93czsgaSsrKSB7XG4gICAgdGlsZXMucHVzaChnZW5lcmF0ZVJhbmRvbVRpbGUocGFsZXR0ZSwgY2hldnJvbkRlbnNpdHksIHIsIGRlbnNpdHlDb25maWcpKTtcbiAgfVxuICByZXR1cm4gdGlsZXM7XG59XG5cbi8qKlxuICogUmVuZGVyaXphIGVsIGlubmVyIFNWRyAoc2luIGVsIGA8c3ZnPmAgcm9vdCkgcGFyYSB1bmEgbWF0cml6IGRlIHRpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUGF0dGVyblN2Z0lubmVyKFxuICB0aWxlczogUGF0dGVyblRpbGVbXSxcbiAgY29sczogbnVtYmVyLFxuICBiYXNlQ29sb3I6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgVyA9IGNvbHMgKiAxMDA7XG4gIGNvbnN0IHJvd3MgPSBNYXRoLmNlaWwodGlsZXMubGVuZ3RoIC8gY29scyk7XG4gIGNvbnN0IEggPSByb3dzICogMTAwO1xuICBsZXQgaW5uZXIgPSBgPHJlY3Qgd2lkdGg9XCIke1d9XCIgaGVpZ2h0PVwiJHtIfVwiIGZpbGw9XCIke2Jhc2VDb2xvcn1cIi8+YDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSBpICUgY29scztcbiAgICBjb25zdCByID0gTWF0aC5mbG9vcihpIC8gY29scyk7XG4gICAgY29uc3QgdCA9IHRpbGVzW2ldITtcbiAgICBjb25zdCBzaGFwZSA9IFBBVFRFUk5fTU9USUZTW3QubW90aWZdKHQuZmcpO1xuICAgIGlubmVyICs9IGA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoJHtjICogMTAwfSAke3IgKiAxMDB9KVwiPjxyZWN0IHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIgZmlsbD1cIiR7dC5iZ31cIi8+JHtzaGFwZX08L2c+YDtcbiAgfVxuICByZXR1cm4gaW5uZXI7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXksIFBhdHRlcm5TdHlsZUtleSB9IGZyb20gJy4vbW90aWZzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBgdmFsLXBhdHRlcm5gLlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoc2VlZCBmaWpvLCByZXByb2R1Y2libGUpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiAxMiwgcm93czogNCwgc2VlZDogNDIgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCB3aG9sZS1ncmlkIHJlc2h1ZmZsZSAoY2FkYSAxMHMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdtaWRuaWdodCcsIGNvbHM6IDE0LCByb3dzOiA1LCBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDEwMDAwIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgyIHRpbGVzIGNhZGEgODAwbXMg4oCUIHN1dGlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDgwMCwgdGlsZXNQZXJUaWNrOiAyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgUHJlc2V0IGdlb23DqXRyaWNvIGNvbiBwYWxldGEgZW1iZXI6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2VtYmVyJywgc3R5bGU6ICdnZW9tZXRyaWMnLCBjb2xzOiAxMCwgcm93czogNCB9XCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5NZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBQYWxldHRlIGJ1aWx0LWluIG8gYXJyYXkgY3VzdG9tIGRlIDggY29sb3JlcyBkYXJrIOKGkiBsaWdodC5cbiAgICogQnVpbHQtaW5zOiBgJ3B1cnBsZScgfCAnaW5rJyB8ICdsYXZlbmRlcicgfCAnbWlkbmlnaHQnIHwgJ2VtYmVyJyB8ICdmb3Jlc3QnIHwgJ3Jvc2UnIHwgJ2dvbGQnIHwgJ21vbm8nYC5cbiAgICogRGVmYXVsdDogYCdwdXJwbGUnYC5cbiAgICovXG4gIHBhbGV0dGU/OiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlIGZhbWlsaWFzIGRlIG1vdGlmcy5cbiAgICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2gpLiBEZWZhdWx0LlxuICAgKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgcmVkb25kZWFkYXMgeSBjw61yY3Vsb3MuXG4gICAqIC0gYG1pbmltYWxgICAg4oaSIE1heW9yw61hIHPDs2xpZG8gY29uIHRyYXpvcyBzdXRpbGVzLiBMb29rIGNvcnBvcmF0aXZvIGxpbXBpby5cbiAgICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gICAqXG4gICAqIEN1YW5kbyBzZSB1c2EgYHN0eWxlYCwgc29icmVlc2NyaWJlIGBjaGV2cm9uRGVuc2l0eWAuXG4gICAqL1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcblxuICAvKiogQ29sdW1uYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDEyLiAqL1xuICBjb2xzPzogbnVtYmVyO1xuXG4gIC8qKiBGaWxhcyBkZWwgZ3JpZC4gRGVmYXVsdDogNC4gKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VlZCBwYXJhIE11bGJlcnJ5MzIg4oCUIGRldGVybWluYSBlbCBwYXRyw7NuLiBTaSBubyBzZSBwYXNhLCBnZW5lcmEgdW5vIHJhbmRvbVxuICAgKiBhbCBtb3VudCB5IHF1ZWRhIGZpam8gKGEgbWVub3MgcXVlIGBhbmltYXRlZDogdHJ1ZWApLlxuICAgKi9cbiAgc2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVuc2lkYWQgZGUgY2hldnJvbnMgKDAuLjEpLiBJZ25vcmFkbyBzaSBzZSBwYXNhIGBzdHlsZWAuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gYW5pbWEgdGlsZXMgcGVyacOzZGljYW1lbnRlLlxuICAgKiBDb24gYHRpbGVzUGVyVGljazogMGAgKGRlZmF1bHQpOiByZXNlZWQgY29tcGxldG8gZGUgbGEgZ3JpZC5cbiAgICogQ29uIGB0aWxlc1BlclRpY2sgPiAwYDogcmVzaHVmZmxlIHBhcmNpYWwgKHN0YWdnZXJlZCDigJQgbcOhcyBzdXRpbCkuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAuXG4gICAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1zIGVudHJlIHVwZGF0ZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgODAwMGAuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuXG4gICAqIGAwYCDihpIgcmVzZWVkIGdyaWQgY29tcGxldGEuIGAxLU5gIOKGkiBzdGFnZ2VyZWQgc3V0aWwuXG4gICAqIERlZmF1bHQ6IGAwYC5cbiAgICovXG4gIHRpbGVzUGVyVGljaz86IG51bWJlcjtcblxuICAvKipcbiAgICogYHNsaWNlYCAoZGVmYXVsdCkg4oCUIGN1YnJlIHRvZG8gZWwgY29udGVuZWRvciBjb24gY3JvcCBzaSBuZWNlc2FyaW8uXG4gICAqIGBtZWV0YCDigJQgZml0IGNvbXBsZXRvIHNpbiBjcm9wLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXksIFBhdHRlcm5TdHlsZUtleSB9IGZyb20gJy4vbW90aWZzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBgdmFsLXBhdHRlcm5gLlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoc2VlZCBmaWpvLCByZXByb2R1Y2libGUpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiAxMiwgcm93czogNCwgc2VlZDogNDIgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCB3aG9sZS1ncmlkIHJlc2h1ZmZsZSAoY2FkYSAxMHMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdtaWRuaWdodCcsIGNvbHM6IDE0LCByb3dzOiA1LCBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDEwMDAwIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgyIHRpbGVzIGNhZGEgODAwbXMg4oCUIHN1dGlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDgwMCwgdGlsZXNQZXJUaWNrOiAyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgUHJlc2V0IGdlb23DqXRyaWNvIGNvbiBwYWxldGEgZW1iZXI6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2VtYmVyJywgc3R5bGU6ICdnZW9tZXRyaWMnLCBjb2xzOiAxMCwgcm93czogNCB9XCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5NZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBQYWxldHRlIGJ1aWx0LWluIG8gYXJyYXkgY3VzdG9tIGRlIDggY29sb3JlcyBkYXJrIOKGkiBsaWdodC5cbiAgICogQnVpbHQtaW5zOiBgJ3B1cnBsZScgfCAnaW5rJyB8ICdsYXZlbmRlcicgfCAnbWlkbmlnaHQnIHwgJ2VtYmVyJyB8ICdmb3Jlc3QnIHwgJ3Jvc2UnIHwgJ2dvbGQnIHwgJ21vbm8nYC5cbiAgICogRGVmYXVsdDogYCdwdXJwbGUnYC5cbiAgICovXG4gIHBhbGV0dGU/OiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlIGZhbWlsaWFzIGRlIG1vdGlmcy5cbiAgICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2gpLiBEZWZhdWx0LlxuICAgKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgcmVkb25kZWFkYXMgeSBjw61yY3Vsb3MuXG4gICAqIC0gYG1pbmltYWxgICAg4oaSIE1heW9yw61hIHPDs2xpZG8gY29uIHRyYXpvcyBzdXRpbGVzLiBMb29rIGNvcnBvcmF0aXZvIGxpbXBpby5cbiAgICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gICAqIC0gYGNvZGVgICAgICAg4oaSIE7Dum1lcm9zLCB1bmRlcnNjb3JlIGBfYCB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsL2PDs2RpZ28uXG4gICAqXG4gICAqIEN1YW5kbyBzZSB1c2EgYHN0eWxlYCwgc29icmVlc2NyaWJlIGBjaGV2cm9uRGVuc2l0eWAuXG4gICAqL1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcblxuICAvKiogQ29sdW1uYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDEyLiAqL1xuICBjb2xzPzogbnVtYmVyO1xuXG4gIC8qKiBGaWxhcyBkZWwgZ3JpZC4gRGVmYXVsdDogNC4gKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VlZCBwYXJhIE11bGJlcnJ5MzIg4oCUIGRldGVybWluYSBlbCBwYXRyw7NuLiBTaSBubyBzZSBwYXNhLCBnZW5lcmEgdW5vIHJhbmRvbVxuICAgKiBhbCBtb3VudCB5IHF1ZWRhIGZpam8gKGEgbWVub3MgcXVlIGBhbmltYXRlZDogdHJ1ZWApLlxuICAgKi9cbiAgc2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVuc2lkYWQgZGUgY2hldnJvbnMgKDAuLjEpLiBJZ25vcmFkbyBzaSBzZSBwYXNhIGBzdHlsZWAuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gYW5pbWEgdGlsZXMgcGVyacOzZGljYW1lbnRlLlxuICAgKiBDb24gYHRpbGVzUGVyVGljazogMGAgKGRlZmF1bHQpOiByZXNlZWQgY29tcGxldG8gZGUgbGEgZ3JpZC5cbiAgICogQ29uIGB0aWxlc1BlclRpY2sgPiAwYDogcmVzaHVmZmxlIHBhcmNpYWwgKHN0YWdnZXJlZCDigJQgbcOhcyBzdXRpbCkuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAuXG4gICAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1zIGVudHJlIHVwZGF0ZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgODAwMGAuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuXG4gICAqIGAwYCDihpIgcmVzZWVkIGdyaWQgY29tcGxldGEuIGAxLU5gIOKGkiBzdGFnZ2VyZWQgc3V0aWwuXG4gICAqIERlZmF1bHQ6IGAwYC5cbiAgICovXG4gIHRpbGVzUGVyVGljaz86IG51bWJlcjtcblxuICAvKipcbiAgICogYHNsaWNlYCAoZGVmYXVsdCkg4oCUIGN1YnJlIHRvZG8gZWwgY29udGVuZWRvciBjb24gY3JvcCBzaSBuZWNlc2FyaW8uXG4gICAqIGBtZWV0YCDigJQgZml0IGNvbXBsZXRvIHNpbiBjcm9wLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.878';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44NzgnO1xuIl19
5
+ export const VERSION = '2.0.879';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44NzknO1xuIl19
@@ -53,7 +53,7 @@ import 'prismjs/components/prism-json';
53
53
  * Current version of valtech-components.
54
54
  * This is automatically updated during the publish process.
55
55
  */
56
- const VERSION = '2.0.878';
56
+ const VERSION = '2.0.879';
57
57
 
58
58
  /**
59
59
  * Servicio para gestionar presets de componentes.
@@ -6075,6 +6075,19 @@ const PATTERN_MOTIFS = {
6075
6075
  'corner-tr': f => `<path d="M 100 0 L 0 0 A 100 100 0 0 0 100 100 Z" fill="${f}"/>`,
6076
6076
  'corner-bl': f => `<path d="M 0 100 L 100 100 A 100 100 0 0 0 0 0 Z" fill="${f}"/>`,
6077
6077
  'corner-br': f => `<path d="M 100 100 L 0 100 A 100 100 0 0 1 100 0 Z" fill="${f}"/>`,
6078
+ // ── Logo symbol ──────────────────────────────────────────────
6079
+ underscore: f => `<rect x="14" y="72" width="72" height="14" rx="5" fill="${f}"/>`,
6080
+ // ── Números — monospace bold, baseline centrada en tile 100x100 ──
6081
+ 'num-0': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">0</text>`,
6082
+ 'num-1': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">1</text>`,
6083
+ 'num-2': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">2</text>`,
6084
+ 'num-3': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">3</text>`,
6085
+ 'num-4': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">4</text>`,
6086
+ 'num-5': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">5</text>`,
6087
+ 'num-6': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">6</text>`,
6088
+ 'num-7': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">7</text>`,
6089
+ 'num-8': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">8</text>`,
6090
+ 'num-9': f => `<text x="50" y="76" font-size="68" font-weight="800" font-family="ui-monospace,'Courier New',monospace" text-anchor="middle" fill="${f}">9</text>`,
6078
6091
  };
6079
6092
  const MOTIF_KEYS = Object.keys(PATTERN_MOTIFS);
6080
6093
  // ── Familias ─────────────────────────────────────────────────────────────────
@@ -6089,8 +6102,27 @@ const CHEV_KEYS = [
6089
6102
  'arrow-r',
6090
6103
  'arrow-l',
6091
6104
  ];
6092
- /** Stroke family — líneas y cruces (complementan chevrons). */
6093
- const STROKE_KEYS = ['cross', 'x-mark', 'slash-r', 'slash-l'];
6105
+ /** Stroke family — líneas, cruces y el guión bajo del logo `>_`. */
6106
+ const STROKE_KEYS = [
6107
+ 'cross',
6108
+ 'x-mark',
6109
+ 'slash-r',
6110
+ 'slash-l',
6111
+ 'underscore',
6112
+ ];
6113
+ /** Numeric family — dígitos 0-9 en monospace bold. */
6114
+ const NUM_KEYS = [
6115
+ 'num-0',
6116
+ 'num-1',
6117
+ 'num-2',
6118
+ 'num-3',
6119
+ 'num-4',
6120
+ 'num-5',
6121
+ 'num-6',
6122
+ 'num-7',
6123
+ 'num-8',
6124
+ 'num-9',
6125
+ ];
6094
6126
  /** Circle / dot family — formas curvas centradas. */
6095
6127
  const CIRCLE_KEYS = ['circle', 'circle-sm', 'dot'];
6096
6128
  /** Diamond solo — forma geométrica angular centrada. */
@@ -6139,10 +6171,11 @@ const PATTERN_PALETTES = {
6139
6171
  mono: ['#080808', '#1a1a1a', '#303030', '#484848', '#707070', '#9e9e9e', '#cecece', '#f0f0f0'],
6140
6172
  };
6141
6173
  const PATTERN_STYLE_CONFIGS = {
6142
- branded: { chev: 0.6, stroke: 0.08, circle: 0.04, shape: 0.06, solid: 0.18 },
6143
- geometric: { chev: 0.15, stroke: 0.05, circle: 0.18, shape: 0.14, solid: 0.1 },
6144
- minimal: { chev: 0.25, stroke: 0.1, circle: 0.12, shape: 0.04, solid: 0.38 },
6145
- dense: { chev: 0.42, stroke: 0.14, circle: 0.12, shape: 0.1, solid: 0.08 },
6174
+ branded: { chev: 0.58, stroke: 0.1, circle: 0.04, shape: 0.06, solid: 0.18, num: 0.0 },
6175
+ geometric: { chev: 0.15, stroke: 0.05, circle: 0.18, shape: 0.14, solid: 0.1, num: 0.0 },
6176
+ minimal: { chev: 0.25, stroke: 0.1, circle: 0.12, shape: 0.04, solid: 0.38, num: 0.0 },
6177
+ dense: { chev: 0.4, stroke: 0.14, circle: 0.12, shape: 0.1, solid: 0.08, num: 0.02 },
6178
+ code: { chev: 0.35, stroke: 0.18, circle: 0.02, shape: 0.02, solid: 0.12, num: 0.2 },
6146
6179
  };
6147
6180
  // ── RNG ──────────────────────────────────────────────────────────────────────
6148
6181
  /**
@@ -6180,6 +6213,7 @@ function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random, d
6180
6213
  const t3 = t2 + cfg.circle;
6181
6214
  const t4 = t3 + cfg.shape;
6182
6215
  const t5 = t4 + cfg.solid;
6216
+ const t6 = t5 + (cfg.num ?? 0);
6183
6217
  if (roll < t1)
6184
6218
  key = pickFrom(CHEV_KEYS, rng);
6185
6219
  else if (roll < t2)
@@ -6190,6 +6224,8 @@ function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random, d
6190
6224
  key = pickFrom(SHAPE_KEYS, rng);
6191
6225
  else if (roll < t5)
6192
6226
  key = pickFrom(SOLID_KEYS, rng);
6227
+ else if (roll < t6)
6228
+ key = pickFrom(NUM_KEYS, rng);
6193
6229
  else
6194
6230
  key = pickFrom([...TRI_KEYS, ...CORNER_KEYS], rng);
6195
6231
  const bgIdx = Math.floor(rng() * palette.length);
@@ -48799,5 +48835,5 @@ function buildFooterLinks(links, t, resolver) {
48799
48835
  * Generated bundle index. Do not edit.
48800
48836
  */
48801
48837
 
48802
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CookieBannerComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SHAPE_KEYS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STROKE_KEYS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
48838
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CookieBannerComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SHAPE_KEYS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STROKE_KEYS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
48803
48839
  //# sourceMappingURL=valtech-components.mjs.map