@ngxsmk/theme 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { deriveScale, rotateHue, shiftLightness } from './color';
2
2
  import { resolveTheme } from './define-config';
3
- import { CONTROL_HEIGHT } from './tokens';
3
+ import { CONTROL_HEIGHT, CONTROL_HEIGHTS, ICON_SIZE, OPACITY, TRACKING } from './tokens';
4
4
  function scaleVars(prefix, scale) {
5
5
  const vars = {};
6
6
  for (const [step, value] of Object.entries(scale)) {
@@ -21,6 +21,16 @@ function staticVars(theme) {
21
21
  // Motion Tokens
22
22
  '--ngxsmk-motion-duration': 'var(--ngxsmk-duration-normal)',
23
23
  '--ngxsmk-motion-ease': 'var(--ngxsmk-ease-in-out)',
24
+ // Interactive-state motion: shared lift/press transforms. Neutralized to
25
+ // `none` under prefers-reduced-motion (see buildThemeCss).
26
+ '--ngxsmk-hover-lift': 'translateY(-1px)',
27
+ '--ngxsmk-press-scale': 'scale(0.98)',
28
+ // Focus ring: THE focus indicator for every component. Aliases the
29
+ // mode-aware --ngxsmk-shadow-focus; the error variant derives from the
30
+ // semantic error role so invalid controls ring red in both modes.
31
+ '--ngxsmk-focus-ring': 'var(--ngxsmk-shadow-focus)',
32
+ '--ngxsmk-focus-ring-error': '0 0 0 2px color-mix(in srgb, var(--ngxsmk-color-error) 15%, transparent), ' +
33
+ '0 0 0 4px color-mix(in srgb, var(--ngxsmk-color-error) 45%, transparent)',
24
34
  // Component-specific Tokens (Buttons)
25
35
  '--ngxsmk-button-bg': 'var(--ngxsmk-color-primary)',
26
36
  '--ngxsmk-button-color': 'var(--ngxsmk-color-on-primary)',
@@ -51,6 +61,18 @@ function staticVars(theme) {
51
61
  '--ngxsmk-switch-thumb-bg': 'var(--ngxsmk-color-surface)',
52
62
  '--ngxsmk-switch-checked-bg': 'var(--ngxsmk-color-primary)',
53
63
  };
64
+ for (const [key, value] of Object.entries(CONTROL_HEIGHTS)) {
65
+ vars[`--ngxsmk-control-height-${key}`] = value;
66
+ }
67
+ for (const [key, value] of Object.entries(OPACITY)) {
68
+ vars[`--ngxsmk-opacity-${key}`] = value;
69
+ }
70
+ for (const [key, value] of Object.entries(ICON_SIZE)) {
71
+ vars[`--ngxsmk-icon-${key}`] = value;
72
+ }
73
+ for (const [key, value] of Object.entries(TRACKING)) {
74
+ vars[`--ngxsmk-tracking-${key}`] = value;
75
+ }
54
76
  for (const [key, value] of Object.entries(theme.spacing)) {
55
77
  vars[`--ngxsmk-space-${key}`] = value;
56
78
  }
@@ -232,7 +254,21 @@ export function buildThemeCss(config) {
232
254
  darkBlock = block(`:root.${cn}, :root.${cn} body, .${cn}`, dark);
233
255
  }
234
256
  }
235
- const reducedMotion = `@media (prefers-reduced-motion: reduce) {\n :root {\n --ngxsmk-motion-duration: 0ms;\n }\n}`;
257
+ // Zero every duration token (components animate with --ngxsmk-duration-*
258
+ // directly) and neutralize the shared transforms so ALL token-driven motion
259
+ // stops. `.ngxsmk-reduce-motion` offers the same as an app-level opt-in.
260
+ const reducedVars = {
261
+ '--ngxsmk-motion-duration': '0ms',
262
+ '--ngxsmk-hover-lift': 'none',
263
+ '--ngxsmk-press-scale': 'none',
264
+ };
265
+ for (const key of Object.keys(theme.duration)) {
266
+ reducedVars[`--ngxsmk-duration-${key}`] = '0ms';
267
+ }
268
+ const reducedMotion = [
269
+ `@media (prefers-reduced-motion: reduce) {\n${block(':root', reducedVars, ' ')}\n}`,
270
+ block(':root.ngxsmk-reduce-motion, .ngxsmk-reduce-motion', reducedVars),
271
+ ].join('\n\n');
236
272
  return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
237
273
  }
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTFDLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELFNBQVMsVUFBVSxDQUFDLEtBQW9CO0lBQ3RDLE1BQU0sSUFBSSxHQUFTO1FBQ2pCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUMzQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3RELHlCQUF5QixFQUFFLGNBQWM7UUFFekMsZ0JBQWdCO1FBQ2hCLDBCQUEwQixFQUFFLCtCQUErQjtRQUMzRCxzQkFBc0IsRUFBRSwyQkFBMkI7UUFFbkQsc0NBQXNDO1FBQ3RDLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7UUFFekMsb0NBQW9DO1FBQ3BDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxzQkFBc0IsRUFBRSx5QkFBeUI7UUFDakQsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELDRCQUE0QixFQUFFLDZCQUE2QjtRQUUzRCx3Q0FBd0M7UUFDeEMsdUJBQXVCLEVBQUUsNkJBQTZCO1FBQ3RELDJCQUEyQixFQUFFLHlCQUF5QjtRQUN0RCxpQ0FBaUMsRUFBRSw2QkFBNkI7UUFFaEUsdUNBQXVDO1FBQ3ZDLDBCQUEwQixFQUFFLFFBQVE7UUFDcEMsc0JBQXNCLEVBQUUscUNBQXFDO1FBQzdELHlCQUF5QixFQUFFLDZCQUE2QjtRQUN4RCwwQkFBMEIsRUFBRSwyQkFBMkI7UUFFdkQscUNBQXFDO1FBQ3JDLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsd0JBQXdCLEVBQUUsU0FBUztRQUNuQyx3QkFBd0IsRUFBRSwyQkFBMkI7UUFDckQsb0JBQW9CLEVBQUUsb0NBQW9DO1FBQzFELDRCQUE0QixFQUFFLFVBQVU7UUFDeEMsMEJBQTBCLEVBQUUsNkJBQTZCO1FBQ3pELDRCQUE0QixFQUFFLDZCQUE2QjtLQUM1RCxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJ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LElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsa0dBQWtHLENBQUM7SUFDekgsT0FBTyw0REFBNEQsSUFBSSxPQUFPLFNBQVMsT0FBTyxhQUFhLElBQUksQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVyaXZlU2NhbGUsIHJvdGF0ZUh1ZSwgc2hpZnRMaWdodG5lc3MgfSBmcm9tICcuL2NvbG9yJztcbmltcG9ydCB7IHJlc29sdmVUaGVtZSB9IGZyb20gJy4vZGVmaW5lLWNvbmZpZyc7XG5pbXBvcnQgeyBDb2xvclNjYWxlLCBSZXNvbHZlZFRoZW1lLCBUaGVtZUNvbmZpZywgVHlwZVJvbGVTaXplLCBUeXBlU3R5bGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENPTlRST0xfSEVJR0hUIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNwYWNpbmcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstc3BhY2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5yYWRpdXMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstcmFkaXVzLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2hhZG93KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNoYWRvdy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmR1cmF0aW9uKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuZWFzaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWVhc2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS56SW5kZXgpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstei0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2l6ZXMgPSB7IGxhcmdlOiAnbGcnLCBtZWRpdW06ICdtZCcsIHNtYWxsOiAnc20nIH0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgW3JvbGUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhlbWUudHlwb2dyYXBoeSkpIHtcbiAgICBmb3IgKGNvbnN0IFtzaXplLCBzdWZmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHNpemVzKSkge1xuICAgICAgY29uc3Qgc3R5bGU6IFR5cGVTdHlsZSA9IHN0eWxlc1tzaXplIGFzIFR5cGVSb2xlU2l6ZV07XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXNpemVgXSA9IHN0eWxlLnNpemU7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LWxpbmVgXSA9IHN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXdlaWdodGBdID0gc3R5bGUud2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJhLXNtYWxsIGJvZHkgdGV4dCBmb3IgZGVuc2UgbWV0YWRhdGEgcm93czsgYmVsb3cgdGhlIHNtYWxsZXN0XG4gIC8vIFR5cGVSb2xlU2l6ZSBzbyBpdCBpcyBlbWl0dGVkIG91dHNpZGUgdGhlIHJvbGUgbG9vcC5cbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXNpemUnXSA9ICcwLjY4NzVyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtbGluZSddID0gJzFyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtd2VpZ2h0J10gPSAnNDAwJztcblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBsaWdodCBtb2RlLiAqL1xuZnVuY3Rpb24gbGlnaHRWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdsaWdodCcsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5QmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtOCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtMTQpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcblxuICAgIC8vIERlZmF1bHQgbGlnaHQgdGhlbWU6IGNvb2wtZ3JleSBib2R5LCB3aGl0ZSBjYXJkcyBmbG9hdGluZyBvbiB0b3AsIGhhaXJsaW5lIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDUgNTQgODkgLyAwLjA1KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtYWN0aXZlJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDUgNTQgODkgLyAwLjA2KScsXG5cbiAgICAvLyBFbGV2YXRpb24gbGFkZGVyXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0yJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzMwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDEgMTggNDAgLyAwLjQpJyxcbiAgICAnLS1uZ3hzbWstc2hhZG93LWZvY3VzJzogYDAgMCAwIDJweCAke3RoZW1lLmJyYW5kWzEwMF19LCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRCYXNlfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9ICcjRkZGRkZGJztcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgaGV4XSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zZW1hbnRpYykpIHtcbiAgICBjb25zdCBzY2FsZSA9IGRlcml2ZVNjYWxlKGhleCk7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfWBdID0gaGV4O1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9ICcjRkZGRkZGJztcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMTAwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbODAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5saWdodCB9O1xufVxuXG4vKiogU2VtYW50aWMgcm9sZSB0b2tlbnMgZm9yIGRhcmsgbW9kZS4gKi9cbmZ1bmN0aW9uIGRhcmtWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdkYXJrJyxcblxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5JzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHRoZW1lLmJyYW5kWzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktYWN0aXZlJzogdGhlbWUuYnJhbmRbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzEwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5WzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogdGhlbWUuc2Vjb25kYXJ5WzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiB0aGVtZS5zZWNvbmRhcnlbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGRhcmsgdGhlbWU6IG5lYXItbmV1dHJhbCBjaGFyY29hbCBib2R5LCBzbGlnaHRseSBsaWdodGVyIGNhcmQsXG4gICAgLy8gbGlnaHRlciBzdGlsbCBmb3IgcG9wb3ZlcnM7IGhhaXJsaW5lIGxpZ2h0LW9uLWRhcmsgYm9yZGVycy5cbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2dyb3VuZCc6ICcjMTExMTEyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjMUYxRjIyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiAnI0FBQUZCNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1jb250YWluZXInOiAnIzI4MjkyQycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogJyM0OTRENTMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiB0aGVtZS5uZXV0cmFsWzgwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0zJzogdGhlbWUubmV1dHJhbFs2MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNSc6IHRoZW1lLm5ldXRyYWxbNDAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1yaW5nJzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDE3IDE3IDE4IC8gMC42KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gMjUlLCB0cmFuc3BhcmVudCksIDAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZFs0MDBdfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNDAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9IHRlcnRpYXJ5Wzk1MF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IHNjYWxlWzQwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMzAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5kYXJrIH07XG59XG5cbmZ1bmN0aW9uIGJsb2NrKHNlbGVjdG9yOiBzdHJpbmcsIHZhcnM6IFZhcnMsIGluZGVudCA9ICcnKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBPYmplY3QuZW50cmllcyh2YXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IGAke2luZGVudH0gICR7bmFtZX06ICR7dmFsdWV9O2ApO1xuICByZXR1cm4gYCR7aW5kZW50fSR7c2VsZWN0b3J9IHtcXG4ke2xpbmVzLmpvaW4oJ1xcbicpfVxcbiR7aW5kZW50fX1gO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRoZW1lIGNvbmZpZyBpbnRvIGEgQ1NTIHN0eWxlc2hlZXQgb2YgYC0tbmd4c21rLSpgIGN1c3RvbVxuICogcHJvcGVydGllcy4gRW1pdHMgc3RhdGljIHRva2VucyBwbHVzIGxpZ2h0LW1vZGUgcm9sZXMgb24gYDpyb290YCwgYW5kXG4gKiBkYXJrLW1vZGUgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmVkIGRhcmstbW9kZSBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVGhlbWVDc3MoY29uZmlnOiBUaGVtZUNvbmZpZyB8IFJlc29sdmVkVGhlbWUpOiBzdHJpbmcge1xuICBjb25zdCB0aGVtZSA9XG4gICAgJ2JyYW5kJyBpbiBjb25maWcgJiYgJ3NwYWNpbmcnIGluIChjb25maWcgYXMgb2JqZWN0KVxuICAgICAgPyAoY29uZmlnIGFzIFJlc29sdmVkVGhlbWUpXG4gICAgICA6IHJlc29sdmVUaGVtZShjb25maWcgYXMgVGhlbWVDb25maWcpO1xuXG4gIGNvbnN0IHJvb3QgPSBibG9jaygnOnJvb3QnLCB7IC4uLnN0YXRpY1ZhcnModGhlbWUpLCAuLi5saWdodFZhcnModGhlbWUpIH0pO1xuICBjb25zdCBkYXJrID0gZGFya1ZhcnModGhlbWUpO1xuXG4gIGxldCBkYXJrQmxvY2s6IHN0cmluZztcbiAgc3dpdGNoICh0aGVtZS5kYXJrTW9kZS5zdHJhdGVneSkge1xuICAgIGNhc2UgJ21lZGlhJzpcbiAgICAgIGRhcmtCbG9jayA9IGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N5c3RlbSc6IHtcbiAgICAgIC8vIGBsaWdodC1kYXJrKClgIHN1cHBvcnQgaXMgcGVyLXByb3BlcnR5OyB0aGUgY2xhc3MgYmxvY2sgc3RpbGwgc2VydmVzXG4gICAgICAvLyBhcyB0aGUgb3ZlcnJpZGUgaG9vaywgc28gYHN5c3RlbWAgYmVoYXZlcyBhcyBtZWRpYSArIGNsYXNzLlxuICAgICAgY29uc3QgY24gPSB0aGVtZS5kYXJrTW9kZS5jbGFzc05hbWU7XG4gICAgICBkYXJrQmxvY2sgPSBbXG4gICAgICAgIGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YCxcbiAgICAgICAgYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKSxcbiAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gYDpyb290LjxjbGFzcz5gIChzcGVjaWZpY2l0eSAwLDIsMCkgcGx1cyBhIGBib2R5YCB2YXJpYW50IGRlZmVuZCB0aGVcbiAgICAgIC8vIGRhcmsgdG9rZW5zIGFnYWluc3QgdGhpcmQtcGFydHkgc3R5bGVzaGVldHMgdGhhdCByZWRlZmluZSBgLS1uZ3hzbWstKmBcbiAgICAgIC8vIG9uIGEgcGxhaW4gYDpyb290YCAoMCwxLDApIOKAlCB0aG9zZSB3b3VsZCBvdGhlcndpc2Ugd2luIGJ5IHNvdXJjZSBvcmRlclxuICAgICAgLy8gd2hlbiBpbmplY3RlZCBpbnRvIDxoZWFkPiBhZnRlciB0aGlzIHNoZWV0LiBUaGUgYmFyZSBgLjxjbGFzcz5gIGtlZXBzXG4gICAgICAvLyBzY29wZWQgKG5vbi1yb290KSBkYXJrIHJlZ2lvbnMgd29ya2luZy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWR1Y2VkTW90aW9uID0gYEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICA6cm9vdCB7XFxuICAgIC0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbjogMG1zO1xcbiAgfVxcbn1gO1xuICByZXR1cm4gYC8qIEdlbmVyYXRlZCBieSBAbmd4c21rL3RoZW1lIOKAlCBkbyBub3QgZWRpdCBieSBoYW5kLiAqL1xcbiR7cm9vdH1cXG5cXG4ke2RhcmtCbG9ja31cXG5cXG4ke3JlZHVjZWRNb3Rpb259XFxuYDtcbn1cbiJdfQ==
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl6RixTQUFTLFNBQVMsQ0FBQyxNQUFjLEVBQUUsS0FBaUI7SUFDbEQsTUFBTSxJQUFJLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGtCQUFrQixNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxTQUFTLFVBQVUsQ0FBQyxLQUFvQjtJQUN0QyxNQUFNLElBQUksR0FBUztRQUNqQixHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNsQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQzNDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxNQUFN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QUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxLQUFLLE1B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QUFXLEdBQVM7UUFDeEIsMEJBQTBCLEVBQUUsS0FBSztRQUNqQyxxQkFBcUIsRUFBRSxNQUFNO1FBQzdCLHNCQUFzQixFQUFFLE1BQU07S0FDL0IsQ0FBQztJQUNGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxXQUFXLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRztRQUNwQiw4Q0FBOEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDcEYsS0FBSyxDQUFDLG1EQUFtRCxFQUFFLFdBQVcsQ0FBQztLQUN4RSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNmLE9BQU8sNERBQTRELElBQUksT0FBTyxTQUFTLE9BQU8sYUFBYSxJQUFJLENBQUM7QUFDbEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlcml2ZVNjYWxlLCByb3RhdGVIdWUsIHNoaWZ0TGlnaHRuZXNzIH0gZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyByZXNvbHZlVGhlbWUgfSBmcm9tICcuL2RlZmluZS1jb25maWcnO1xuaW1wb3J0IHsgQ29sb3JTY2FsZSwgUmVzb2x2ZWRUaGVtZSwgVGhlbWVDb25maWcsIFR5cGVSb2xlU2l6ZSwgVHlwZVN0eWxlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDT05UUk9MX0hFSUdIVCwgQ09OVFJPTF9IRUlHSFRTLCBJQ09OX1NJWkUsIE9QQUNJVFksIFRSQUNLSU5HIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gSW50ZXJhY3RpdmUtc3RhdGUgbW90aW9uOiBzaGFyZWQgbGlmdC9wcmVzcyB0cmFuc2Zvcm1zLiBOZXV0cmFsaXplZCB0b1xuICAgIC8vIGBub25lYCB1bmRlciBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIChzZWUgYnVpbGRUaGVtZUNzcykuXG4gICAgJy0tbmd4c21rLWhvdmVyLWxpZnQnOiAndHJhbnNsYXRlWSgtMXB4KScsXG4gICAgJy0tbmd4c21rLXByZXNzLXNjYWxlJzogJ3NjYWxlKDAuOTgpJyxcblxuICAgIC8vIEZvY3VzIHJpbmc6IFRIRSBmb2N1cyBpbmRpY2F0b3IgZm9yIGV2ZXJ5IGNvbXBvbmVudC4gQWxpYXNlcyB0aGVcbiAgICAvLyBtb2RlLWF3YXJlIC0tbmd4c21rLXNoYWRvdy1mb2N1czsgdGhlIGVycm9yIHZhcmlhbnQgZGVyaXZlcyBmcm9tIHRoZVxuICAgIC8vIHNlbWFudGljIGVycm9yIHJvbGUgc28gaW52YWxpZCBjb250cm9scyByaW5nIHJlZCBpbiBib3RoIG1vZGVzLlxuICAgICctLW5neHNtay1mb2N1cy1yaW5nJzogJ3ZhcigtLW5neHNtay1zaGFkb3ctZm9jdXMpJyxcbiAgICAnLS1uZ3hzbWstZm9jdXMtcmluZy1lcnJvcic6XG4gICAgICAnMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZ3hzbWstY29sb3ItZXJyb3IpIDE1JSwgdHJhbnNwYXJlbnQpLCAnICtcbiAgICAgICcwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLW5neHNtay1jb2xvci1lcnJvcikgNDUlLCB0cmFuc3BhcmVudCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKENPTlRST0xfSEVJR0hUUykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1jb250cm9sLWhlaWdodC0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKE9QQUNJVFkpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstb3BhY2l0eS0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKElDT05fU0laRSkpIHtcbiAgICB2YXJzW2AtLW5neHNtay1pY29uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoVFJBQ0tJTkcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstdHJhY2tpbmctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zcGFjaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNwYWNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUucmFkaXVzKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXJhZGl1cy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNoYWRvdykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1zaGFkb3ctJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5kdXJhdGlvbikpIHtcbiAgICB2YXJzW2AtLW5neHNtay1kdXJhdGlvbi0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmVhc2luZykpIHtcbiAgICB2YXJzW2AtLW5neHNtay1lYXNlLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuekluZGV4KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXotJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHNpemVzID0geyBsYXJnZTogJ2xnJywgbWVkaXVtOiAnbWQnLCBzbWFsbDogJ3NtJyB9IGFzIGNvbnN0O1xuICBmb3IgKGNvbnN0IFtyb2xlLCBzdHlsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnR5cG9ncmFwaHkpKSB7XG4gICAgZm9yIChjb25zdCBbc2l6ZSwgc3VmZml4XSBvZiBPYmplY3QuZW50cmllcyhzaXplcykpIHtcbiAgICAgIGNvbnN0IHN0eWxlOiBUeXBlU3R5bGUgPSBzdHlsZXNbc2l6ZSBhcyBUeXBlUm9sZVNpemVdO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1zaXplYF0gPSBzdHlsZS5zaXplO1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS1saW5lYF0gPSBzdHlsZS5saW5lSGVpZ2h0O1xuICAgICAgdmFyc1tgLS1uZ3hzbWstdGV4dC0ke3JvbGV9LSR7c3VmZml4fS13ZWlnaHRgXSA9IHN0eWxlLndlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBFeHRyYS1zbWFsbCBib2R5IHRleHQgZm9yIGRlbnNlIG1ldGFkYXRhIHJvd3M7IGJlbG93IHRoZSBzbWFsbGVzdFxuICAvLyBUeXBlUm9sZVNpemUgc28gaXQgaXMgZW1pdHRlZCBvdXRzaWRlIHRoZSByb2xlIGxvb3AuXG4gIHZhcnNbJy0tbmd4c21rLXRleHQtYm9keS14cy1zaXplJ10gPSAnMC42ODc1cmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLWxpbmUnXSA9ICcxcmVtJztcbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXdlaWdodCddID0gJzQwMCc7XG5cbiAgcmV0dXJuIHZhcnM7XG59XG5cbi8qKiBTZW1hbnRpYyByb2xlIHRva2VucyBmb3IgbGlnaHQgbW9kZS4gKi9cbmZ1bmN0aW9uIGxpZ2h0VmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgICdjb2xvci1zY2hlbWUnOiAnbGlnaHQnLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC04KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5icmFuZEJhc2UsIC0xNCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeSc6IHRoZW1lLnNlY29uZGFyeUJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktYWN0aXZlJzogc2hpZnRMaWdodG5lc3ModGhlbWUuc2Vjb25kYXJ5QmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzkwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGxpZ2h0IHRoZW1lOiBjb29sLWdyZXkgYm9keSwgd2hpdGUgY2FyZHMgZmxvYXRpbmcgb24gdG9wLCBoYWlybGluZSBib3JkZXJzLlxuICAgICctLW5neHNtay1jb2xvci1iYWNrZ3JvdW5kJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnIzBBMTMxNycsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYig1IDU0IDg5IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcic6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZSc6ICdyZ2IoNSA1NCA4OSAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYig1IDU0IDg5IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNTBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTMnOiB0aGVtZS5uZXV0cmFsWzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNCc6IHRoZW1lLm5ldXRyYWxbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS01JzogdGhlbWUubmV1dHJhbFszMDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXJpbmcnOiB0aGVtZS5icmFuZEJhc2UsXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxIDE4IDQwIC8gMC40KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggJHt0aGVtZS5icmFuZFsxMDBdfSwgMCAwIDAgNHB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kQmFzZX0gNDUlLCB0cmFuc3BhcmVudClgLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzUwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSAnI0ZGRkZGRic7XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVs5MDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IGhleDtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9YF0gPSAnI0ZGRkZGRic7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzEwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzgwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMubGlnaHQgfTtcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBkYXJrIG1vZGUuICovXG5mdW5jdGlvbiBkYXJrVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgICdjb2xvci1zY2hlbWUnOiAnZGFyaycsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiB0aGVtZS5icmFuZFszMDBdLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHRoZW1lLmJyYW5kWzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbOTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeSc6IHRoZW1lLnNlY29uZGFyeVs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnknOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1ob3Zlcic6IHRoZW1lLnNlY29uZGFyeVszMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktYWN0aXZlJzogdGhlbWUuc2Vjb25kYXJ5WzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVsxMDBdLFxuXG4gICAgLy8gRGVmYXVsdCBkYXJrIHRoZW1lOiBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgYm9keSwgc2xpZ2h0bHkgbGlnaHRlciBjYXJkLFxuICAgIC8vIGxpZ2h0ZXIgc3RpbGwgZm9yIHBvcG92ZXJzOyBoYWlybGluZSBsaWdodC1vbi1kYXJrIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiAnIzExMTExMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnIzFGMUYyMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6ICcjMjgyOTJDJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogJyNBQUFGQjUnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMDUpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1hY3RpdmUnOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6ICcjNDk0RDUzJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMDYpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogdGhlbWUubmV1dHJhbFs4MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzcwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbNjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzQwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxNyAxNyAxOCAvIDAuNiknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kWzQwMF19IDI1JSwgdHJhbnNwYXJlbnQpLCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gNDUlLCB0cmFuc3BhcmVudClgLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzQwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs5NTBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBzY2FsZVs0MDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzMwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMuZGFyayB9O1xufVxuXG5mdW5jdGlvbiBibG9jayhzZWxlY3Rvcjogc3RyaW5nLCB2YXJzOiBWYXJzLCBpbmRlbnQgPSAnJyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gT2JqZWN0LmVudHJpZXModmFycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBgJHtpbmRlbnR9ICAke25hbWV9OiAke3ZhbHVlfTtgKTtcbiAgcmV0dXJuIGAke2luZGVudH0ke3NlbGVjdG9yfSB7XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1cXG4ke2luZGVudH19YDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSB0aGVtZSBjb25maWcgaW50byBhIENTUyBzdHlsZXNoZWV0IG9mIGAtLW5neHNtay0qYCBjdXN0b21cbiAqIHByb3BlcnRpZXMuIEVtaXRzIHN0YXRpYyB0b2tlbnMgcGx1cyBsaWdodC1tb2RlIHJvbGVzIG9uIGA6cm9vdGAsIGFuZFxuICogZGFyay1tb2RlIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJlZCBkYXJrLW1vZGUgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRoZW1lQ3NzKGNvbmZpZzogVGhlbWVDb25maWcgfCBSZXNvbHZlZFRoZW1lKTogc3RyaW5nIHtcbiAgY29uc3QgdGhlbWUgPVxuICAgICdicmFuZCcgaW4gY29uZmlnICYmICdzcGFjaW5nJyBpbiAoY29uZmlnIGFzIG9iamVjdClcbiAgICAgID8gKGNvbmZpZyBhcyBSZXNvbHZlZFRoZW1lKVxuICAgICAgOiByZXNvbHZlVGhlbWUoY29uZmlnIGFzIFRoZW1lQ29uZmlnKTtcblxuICBjb25zdCByb290ID0gYmxvY2soJzpyb290JywgeyAuLi5zdGF0aWNWYXJzKHRoZW1lKSwgLi4ubGlnaHRWYXJzKHRoZW1lKSB9KTtcbiAgY29uc3QgZGFyayA9IGRhcmtWYXJzKHRoZW1lKTtcblxuICBsZXQgZGFya0Jsb2NrOiBzdHJpbmc7XG4gIHN3aXRjaCAodGhlbWUuZGFya01vZGUuc3RyYXRlZ3kpIHtcbiAgICBjYXNlICdtZWRpYSc6XG4gICAgICBkYXJrQmxvY2sgPSBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzeXN0ZW0nOiB7XG4gICAgICAvLyBgbGlnaHQtZGFyaygpYCBzdXBwb3J0IGlzIHBlci1wcm9wZXJ0eTsgdGhlIGNsYXNzIGJsb2NrIHN0aWxsIHNlcnZlc1xuICAgICAgLy8gYXMgdGhlIG92ZXJyaWRlIGhvb2ssIHNvIGBzeXN0ZW1gIGJlaGF2ZXMgYXMgbWVkaWEgKyBjbGFzcy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gW1xuICAgICAgICBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWAsXG4gICAgICAgIGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayksXG4gICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIGA6cm9vdC48Y2xhc3M+YCAoc3BlY2lmaWNpdHkgMCwyLDApIHBsdXMgYSBgYm9keWAgdmFyaWFudCBkZWZlbmQgdGhlXG4gICAgICAvLyBkYXJrIHRva2VucyBhZ2FpbnN0IHRoaXJkLXBhcnR5IHN0eWxlc2hlZXRzIHRoYXQgcmVkZWZpbmUgYC0tbmd4c21rLSpgXG4gICAgICAvLyBvbiBhIHBsYWluIGA6cm9vdGAgKDAsMSwwKSDigJQgdGhvc2Ugd291bGQgb3RoZXJ3aXNlIHdpbiBieSBzb3VyY2Ugb3JkZXJcbiAgICAgIC8vIHdoZW4gaW5qZWN0ZWQgaW50byA8aGVhZD4gYWZ0ZXIgdGhpcyBzaGVldC4gVGhlIGJhcmUgYC48Y2xhc3M+YCBrZWVwc1xuICAgICAgLy8gc2NvcGVkIChub24tcm9vdCkgZGFyayByZWdpb25zIHdvcmtpbmcuXG4gICAgICBjb25zdCBjbiA9IHRoZW1lLmRhcmtNb2RlLmNsYXNzTmFtZTtcbiAgICAgIGRhcmtCbG9jayA9IGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayk7XG4gICAgfVxuICB9XG5cbiAgLy8gWmVybyBldmVyeSBkdXJhdGlvbiB0b2tlbiAoY29tcG9uZW50cyBhbmltYXRlIHdpdGggLS1uZ3hzbWstZHVyYXRpb24tKlxuICAvLyBkaXJlY3RseSkgYW5kIG5ldXRyYWxpemUgdGhlIHNoYXJlZCB0cmFuc2Zvcm1zIHNvIEFMTCB0b2tlbi1kcml2ZW4gbW90aW9uXG4gIC8vIHN0b3BzLiBgLm5neHNtay1yZWR1Y2UtbW90aW9uYCBvZmZlcnMgdGhlIHNhbWUgYXMgYW4gYXBwLWxldmVsIG9wdC1pbi5cbiAgY29uc3QgcmVkdWNlZFZhcnM6IFZhcnMgPSB7XG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICcwbXMnLFxuICAgICctLW5neHNtay1ob3Zlci1saWZ0JzogJ25vbmUnLFxuICAgICctLW5neHNtay1wcmVzcy1zY2FsZSc6ICdub25lJyxcbiAgfTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhlbWUuZHVyYXRpb24pKSB7XG4gICAgcmVkdWNlZFZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gJzBtcyc7XG4gIH1cbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IFtcbiAgICBgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4ke2Jsb2NrKCc6cm9vdCcsIHJlZHVjZWRWYXJzLCAnICAnKX1cXG59YCxcbiAgICBibG9jaygnOnJvb3Qubmd4c21rLXJlZHVjZS1tb3Rpb24sIC5uZ3hzbWstcmVkdWNlLW1vdGlvbicsIHJlZHVjZWRWYXJzKSxcbiAgXS5qb2luKCdcXG5cXG4nKTtcbiAgcmV0dXJuIGAvKiBHZW5lcmF0ZWQgYnkgQG5neHNtay90aGVtZSDigJQgZG8gbm90IGVkaXQgYnkgaGFuZC4gKi9cXG4ke3Jvb3R9XFxuXFxuJHtkYXJrQmxvY2t9XFxuXFxuJHtyZWR1Y2VkTW90aW9ufVxcbmA7XG59XG4iXX0=
@@ -59,6 +59,36 @@ export const DEFAULT_TYPOGRAPHY = {
59
59
  * family use this so they read as one consistent size.
60
60
  */
61
61
  export const CONTROL_HEIGHT = '2.5rem';
62
+ /**
63
+ * Control-height ladder. `md` mirrors CONTROL_HEIGHT (the family default);
64
+ * `sm`/`lg` give dense and comfortable variants the same rhythm.
65
+ */
66
+ export const CONTROL_HEIGHTS = {
67
+ sm: '2rem',
68
+ md: CONTROL_HEIGHT,
69
+ lg: '3rem',
70
+ };
71
+ /**
72
+ * Opacity roles. Components must use these instead of ad-hoc literals so
73
+ * disabled/muted content reads identically across the whole kit.
74
+ */
75
+ export const OPACITY = {
76
+ disabled: '0.5',
77
+ muted: '0.7',
78
+ faint: '0.4',
79
+ };
80
+ /** Icon sizing ladder — aligns glyph boxes with the text roles they sit next to. */
81
+ export const ICON_SIZE = {
82
+ sm: '1rem',
83
+ md: '1.25rem',
84
+ lg: '1.5rem',
85
+ };
86
+ /** Letter-spacing roles: tight for display/headline, wide for overline/labels. */
87
+ export const TRACKING = {
88
+ tight: '-0.02em',
89
+ normal: '0',
90
+ wide: '0.08em',
91
+ };
62
92
  export const SPACING = {
63
93
  '0': '0px',
64
94
  '0-5': '0.125rem',
@@ -93,16 +123,18 @@ export const RADIUS = {
93
123
  full: '9999px',
94
124
  };
95
125
  /**
96
- * Soft, diffuse, layered shadows (two stacked blurs, low alpha). Overlay
97
- * CSS resolves these to slightly stronger values in dark mode via the
98
- * elevation tokens on each surface.
126
+ * Soft, diffuse, layered shadows: a 1px hairline "contact" line keeps edges
127
+ * crisp on white, a tight key shadow gives definition, and a wide low-alpha
128
+ * ambient blur supplies the soft depth. Overlay CSS resolves these to
129
+ * slightly stronger values in dark mode via the elevation tokens on each
130
+ * surface.
99
131
  */
100
132
  export const SHADOW = {
101
- sm: '0 1px 1px rgb(0 0 0 / 0.08), 0 2px 8px rgb(0 0 0 / 0.08)',
102
- md: '0 1px 2px rgb(0 0 0 / 0.1), 0 2px 12px rgb(0 0 0 / 0.1)',
103
- lg: '0 2px 2px rgb(0 0 0 / 0.1), 0 8px 24px rgb(0 0 0 / 0.12)',
104
- xl: '0 4px 6px rgb(0 0 0 / 0.1), 0 12px 32px rgb(0 0 0 / 0.16)',
105
- '2xl': '0 8px 12px rgb(0 0 0 / 0.14), 0 24px 48px rgb(0 0 0 / 0.22)',
133
+ sm: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 1px rgb(0 0 0 / 0.07), 0 2px 8px rgb(0 0 0 / 0.07)',
134
+ md: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 2px rgb(0 0 0 / 0.09), 0 4px 16px rgb(0 0 0 / 0.09)',
135
+ lg: '0 0 0 1px rgb(0 0 0 / 0.04), 0 2px 4px rgb(0 0 0 / 0.09), 0 10px 28px rgb(0 0 0 / 0.11)',
136
+ xl: '0 0 0 1px rgb(0 0 0 / 0.04), 0 4px 8px rgb(0 0 0 / 0.1), 0 16px 40px rgb(0 0 0 / 0.15)',
137
+ '2xl': '0 0 0 1px rgb(0 0 0 / 0.05), 0 8px 16px rgb(0 0 0 / 0.13), 0 28px 56px rgb(0 0 0 / 0.2)',
106
138
  };
107
139
  /**
108
140
  * Stacking ladder for overlay components. Anchored popups sit lowest;
@@ -133,4 +165,4 @@ export const EASING = {
133
165
  'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
134
166
  emphasized: 'cubic-bezier(0.2, 0, 0, 1)',
135
167
  };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBZTtJQUN6QyxFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM5QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksRUFBRSwyREFBMkQ7SUFDakUsSUFBSSxFQUFFLDJEQUEyRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQy9ELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2pFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDNUQsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM3RDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzlEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDOUQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsS0FBSyxFQUFFLFVBQVU7SUFDakIsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxNQUFNO0lBQ1gsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCO0lBQzVDLElBQUksRUFBRSxLQUFLO0lBQ1gsRUFBRSxFQUFFLFNBQVMsRUFBRSwwQ0FBMEM7SUFDekQsRUFBRSxFQUFFLFFBQVEsRUFBRSxrREFBa0Q7SUFDaEUsRUFBRSxFQUFFLFNBQVMsRUFBRSxxQ0FBcUM7SUFDcEQsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztJQUN6QixLQUFLLEVBQUUsU0FBUyxFQUFFLDhCQUE4QjtJQUNoRCxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUEyQjtJQUM1QyxFQUFFLEVBQUUsMERBQTBEO0lBQzlELEVBQUUsRUFBRSx5REFBeUQ7SUFDN0QsRUFBRSxFQUFFLDBEQUEwRDtJQUM5RCxFQUFFLEVBQUUsMkRBQTJEO0lBQy9ELEtBQUssRUFBRSw2REFBNkQ7Q0FDckUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTJCO0lBQzdDLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE1BQU07SUFDZCxPQUFPLEVBQUUsTUFBTTtJQUNmLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTJCO0lBQzlDLE9BQU8sRUFBRSxLQUFLO0lBQ2QsSUFBSSxFQUFFLE9BQU87SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsVUFBVSxFQUFFLDRCQUE0QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSwgRm9udEZhbWlsaWVzLCBTZW1hbnRpY0NvbG9ycywgVHlwb2dyYXBoeVNjYWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29vbCBibHVlLWdyZXkgbmV1dHJhbCBzY2FsZS4gTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGVcbiAqIGRhcmtlc3Qgc3RlcHMgZmxhdHRlbiB0b3dhcmQgYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlXG4gKiBzdXJmYWNlcyByZWFkIGxpa2UgYSBzb2Z0LCBkZXNhdHVyYXRlZCBuYXZ5IHJhdGhlciB0aGFuIGEgc2F0dXJhdGVkIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzI1NjNFQicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbmV4cG9ydCBjb25zdCBTUEFDSU5HOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnMCc6ICcwcHgnLFxuICAnMC01JzogJzAuMTI1cmVtJyxcbiAgJzEnOiAnMC4yNXJlbScsXG4gICcxLTUnOiAnMC4zNzVyZW0nLFxuICAnMic6ICcwLjVyZW0nLFxuICAnMyc6ICcwLjc1cmVtJyxcbiAgJzQnOiAnMXJlbScsXG4gICc1JzogJzEuMjVyZW0nLFxuICAnNic6ICcxLjVyZW0nLFxuICAnOCc6ICcycmVtJyxcbiAgJzEwJzogJzIuNXJlbScsXG4gICcxMic6ICczcmVtJyxcbiAgJzE2JzogJzRyZW0nLFxuICAnMjAnOiAnNXJlbScsXG4gICcyNCc6ICc2cmVtJyxcbiAgJzMyJzogJzhyZW0nLFxufTtcblxuLyoqXG4gKiBSYWRpdXMgc2NhbGU6IGlubmVyIDRweCwgZWxlbWVudCA4cHggKGJ1dHRvbnMvaW5wdXRzLCB0aGUgYmFzZSksXG4gKiBjb250YWluZXIgMTJweCAoY2FyZHMpLCB0aGVuIHByb2dyZXNzaXZlbHkgbGFyZ2VyIHRocm91Z2ggMjhweCBcInBhZ2VcIlxuICogcm91bmRpbmcuIERlbGliZXJhdGVseSBnZW5lcm91cyBzbyBzdXJmYWNlcyByZWFkIHNvZnQgYW5kIHJvdW5kZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSQURJVVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIG5vbmU6ICcwcHgnLFxuICBzbTogJzAuMjVyZW0nLCAvLyA0cHggIOKAlCBpbm5lciAobmVzdGVkIGNoaXBzLCBjaGVja2JveGVzKVxuICBtZDogJzAuNXJlbScsIC8vIDhweCAg4oCUIGVsZW1lbnQgKGJ1dHRvbnMsIGlucHV0cykg4oCUIGRlZmF1bHQgYmFzZVxuICBsZzogJzAuNzVyZW0nLCAvLyAxMnB4IOKAlCBjb250YWluZXIgKGNhcmRzLCBwb3BvdmVycylcbiAgeGw6ICcxcmVtJywgLy8gMTZweFxuICAnMnhsJzogJzEuMjVyZW0nLCAvLyAyMHB4XG4gICczeGwnOiAnMS43NXJlbScsIC8vIDI4cHgg4oCUIHBhZ2UgLyBoZXJvIHN1cmZhY2VzXG4gIGZ1bGw6ICc5OTk5cHgnLFxufTtcblxuLyoqXG4gKiBTb2Z0LCBkaWZmdXNlLCBsYXllcmVkIHNoYWRvd3MgKHR3byBzdGFja2VkIGJsdXJzLCBsb3cgYWxwaGEpLiBPdmVybGF5XG4gKiBDU1MgcmVzb2x2ZXMgdGhlc2UgdG8gc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluIGRhcmsgbW9kZSB2aWEgdGhlXG4gKiBlbGV2YXRpb24gdG9rZW5zIG9uIGVhY2ggc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wOCksIDAgMnB4IDhweCByZ2IoMCAwIDAgLyAwLjA4KScsXG4gIG1kOiAnMCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDEycHggcmdiKDAgMCAwIC8gMC4xKScsXG4gIGxnOiAnMCAycHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgOHB4IDI0cHggcmdiKDAgMCAwIC8gMC4xMiknLFxuICB4bDogJzAgNHB4IDZweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDEycHggMzJweCByZ2IoMCAwIDAgLyAwLjE2KScsXG4gICcyeGwnOiAnMCA4cHggMTJweCByZ2IoMCAwIDAgLyAwLjE0KSwgMCAyNHB4IDQ4cHggcmdiKDAgMCAwIC8gMC4yMiknLFxufTtcblxuLyoqXG4gKiBTdGFja2luZyBsYWRkZXIgZm9yIG92ZXJsYXkgY29tcG9uZW50cy4gQW5jaG9yZWQgcG9wdXBzIHNpdCBsb3dlc3Q7XG4gKiB0b29sdGlwcyBhbHdheXMgd2luLiBDb21wb25lbnRzIG11c3QgdXNlIHRoZXNlIGluc3RlYWQgb2YgYWQtaG9jIHZhbHVlc1xuICogc28gb3ZlcmxheXMgbmV2ZXIgZmlnaHQgZWFjaCBvdGhlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFpfSU5ERVg6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRyb3Bkb3duOiAnMTAwMCcsXG4gIHN0aWNreTogJzExMDAnLFxuICBiYW5uZXI6ICcxMjAwJyxcbiAgb3ZlcmxheTogJzEzMDAnLFxuICBtb2RhbDogJzE0MDAnLFxuICBwb3BvdmVyOiAnMTUwMCcsXG4gIHRvYXN0OiAnMTYwMCcsXG4gIHRvb2x0aXA6ICcxNzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgaW5zdGFudDogJzBtcycsXG4gIGZhc3Q6ICcxMDBtcycsXG4gIG5vcm1hbDogJzIwMG1zJyxcbiAgc2xvdzogJzMwMG1zJyxcbiAgc2xvd2VyOiAnNTAwbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEVBU0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbGluZWFyOiAnbGluZWFyJyxcbiAgaW46ICdjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKScsXG4gIG91dDogJ2N1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgJ2luLW91dCc6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgZW1waGFzaXplZDogJ2N1YmljLWJlemllcigwLjIsIDAsIDAsIDEpJyxcbn07XG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBZTtJQUN6QyxFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM5QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksRUFBRSwyREFBMkQ7SUFDakUsSUFBSSxFQUFFLDJEQUEyRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQy9ELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2pFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDNUQsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM3RDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzlEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFL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SSxFQUFFLE9BQU87SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsVUFBVSxFQUFFLDRCQUE0QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSwgRm9udEZhbWlsaWVzLCBTZW1hbnRpY0NvbG9ycywgVHlwb2dyYXBoeVNjYWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29vbCBibHVlLWdyZXkgbmV1dHJhbCBzY2FsZS4gTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGVcbiAqIGRhcmtlc3Qgc3RlcHMgZmxhdHRlbiB0b3dhcmQgYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlXG4gKiBzdXJmYWNlcyByZWFkIGxpa2UgYSBzb2Z0LCBkZXNhdHVyYXRlZCBuYXZ5IHJhdGhlciB0aGFuIGEgc2F0dXJhdGVkIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzI1NjNFQicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbi8qKlxuICogQ29udHJvbC1oZWlnaHQgbGFkZGVyLiBgbWRgIG1pcnJvcnMgQ09OVFJPTF9IRUlHSFQgKHRoZSBmYW1pbHkgZGVmYXVsdCk7XG4gKiBgc21gL2BsZ2AgZ2l2ZSBkZW5zZSBhbmQgY29tZm9ydGFibGUgdmFyaWFudHMgdGhlIHNhbWUgcmh5dGhtLlxuICovXG5leHBvcnQgY29uc3QgQ09OVFJPTF9IRUlHSFRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBzbTogJzJyZW0nLFxuICBtZDogQ09OVFJPTF9IRUlHSFQsXG4gIGxnOiAnM3JlbScsXG59O1xuXG4vKipcbiAqIE9wYWNpdHkgcm9sZXMuIENvbXBvbmVudHMgbXVzdCB1c2UgdGhlc2UgaW5zdGVhZCBvZiBhZC1ob2MgbGl0ZXJhbHMgc29cbiAqIGRpc2FibGVkL211dGVkIGNvbnRlbnQgcmVhZHMgaWRlbnRpY2FsbHkgYWNyb3NzIHRoZSB3aG9sZSBraXQuXG4gKi9cbmV4cG9ydCBjb25zdCBPUEFDSVRZOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkaXNhYmxlZDogJzAuNScsXG4gIG11dGVkOiAnMC43JyxcbiAgZmFpbnQ6ICcwLjQnLFxufTtcblxuLyoqIEljb24gc2l6aW5nIGxhZGRlciDigJQgYWxpZ25zIGdseXBoIGJveGVzIHdpdGggdGhlIHRleHQgcm9sZXMgdGhleSBzaXQgbmV4dCB0by4gKi9cbmV4cG9ydCBjb25zdCBJQ09OX1NJWkU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHNtOiAnMXJlbScsXG4gIG1kOiAnMS4yNXJlbScsXG4gIGxnOiAnMS41cmVtJyxcbn07XG5cbi8qKiBMZXR0ZXItc3BhY2luZyByb2xlczogdGlnaHQgZm9yIGRpc3BsYXkvaGVhZGxpbmUsIHdpZGUgZm9yIG92ZXJsaW5lL2xhYmVscy4gKi9cbmV4cG9ydCBjb25zdCBUUkFDS0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgdGlnaHQ6ICctMC4wMmVtJyxcbiAgbm9ybWFsOiAnMCcsXG4gIHdpZGU6ICcwLjA4ZW0nLFxufTtcblxuZXhwb3J0IGNvbnN0IFNQQUNJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICcwJzogJzBweCcsXG4gICcwLTUnOiAnMC4xMjVyZW0nLFxuICAnMSc6ICcwLjI1cmVtJyxcbiAgJzEtNSc6ICcwLjM3NXJlbScsXG4gICcyJzogJzAuNXJlbScsXG4gICczJzogJzAuNzVyZW0nLFxuICAnNCc6ICcxcmVtJyxcbiAgJzUnOiAnMS4yNXJlbScsXG4gICc2JzogJzEuNXJlbScsXG4gICc4JzogJzJyZW0nLFxuICAnMTAnOiAnMi41cmVtJyxcbiAgJzEyJzogJzNyZW0nLFxuICAnMTYnOiAnNHJlbScsXG4gICcyMCc6ICc1cmVtJyxcbiAgJzI0JzogJzZyZW0nLFxuICAnMzInOiAnOHJlbScsXG59O1xuXG4vKipcbiAqIFJhZGl1cyBzY2FsZTogaW5uZXIgNHB4LCBlbGVtZW50IDhweCAoYnV0dG9ucy9pbnB1dHMsIHRoZSBiYXNlKSxcbiAqIGNvbnRhaW5lciAxMnB4IChjYXJkcyksIHRoZW4gcHJvZ3Jlc3NpdmVseSBsYXJnZXIgdGhyb3VnaCAyOHB4IFwicGFnZVwiXG4gKiByb3VuZGluZy4gRGVsaWJlcmF0ZWx5IGdlbmVyb3VzIHNvIHN1cmZhY2VzIHJlYWQgc29mdCBhbmQgcm91bmRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJBRElVUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbm9uZTogJzBweCcsXG4gIHNtOiAnMC4yNXJlbScsIC8vIDRweCAg4oCUIGlubmVyIChuZXN0ZWQgY2hpcHMsIGNoZWNrYm94ZXMpXG4gIG1kOiAnMC41cmVtJywgLy8gOHB4ICDigJQgZWxlbWVudCAoYnV0dG9ucywgaW5wdXRzKSDigJQgZGVmYXVsdCBiYXNlXG4gIGxnOiAnMC43NXJlbScsIC8vIDEycHgg4oCUIGNvbnRhaW5lciAoY2FyZHMsIHBvcG92ZXJzKVxuICB4bDogJzFyZW0nLCAvLyAxNnB4XG4gICcyeGwnOiAnMS4yNXJlbScsIC8vIDIwcHhcbiAgJzN4bCc6ICcxLjc1cmVtJywgLy8gMjhweCDigJQgcGFnZSAvIGhlcm8gc3VyZmFjZXNcbiAgZnVsbDogJzk5OTlweCcsXG59O1xuXG4vKipcbiAqIFNvZnQsIGRpZmZ1c2UsIGxheWVyZWQgc2hhZG93czogYSAxcHggaGFpcmxpbmUgXCJjb250YWN0XCIgbGluZSBrZWVwcyBlZGdlc1xuICogY3Jpc3Agb24gd2hpdGUsIGEgdGlnaHQga2V5IHNoYWRvdyBnaXZlcyBkZWZpbml0aW9uLCBhbmQgYSB3aWRlIGxvdy1hbHBoYVxuICogYW1iaWVudCBibHVyIHN1cHBsaWVzIHRoZSBzb2Z0IGRlcHRoLiBPdmVybGF5IENTUyByZXNvbHZlcyB0aGVzZSB0b1xuICogc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluIGRhcmsgbW9kZSB2aWEgdGhlIGVsZXZhdGlvbiB0b2tlbnMgb24gZWFjaFxuICogc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wMyksIDAgMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA3KSwgMCAycHggOHB4IHJnYigwIDAgMCAvIDAuMDcpJyxcbiAgbWQ6ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wMyksIDAgMXB4IDJweCByZ2IoMCAwIDAgLyAwLjA5KSwgMCA0cHggMTZweCByZ2IoMCAwIDAgLyAwLjA5KScsXG4gIGxnOiAnMCAwIDAgMXB4IHJnYigwIDAgMCAvIDAuMDQpLCAwIDJweCA0cHggcmdiKDAgMCAwIC8gMC4wOSksIDAgMTBweCAyOHB4IHJnYigwIDAgMCAvIDAuMTEpJyxcbiAgeGw6ICcwIDAgMCAxcHggcmdiKDAgMCAwIC8gMC4wNCksIDAgNHB4IDhweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDE2cHggNDBweCByZ2IoMCAwIDAgLyAwLjE1KScsXG4gICcyeGwnOiAnMCAwIDAgMXB4IHJnYigwIDAgMCAvIDAuMDUpLCAwIDhweCAxNnB4IHJnYigwIDAgMCAvIDAuMTMpLCAwIDI4cHggNTZweCByZ2IoMCAwIDAgLyAwLjIpJyxcbn07XG5cbi8qKlxuICogU3RhY2tpbmcgbGFkZGVyIGZvciBvdmVybGF5IGNvbXBvbmVudHMuIEFuY2hvcmVkIHBvcHVwcyBzaXQgbG93ZXN0O1xuICogdG9vbHRpcHMgYWx3YXlzIHdpbi4gQ29tcG9uZW50cyBtdXN0IHVzZSB0aGVzZSBpbnN0ZWFkIG9mIGFkLWhvYyB2YWx1ZXNcbiAqIHNvIG92ZXJsYXlzIG5ldmVyIGZpZ2h0IGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBaX0lOREVYOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBkcm9wZG93bjogJzEwMDAnLFxuICBzdGlja3k6ICcxMTAwJyxcbiAgYmFubmVyOiAnMTIwMCcsXG4gIG92ZXJsYXk6ICcxMzAwJyxcbiAgbW9kYWw6ICcxNDAwJyxcbiAgcG9wb3ZlcjogJzE1MDAnLFxuICB0b2FzdDogJzE2MDAnLFxuICB0b29sdGlwOiAnMTcwMCcsXG59O1xuXG5leHBvcnQgY29uc3QgRFVSQVRJT046IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGluc3RhbnQ6ICcwbXMnLFxuICBmYXN0OiAnMTAwbXMnLFxuICBub3JtYWw6ICcyMDBtcycsXG4gIHNsb3c6ICczMDBtcycsXG4gIHNsb3dlcjogJzUwMG1zJyxcbn07XG5cbmV4cG9ydCBjb25zdCBFQVNJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGxpbmVhcjogJ2xpbmVhcicsXG4gIGluOiAnY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSknLFxuICBvdXQ6ICdjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICdpbi1vdXQnOiAnY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsXG4gIGVtcGhhc2l6ZWQ6ICdjdWJpYy1iZXppZXIoMC4yLCAwLCAwLCAxKScsXG59O1xuIl19
@@ -186,6 +186,36 @@ const DEFAULT_TYPOGRAPHY = {
186
186
  * family use this so they read as one consistent size.
187
187
  */
188
188
  const CONTROL_HEIGHT = '2.5rem';
189
+ /**
190
+ * Control-height ladder. `md` mirrors CONTROL_HEIGHT (the family default);
191
+ * `sm`/`lg` give dense and comfortable variants the same rhythm.
192
+ */
193
+ const CONTROL_HEIGHTS = {
194
+ sm: '2rem',
195
+ md: CONTROL_HEIGHT,
196
+ lg: '3rem',
197
+ };
198
+ /**
199
+ * Opacity roles. Components must use these instead of ad-hoc literals so
200
+ * disabled/muted content reads identically across the whole kit.
201
+ */
202
+ const OPACITY = {
203
+ disabled: '0.5',
204
+ muted: '0.7',
205
+ faint: '0.4',
206
+ };
207
+ /** Icon sizing ladder — aligns glyph boxes with the text roles they sit next to. */
208
+ const ICON_SIZE = {
209
+ sm: '1rem',
210
+ md: '1.25rem',
211
+ lg: '1.5rem',
212
+ };
213
+ /** Letter-spacing roles: tight for display/headline, wide for overline/labels. */
214
+ const TRACKING = {
215
+ tight: '-0.02em',
216
+ normal: '0',
217
+ wide: '0.08em',
218
+ };
189
219
  const SPACING = {
190
220
  '0': '0px',
191
221
  '0-5': '0.125rem',
@@ -220,16 +250,18 @@ const RADIUS = {
220
250
  full: '9999px',
221
251
  };
222
252
  /**
223
- * Soft, diffuse, layered shadows (two stacked blurs, low alpha). Overlay
224
- * CSS resolves these to slightly stronger values in dark mode via the
225
- * elevation tokens on each surface.
253
+ * Soft, diffuse, layered shadows: a 1px hairline "contact" line keeps edges
254
+ * crisp on white, a tight key shadow gives definition, and a wide low-alpha
255
+ * ambient blur supplies the soft depth. Overlay CSS resolves these to
256
+ * slightly stronger values in dark mode via the elevation tokens on each
257
+ * surface.
226
258
  */
227
259
  const SHADOW = {
228
- sm: '0 1px 1px rgb(0 0 0 / 0.08), 0 2px 8px rgb(0 0 0 / 0.08)',
229
- md: '0 1px 2px rgb(0 0 0 / 0.1), 0 2px 12px rgb(0 0 0 / 0.1)',
230
- lg: '0 2px 2px rgb(0 0 0 / 0.1), 0 8px 24px rgb(0 0 0 / 0.12)',
231
- xl: '0 4px 6px rgb(0 0 0 / 0.1), 0 12px 32px rgb(0 0 0 / 0.16)',
232
- '2xl': '0 8px 12px rgb(0 0 0 / 0.14), 0 24px 48px rgb(0 0 0 / 0.22)',
260
+ sm: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 1px rgb(0 0 0 / 0.07), 0 2px 8px rgb(0 0 0 / 0.07)',
261
+ md: '0 0 0 1px rgb(0 0 0 / 0.03), 0 1px 2px rgb(0 0 0 / 0.09), 0 4px 16px rgb(0 0 0 / 0.09)',
262
+ lg: '0 0 0 1px rgb(0 0 0 / 0.04), 0 2px 4px rgb(0 0 0 / 0.09), 0 10px 28px rgb(0 0 0 / 0.11)',
263
+ xl: '0 0 0 1px rgb(0 0 0 / 0.04), 0 4px 8px rgb(0 0 0 / 0.1), 0 16px 40px rgb(0 0 0 / 0.15)',
264
+ '2xl': '0 0 0 1px rgb(0 0 0 / 0.05), 0 8px 16px rgb(0 0 0 / 0.13), 0 28px 56px rgb(0 0 0 / 0.2)',
233
265
  };
234
266
  /**
235
267
  * Stacking ladder for overlay components. Anchored popups sit lowest;
@@ -323,6 +355,16 @@ function staticVars(theme) {
323
355
  // Motion Tokens
324
356
  '--ngxsmk-motion-duration': 'var(--ngxsmk-duration-normal)',
325
357
  '--ngxsmk-motion-ease': 'var(--ngxsmk-ease-in-out)',
358
+ // Interactive-state motion: shared lift/press transforms. Neutralized to
359
+ // `none` under prefers-reduced-motion (see buildThemeCss).
360
+ '--ngxsmk-hover-lift': 'translateY(-1px)',
361
+ '--ngxsmk-press-scale': 'scale(0.98)',
362
+ // Focus ring: THE focus indicator for every component. Aliases the
363
+ // mode-aware --ngxsmk-shadow-focus; the error variant derives from the
364
+ // semantic error role so invalid controls ring red in both modes.
365
+ '--ngxsmk-focus-ring': 'var(--ngxsmk-shadow-focus)',
366
+ '--ngxsmk-focus-ring-error': '0 0 0 2px color-mix(in srgb, var(--ngxsmk-color-error) 15%, transparent), ' +
367
+ '0 0 0 4px color-mix(in srgb, var(--ngxsmk-color-error) 45%, transparent)',
326
368
  // Component-specific Tokens (Buttons)
327
369
  '--ngxsmk-button-bg': 'var(--ngxsmk-color-primary)',
328
370
  '--ngxsmk-button-color': 'var(--ngxsmk-color-on-primary)',
@@ -353,6 +395,18 @@ function staticVars(theme) {
353
395
  '--ngxsmk-switch-thumb-bg': 'var(--ngxsmk-color-surface)',
354
396
  '--ngxsmk-switch-checked-bg': 'var(--ngxsmk-color-primary)',
355
397
  };
398
+ for (const [key, value] of Object.entries(CONTROL_HEIGHTS)) {
399
+ vars[`--ngxsmk-control-height-${key}`] = value;
400
+ }
401
+ for (const [key, value] of Object.entries(OPACITY)) {
402
+ vars[`--ngxsmk-opacity-${key}`] = value;
403
+ }
404
+ for (const [key, value] of Object.entries(ICON_SIZE)) {
405
+ vars[`--ngxsmk-icon-${key}`] = value;
406
+ }
407
+ for (const [key, value] of Object.entries(TRACKING)) {
408
+ vars[`--ngxsmk-tracking-${key}`] = value;
409
+ }
356
410
  for (const [key, value] of Object.entries(theme.spacing)) {
357
411
  vars[`--ngxsmk-space-${key}`] = value;
358
412
  }
@@ -534,7 +588,21 @@ function buildThemeCss(config) {
534
588
  darkBlock = block(`:root.${cn}, :root.${cn} body, .${cn}`, dark);
535
589
  }
536
590
  }
537
- const reducedMotion = `@media (prefers-reduced-motion: reduce) {\n :root {\n --ngxsmk-motion-duration: 0ms;\n }\n}`;
591
+ // Zero every duration token (components animate with --ngxsmk-duration-*
592
+ // directly) and neutralize the shared transforms so ALL token-driven motion
593
+ // stops. `.ngxsmk-reduce-motion` offers the same as an app-level opt-in.
594
+ const reducedVars = {
595
+ '--ngxsmk-motion-duration': '0ms',
596
+ '--ngxsmk-hover-lift': 'none',
597
+ '--ngxsmk-press-scale': 'none',
598
+ };
599
+ for (const key of Object.keys(theme.duration)) {
600
+ reducedVars[`--ngxsmk-duration-${key}`] = '0ms';
601
+ }
602
+ const reducedMotion = [
603
+ `@media (prefers-reduced-motion: reduce) {\n${block(':root', reducedVars, ' ')}\n}`,
604
+ block(':root.ngxsmk-reduce-motion, .ngxsmk-reduce-motion', reducedVars),
605
+ ].join('\n\n');
538
606
  return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
539
607
  }
540
608
 
@@ -677,5 +745,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
677
745
  * Generated bundle index. Do not edit.
678
746
  */
679
747
 
680
- export { CONTROL_HEIGHT, DEFAULT_FONT_FAMILY, DEFAULT_NEUTRAL, DEFAULT_SEMANTIC, DEFAULT_TYPOGRAPHY, DURATION, EASING, NgxsmkThemeService, RADIUS, SHADOW, SPACING, Z_INDEX, buildThemeCss, defineConfig, deriveScale, emeraldPreset, hexToHsl, hslToHex, neutralPreset, presets, resolveTheme, rosePreset, rotateHue, shiftLightness, violetPreset };
748
+ export { CONTROL_HEIGHT, CONTROL_HEIGHTS, DEFAULT_FONT_FAMILY, DEFAULT_NEUTRAL, DEFAULT_SEMANTIC, DEFAULT_TYPOGRAPHY, DURATION, EASING, ICON_SIZE, NgxsmkThemeService, OPACITY, RADIUS, SHADOW, SPACING, TRACKING, Z_INDEX, buildThemeCss, defineConfig, deriveScale, emeraldPreset, hexToHsl, hslToHex, neutralPreset, presets, resolveTheme, rosePreset, rotateHue, shiftLightness, violetPreset };
681
749
  //# sourceMappingURL=ngxsmk-theme.mjs.map