loclaude 0.0.1-alpha.3 → 0.0.3

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/README.md +152 -64
  3. package/package.json +25 -14
  4. package/libs/cli/CHANGELOG.md +0 -59
  5. package/libs/cli/LICENSE +0 -31
  6. package/libs/cli/README.md +0 -5
  7. package/libs/cli/dist/cac.d.ts +0 -6
  8. package/libs/cli/dist/cac.d.ts.map +0 -1
  9. package/libs/cli/dist/commands/config.d.ts +0 -6
  10. package/libs/cli/dist/commands/config.d.ts.map +0 -1
  11. package/libs/cli/dist/commands/docker.d.ts +0 -17
  12. package/libs/cli/dist/commands/docker.d.ts.map +0 -1
  13. package/libs/cli/dist/commands/doctor.d.ts +0 -9
  14. package/libs/cli/dist/commands/doctor.d.ts.map +0 -1
  15. package/libs/cli/dist/commands/index.d.ts +0 -6
  16. package/libs/cli/dist/commands/index.d.ts.map +0 -1
  17. package/libs/cli/dist/commands/init.d.ts +0 -11
  18. package/libs/cli/dist/commands/init.d.ts.map +0 -1
  19. package/libs/cli/dist/commands/models.d.ts +0 -9
  20. package/libs/cli/dist/commands/models.d.ts.map +0 -1
  21. package/libs/cli/dist/config.d.ts +0 -74
  22. package/libs/cli/dist/config.d.ts.map +0 -1
  23. package/libs/cli/dist/constants.d.ts +0 -12
  24. package/libs/cli/dist/constants.d.ts.map +0 -1
  25. package/libs/cli/dist/index.bun.js +0 -4268
  26. package/libs/cli/dist/index.bun.js.map +0 -55
  27. package/libs/cli/dist/index.d.ts +0 -2
  28. package/libs/cli/dist/index.d.ts.map +0 -1
  29. package/libs/cli/dist/index.js +0 -4271
  30. package/libs/cli/dist/index.js.map +0 -55
  31. package/libs/cli/dist/output.d.ts +0 -107
  32. package/libs/cli/dist/output.d.ts.map +0 -1
  33. package/libs/cli/dist/spawn.d.ts +0 -35
  34. package/libs/cli/dist/spawn.d.ts.map +0 -1
  35. package/libs/cli/dist/types.d.ts +0 -50
  36. package/libs/cli/dist/types.d.ts.map +0 -1
  37. package/libs/cli/dist/utils.d.ts +0 -32
  38. package/libs/cli/dist/utils.d.ts.map +0 -1
  39. package/libs/cli/package.json +0 -90
@@ -1,55 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/.bun/cli-width@4.1.0/node_modules/cli-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.js", "../../../node_modules/.bun/mute-stream@3.0.0/node_modules/mute-stream/lib/index.js", "../../../node_modules/.bun/bytes@3.1.2/node_modules/bytes/index.js", "../../../node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js", "../../../node_modules/.bun/cac@6.7.14/node_modules/cac/dist/index.mjs", "../lib/config.ts", "../lib/constants.ts", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/key.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/errors.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-state.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/hook-engine.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-effect.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/theme.js", "../../../node_modules/.bun/@inquirer+figures@2.0.3/node_modules/@inquirer/figures/dist/index.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/make-theme.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-prefix.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-memo.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-ref.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/use-keypress.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/utils.js", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../../../node_modules/.bun/ansi-styles@6.2.3/node_modules/ansi-styles/index.js", "../../../node_modules/.bun/wrap-ansi@9.0.2/node_modules/wrap-ansi/index.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/create-prompt.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/screen-manager.js", "../../../node_modules/.bun/@inquirer+ansi@2.0.3/node_modules/@inquirer/ansi/dist/index.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/promise-polyfill.js", "../../../node_modules/.bun/@inquirer+core@11.1.1+c195ea72dffa657e/node_modules/@inquirer/core/dist/lib/Separator.js", "../../../node_modules/.bun/@inquirer+select@5.0.4+c195ea72dffa657e/node_modules/@inquirer/select/dist/index.js", "../lib/utils.ts", "../lib/output.ts", "../lib/spawn.ts", "../lib/commands/init.ts", "../lib/commands/doctor.ts", "../lib/commands/config.ts", "../lib/commands/docker.ts", "../lib/commands/models.ts", "../lib/cac.ts"],
4
- "sourcesContent": [
5
- "'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n",
6
- "module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n",
7
- "const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n",
8
- "/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n b: 1,\n kb: 1 << 10,\n mb: 1 << 20,\n gb: 1 << 30,\n tb: Math.pow(1024, 4),\n pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n * case: [string],\n * decimalPlaces: [number]\n * fixedDecimals: [boolean]\n * thousandsSeparator: [string]\n * unitSeparator: [string]\n * }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n if (typeof value === 'string') {\n return parse(value);\n }\n\n if (typeof value === 'number') {\n return format(value, options);\n }\n\n return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n var mag = Math.abs(value);\n var thousandsSeparator = (options && options.thousandsSeparator) || '';\n var unitSeparator = (options && options.unitSeparator) || '';\n var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n var fixedDecimals = Boolean(options && options.fixedDecimals);\n var unit = (options && options.unit) || '';\n\n if (!unit || !map[unit.toLowerCase()]) {\n if (mag >= map.pb) {\n unit = 'PB';\n } else if (mag >= map.tb) {\n unit = 'TB';\n } else if (mag >= map.gb) {\n unit = 'GB';\n } else if (mag >= map.mb) {\n unit = 'MB';\n } else if (mag >= map.kb) {\n unit = 'KB';\n } else {\n unit = 'B';\n }\n }\n\n var val = value / map[unit.toLowerCase()];\n var str = val.toFixed(decimalPlaces);\n\n if (!fixedDecimals) {\n str = str.replace(formatDecimalsRegExp, '$1');\n }\n\n if (thousandsSeparator) {\n str = str.split('.').map(function (s, i) {\n return i === 0\n ? s.replace(formatThousandsRegExp, thousandsSeparator)\n : s\n }).join('.');\n }\n\n return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n if (typeof val === 'number' && !isNaN(val)) {\n return val;\n }\n\n if (typeof val !== 'string') {\n return null;\n }\n\n // Test if the string passed is valid\n var results = parseRegExp.exec(val);\n var floatValue;\n var unit = 'b';\n\n if (!results) {\n // Nothing could be extracted from the given string\n floatValue = parseInt(val, 10);\n unit = 'b'\n } else {\n // Retrieve the value and the unit\n floatValue = parseFloat(results[1]);\n unit = results[4].toLowerCase();\n }\n\n if (isNaN(floatValue)) {\n return null;\n }\n\n return Math.floor(map[unit] * floatValue);\n}\n",
9
- "let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
10
- "import { EventEmitter } from 'events';\n\nfunction toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nfunction mri2 (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n\nconst removeBrackets = (v) => v.replace(/[<[].+/, \"\").trim();\nconst findAllBrackets = (v) => {\n const ANGLED_BRACKET_RE_GLOBAL = /<([^>]+)>/g;\n const SQUARE_BRACKET_RE_GLOBAL = /\\[([^\\]]+)\\]/g;\n const res = [];\n const parse = (match) => {\n let variadic = false;\n let value = match[1];\n if (value.startsWith(\"...\")) {\n value = value.slice(3);\n variadic = true;\n }\n return {\n required: match[0].startsWith(\"<\"),\n value,\n variadic\n };\n };\n let angledMatch;\n while (angledMatch = ANGLED_BRACKET_RE_GLOBAL.exec(v)) {\n res.push(parse(angledMatch));\n }\n let squareMatch;\n while (squareMatch = SQUARE_BRACKET_RE_GLOBAL.exec(v)) {\n res.push(parse(squareMatch));\n }\n return res;\n};\nconst getMriOptions = (options) => {\n const result = {alias: {}, boolean: []};\n for (const [index, option] of options.entries()) {\n if (option.names.length > 1) {\n result.alias[option.names[0]] = option.names.slice(1);\n }\n if (option.isBoolean) {\n if (option.negated) {\n const hasStringTypeOption = options.some((o, i) => {\n return i !== index && o.names.some((name) => option.names.includes(name)) && typeof o.required === \"boolean\";\n });\n if (!hasStringTypeOption) {\n result.boolean.push(option.names[0]);\n }\n } else {\n result.boolean.push(option.names[0]);\n }\n }\n }\n return result;\n};\nconst findLongest = (arr) => {\n return arr.sort((a, b) => {\n return a.length > b.length ? -1 : 1;\n })[0];\n};\nconst padRight = (str, length) => {\n return str.length >= length ? str : `${str}${\" \".repeat(length - str.length)}`;\n};\nconst camelcase = (input) => {\n return input.replace(/([a-z])-([a-z])/g, (_, p1, p2) => {\n return p1 + p2.toUpperCase();\n });\n};\nconst setDotProp = (obj, keys, val) => {\n let i = 0;\n let length = keys.length;\n let t = obj;\n let x;\n for (; i < length; ++i) {\n x = t[keys[i]];\n t = t[keys[i]] = i === length - 1 ? val : x != null ? x : !!~keys[i + 1].indexOf(\".\") || !(+keys[i + 1] > -1) ? {} : [];\n }\n};\nconst setByType = (obj, transforms) => {\n for (const key of Object.keys(transforms)) {\n const transform = transforms[key];\n if (transform.shouldTransform) {\n obj[key] = Array.prototype.concat.call([], obj[key]);\n if (typeof transform.transformFunction === \"function\") {\n obj[key] = obj[key].map(transform.transformFunction);\n }\n }\n }\n};\nconst getFileName = (input) => {\n const m = /([^\\\\\\/]+)$/.exec(input);\n return m ? m[1] : \"\";\n};\nconst camelcaseOptionName = (name) => {\n return name.split(\".\").map((v, i) => {\n return i === 0 ? camelcase(v) : v;\n }).join(\".\");\n};\nclass CACError extends Error {\n constructor(message) {\n super(message);\n this.name = this.constructor.name;\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(message).stack;\n }\n }\n}\n\nclass Option {\n constructor(rawName, description, config) {\n this.rawName = rawName;\n this.description = description;\n this.config = Object.assign({}, config);\n rawName = rawName.replace(/\\.\\*/g, \"\");\n this.negated = false;\n this.names = removeBrackets(rawName).split(\",\").map((v) => {\n let name = v.trim().replace(/^-{1,2}/, \"\");\n if (name.startsWith(\"no-\")) {\n this.negated = true;\n name = name.replace(/^no-/, \"\");\n }\n return camelcaseOptionName(name);\n }).sort((a, b) => a.length > b.length ? 1 : -1);\n this.name = this.names[this.names.length - 1];\n if (this.negated && this.config.default == null) {\n this.config.default = true;\n }\n if (rawName.includes(\"<\")) {\n this.required = true;\n } else if (rawName.includes(\"[\")) {\n this.required = false;\n } else {\n this.isBoolean = true;\n }\n }\n}\n\nconst processArgs = process.argv;\nconst platformInfo = `${process.platform}-${process.arch} node-${process.version}`;\n\nclass Command {\n constructor(rawName, description, config = {}, cli) {\n this.rawName = rawName;\n this.description = description;\n this.config = config;\n this.cli = cli;\n this.options = [];\n this.aliasNames = [];\n this.name = removeBrackets(rawName);\n this.args = findAllBrackets(rawName);\n this.examples = [];\n }\n usage(text) {\n this.usageText = text;\n return this;\n }\n allowUnknownOptions() {\n this.config.allowUnknownOptions = true;\n return this;\n }\n ignoreOptionDefaultValue() {\n this.config.ignoreOptionDefaultValue = true;\n return this;\n }\n version(version, customFlags = \"-v, --version\") {\n this.versionNumber = version;\n this.option(customFlags, \"Display version number\");\n return this;\n }\n example(example) {\n this.examples.push(example);\n return this;\n }\n option(rawName, description, config) {\n const option = new Option(rawName, description, config);\n this.options.push(option);\n return this;\n }\n alias(name) {\n this.aliasNames.push(name);\n return this;\n }\n action(callback) {\n this.commandAction = callback;\n return this;\n }\n isMatched(name) {\n return this.name === name || this.aliasNames.includes(name);\n }\n get isDefaultCommand() {\n return this.name === \"\" || this.aliasNames.includes(\"!\");\n }\n get isGlobalCommand() {\n return this instanceof GlobalCommand;\n }\n hasOption(name) {\n name = name.split(\".\")[0];\n return this.options.find((option) => {\n return option.names.includes(name);\n });\n }\n outputHelp() {\n const {name, commands} = this.cli;\n const {\n versionNumber,\n options: globalOptions,\n helpCallback\n } = this.cli.globalCommand;\n let sections = [\n {\n body: `${name}${versionNumber ? `/${versionNumber}` : \"\"}`\n }\n ];\n sections.push({\n title: \"Usage\",\n body: ` $ ${name} ${this.usageText || this.rawName}`\n });\n const showCommands = (this.isGlobalCommand || this.isDefaultCommand) && commands.length > 0;\n if (showCommands) {\n const longestCommandName = findLongest(commands.map((command) => command.rawName));\n sections.push({\n title: \"Commands\",\n body: commands.map((command) => {\n return ` ${padRight(command.rawName, longestCommandName.length)} ${command.description}`;\n }).join(\"\\n\")\n });\n sections.push({\n title: `For more info, run any command with the \\`--help\\` flag`,\n body: commands.map((command) => ` $ ${name}${command.name === \"\" ? \"\" : ` ${command.name}`} --help`).join(\"\\n\")\n });\n }\n let options = this.isGlobalCommand ? globalOptions : [...this.options, ...globalOptions || []];\n if (!this.isGlobalCommand && !this.isDefaultCommand) {\n options = options.filter((option) => option.name !== \"version\");\n }\n if (options.length > 0) {\n const longestOptionName = findLongest(options.map((option) => option.rawName));\n sections.push({\n title: \"Options\",\n body: options.map((option) => {\n return ` ${padRight(option.rawName, longestOptionName.length)} ${option.description} ${option.config.default === void 0 ? \"\" : `(default: ${option.config.default})`}`;\n }).join(\"\\n\")\n });\n }\n if (this.examples.length > 0) {\n sections.push({\n title: \"Examples\",\n body: this.examples.map((example) => {\n if (typeof example === \"function\") {\n return example(name);\n }\n return example;\n }).join(\"\\n\")\n });\n }\n if (helpCallback) {\n sections = helpCallback(sections) || sections;\n }\n console.log(sections.map((section) => {\n return section.title ? `${section.title}:\n${section.body}` : section.body;\n }).join(\"\\n\\n\"));\n }\n outputVersion() {\n const {name} = this.cli;\n const {versionNumber} = this.cli.globalCommand;\n if (versionNumber) {\n console.log(`${name}/${versionNumber} ${platformInfo}`);\n }\n }\n checkRequiredArgs() {\n const minimalArgsCount = this.args.filter((arg) => arg.required).length;\n if (this.cli.args.length < minimalArgsCount) {\n throw new CACError(`missing required args for command \\`${this.rawName}\\``);\n }\n }\n checkUnknownOptions() {\n const {options, globalCommand} = this.cli;\n if (!this.config.allowUnknownOptions) {\n for (const name of Object.keys(options)) {\n if (name !== \"--\" && !this.hasOption(name) && !globalCommand.hasOption(name)) {\n throw new CACError(`Unknown option \\`${name.length > 1 ? `--${name}` : `-${name}`}\\``);\n }\n }\n }\n }\n checkOptionValue() {\n const {options: parsedOptions, globalCommand} = this.cli;\n const options = [...globalCommand.options, ...this.options];\n for (const option of options) {\n const value = parsedOptions[option.name.split(\".\")[0]];\n if (option.required) {\n const hasNegated = options.some((o) => o.negated && o.names.includes(option.name));\n if (value === true || value === false && !hasNegated) {\n throw new CACError(`option \\`${option.rawName}\\` value is missing`);\n }\n }\n }\n }\n}\nclass GlobalCommand extends Command {\n constructor(cli) {\n super(\"@@global@@\", \"\", {}, cli);\n }\n}\n\nvar __assign = Object.assign;\nclass CAC extends EventEmitter {\n constructor(name = \"\") {\n super();\n this.name = name;\n this.commands = [];\n this.rawArgs = [];\n this.args = [];\n this.options = {};\n this.globalCommand = new GlobalCommand(this);\n this.globalCommand.usage(\"<command> [options]\");\n }\n usage(text) {\n this.globalCommand.usage(text);\n return this;\n }\n command(rawName, description, config) {\n const command = new Command(rawName, description || \"\", config, this);\n command.globalCommand = this.globalCommand;\n this.commands.push(command);\n return command;\n }\n option(rawName, description, config) {\n this.globalCommand.option(rawName, description, config);\n return this;\n }\n help(callback) {\n this.globalCommand.option(\"-h, --help\", \"Display this message\");\n this.globalCommand.helpCallback = callback;\n this.showHelpOnExit = true;\n return this;\n }\n version(version, customFlags = \"-v, --version\") {\n this.globalCommand.version(version, customFlags);\n this.showVersionOnExit = true;\n return this;\n }\n example(example) {\n this.globalCommand.example(example);\n return this;\n }\n outputHelp() {\n if (this.matchedCommand) {\n this.matchedCommand.outputHelp();\n } else {\n this.globalCommand.outputHelp();\n }\n }\n outputVersion() {\n this.globalCommand.outputVersion();\n }\n setParsedInfo({args, options}, matchedCommand, matchedCommandName) {\n this.args = args;\n this.options = options;\n if (matchedCommand) {\n this.matchedCommand = matchedCommand;\n }\n if (matchedCommandName) {\n this.matchedCommandName = matchedCommandName;\n }\n return this;\n }\n unsetMatchedCommand() {\n this.matchedCommand = void 0;\n this.matchedCommandName = void 0;\n }\n parse(argv = processArgs, {\n run = true\n } = {}) {\n this.rawArgs = argv;\n if (!this.name) {\n this.name = argv[1] ? getFileName(argv[1]) : \"cli\";\n }\n let shouldParse = true;\n for (const command of this.commands) {\n const parsed = this.mri(argv.slice(2), command);\n const commandName = parsed.args[0];\n if (command.isMatched(commandName)) {\n shouldParse = false;\n const parsedInfo = __assign(__assign({}, parsed), {\n args: parsed.args.slice(1)\n });\n this.setParsedInfo(parsedInfo, command, commandName);\n this.emit(`command:${commandName}`, command);\n }\n }\n if (shouldParse) {\n for (const command of this.commands) {\n if (command.name === \"\") {\n shouldParse = false;\n const parsed = this.mri(argv.slice(2), command);\n this.setParsedInfo(parsed, command);\n this.emit(`command:!`, command);\n }\n }\n }\n if (shouldParse) {\n const parsed = this.mri(argv.slice(2));\n this.setParsedInfo(parsed);\n }\n if (this.options.help && this.showHelpOnExit) {\n this.outputHelp();\n run = false;\n this.unsetMatchedCommand();\n }\n if (this.options.version && this.showVersionOnExit && this.matchedCommandName == null) {\n this.outputVersion();\n run = false;\n this.unsetMatchedCommand();\n }\n const parsedArgv = {args: this.args, options: this.options};\n if (run) {\n this.runMatchedCommand();\n }\n if (!this.matchedCommand && this.args[0]) {\n this.emit(\"command:*\");\n }\n return parsedArgv;\n }\n mri(argv, command) {\n const cliOptions = [\n ...this.globalCommand.options,\n ...command ? command.options : []\n ];\n const mriOptions = getMriOptions(cliOptions);\n let argsAfterDoubleDashes = [];\n const doubleDashesIndex = argv.indexOf(\"--\");\n if (doubleDashesIndex > -1) {\n argsAfterDoubleDashes = argv.slice(doubleDashesIndex + 1);\n argv = argv.slice(0, doubleDashesIndex);\n }\n let parsed = mri2(argv, mriOptions);\n parsed = Object.keys(parsed).reduce((res, name) => {\n return __assign(__assign({}, res), {\n [camelcaseOptionName(name)]: parsed[name]\n });\n }, {_: []});\n const args = parsed._;\n const options = {\n \"--\": argsAfterDoubleDashes\n };\n const ignoreDefault = command && command.config.ignoreOptionDefaultValue ? command.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue;\n let transforms = Object.create(null);\n for (const cliOption of cliOptions) {\n if (!ignoreDefault && cliOption.config.default !== void 0) {\n for (const name of cliOption.names) {\n options[name] = cliOption.config.default;\n }\n }\n if (Array.isArray(cliOption.config.type)) {\n if (transforms[cliOption.name] === void 0) {\n transforms[cliOption.name] = Object.create(null);\n transforms[cliOption.name][\"shouldTransform\"] = true;\n transforms[cliOption.name][\"transformFunction\"] = cliOption.config.type[0];\n }\n }\n }\n for (const key of Object.keys(parsed)) {\n if (key !== \"_\") {\n const keys = key.split(\".\");\n setDotProp(options, keys, parsed[key]);\n setByType(options, transforms);\n }\n }\n return {\n args,\n options\n };\n }\n runMatchedCommand() {\n const {args, options, matchedCommand: command} = this;\n if (!command || !command.commandAction)\n return;\n command.checkUnknownOptions();\n command.checkOptionValue();\n command.checkRequiredArgs();\n const actionArgs = [];\n command.args.forEach((arg, index) => {\n if (arg.variadic) {\n actionArgs.push(args.slice(index));\n } else {\n actionArgs.push(args[index]);\n }\n });\n actionArgs.push(options);\n return command.commandAction.apply(this, actionArgs);\n }\n}\n\nconst cac = (name = \"\") => new CAC(name);\n\nexport default cac;\nexport { CAC, Command, cac };\n",
11
- "/**\n * Configuration system for loclaude\n *\n * Priority (highest to lowest):\n * 1. CLI arguments\n * 2. Environment variables\n * 3. Project config (./.loclaude/config.json)\n * 4. User config (~/.config/loclaude/config.json)\n * 5. Default values\n */\n\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface OllamaConfig {\n url: string;\n defaultModel: string;\n}\n\nexport interface DockerConfig {\n composeFile: string;\n gpu: boolean;\n}\n\nexport interface ClaudeConfig {\n extraArgs: string[];\n}\n\nexport interface LoclaudeConfig {\n ollama: OllamaConfig;\n docker: DockerConfig;\n claude: ClaudeConfig;\n}\n\n// Partial version for user configs (all fields optional)\nexport interface LoclaudeConfigPartial {\n ollama?: Partial<OllamaConfig>;\n docker?: Partial<DockerConfig>;\n claude?: Partial<ClaudeConfig>;\n}\n\n// =============================================================================\n// Defaults\n// =============================================================================\n\nconst DEFAULT_CONFIG: LoclaudeConfig = {\n ollama: {\n url: 'http://localhost:11434',\n defaultModel: 'qwen3-coder:30b'\n },\n docker: {\n composeFile: './docker-compose.yml',\n gpu: true\n },\n claude: {\n extraArgs: []\n }\n};\n\n// =============================================================================\n// Config file locations\n// =============================================================================\n\n/**\n * Get paths to check for config files (in priority order)\n */\nfunction getConfigPaths(): string[] {\n const paths: string[] = [];\n\n // 1. Project-local config\n const projectConfig = join(process.cwd(), '.loclaude', 'config.json');\n paths.push(projectConfig);\n\n // 2. User global config\n const userConfig = join(homedir(), '.config', 'loclaude', 'config.json');\n paths.push(userConfig);\n\n return paths;\n}\n\n/**\n * Find the first existing config file\n */\nfunction findConfigFile(): string | null {\n for (const path of getConfigPaths()) {\n if (existsSync(path)) {\n return path;\n }\n }\n return null;\n}\n\n// =============================================================================\n// Config loading\n// =============================================================================\n\n/**\n * Load and parse a config file\n */\nfunction loadConfigFile(path: string): LoclaudeConfigPartial | null {\n try {\n const content = readFileSync(path, 'utf-8');\n return JSON.parse(content) as LoclaudeConfigPartial;\n } catch (error) {\n console.warn(`Warning: Failed to parse config file ${path}`);\n return null;\n }\n}\n\n/**\n * Load all config files and merge them (project overrides user)\n */\nfunction loadConfigFiles(): LoclaudeConfigPartial {\n const paths = getConfigPaths();\n let merged: LoclaudeConfigPartial = {};\n\n // Load in reverse order so project config overrides user config\n for (const path of paths.reverse()) {\n if (existsSync(path)) {\n const config = loadConfigFile(path);\n if (config) {\n merged = deepMerge(merged, config);\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Get config values from environment variables\n */\nfunction loadEnvConfig(): LoclaudeConfigPartial {\n const config: LoclaudeConfigPartial = {};\n\n // Ollama config from env\n if (process.env.OLLAMA_URL) {\n config.ollama = config.ollama || {};\n config.ollama.url = process.env.OLLAMA_URL;\n }\n if (process.env.OLLAMA_MODEL) {\n config.ollama = config.ollama || {};\n config.ollama.defaultModel = process.env.OLLAMA_MODEL;\n }\n\n // Docker config from env\n if (process.env.LOCLAUDE_COMPOSE_FILE) {\n config.docker = config.docker || {};\n config.docker.composeFile = process.env.LOCLAUDE_COMPOSE_FILE;\n }\n if (process.env.LOCLAUDE_GPU !== undefined) {\n config.docker = config.docker || {};\n config.docker.gpu = process.env.LOCLAUDE_GPU !== 'false' && process.env.LOCLAUDE_GPU !== '0';\n }\n\n return config;\n}\n\n// =============================================================================\n// Merging utilities\n// =============================================================================\n\n/**\n * Deep merge two objects (b overrides a)\n */\nfunction deepMerge<T extends object>(a: T, b: Partial<T>): T {\n const result = { ...a } as T;\n\n for (const key in b) {\n if (Object.prototype.hasOwnProperty.call(b, key)) {\n const bValue = b[key];\n const aValue = a[key];\n\n if (\n bValue !== undefined &&\n typeof bValue === 'object' &&\n !Array.isArray(bValue) &&\n aValue !== undefined &&\n typeof aValue === 'object' &&\n !Array.isArray(aValue)\n ) {\n (result as Record<string, unknown>)[key] = deepMerge(aValue as object, bValue as object);\n } else if (bValue !== undefined) {\n (result as Record<string, unknown>)[key] = bValue;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Merge partial config with defaults\n */\nfunction mergeWithDefaults(partial: LoclaudeConfigPartial): LoclaudeConfig {\n return {\n ollama: {\n ...DEFAULT_CONFIG.ollama,\n ...partial.ollama\n },\n docker: {\n ...DEFAULT_CONFIG.docker,\n ...partial.docker\n },\n claude: {\n ...DEFAULT_CONFIG.claude,\n ...partial.claude\n }\n };\n}\n\n// =============================================================================\n// Public API\n// =============================================================================\n\nlet cachedConfig: LoclaudeConfig | null = null;\n\n/**\n * Load the full configuration\n *\n * Merges (in order of priority):\n * 1. Environment variables\n * 2. Project config file\n * 3. User config file\n * 4. Defaults\n */\nexport function loadConfig(): LoclaudeConfig {\n if (cachedConfig) {\n return cachedConfig;\n }\n\n // Load from files (user config, then project config)\n const fileConfig = loadConfigFiles();\n\n // Load from environment (highest priority)\n const envConfig = loadEnvConfig();\n\n // Merge: defaults <- file config <- env config\n const merged = deepMerge(fileConfig, envConfig);\n cachedConfig = mergeWithDefaults(merged);\n\n return cachedConfig;\n}\n\n/**\n * Clear the config cache (useful for testing)\n */\nexport function clearConfigCache(): void {\n cachedConfig = null;\n}\n\n/**\n * Get the path to the active config file (if any)\n */\nexport function getActiveConfigPath(): string | null {\n return findConfigFile();\n}\n\n/**\n * Get all config paths that are checked\n */\nexport function getConfigSearchPaths(): string[] {\n return getConfigPaths();\n}\n\n// =============================================================================\n// Convenience getters\n// =============================================================================\n\n/**\n * Get Ollama URL from config\n */\nexport function getOllamaUrl(): string {\n return loadConfig().ollama.url;\n}\n\n/**\n * Get default model from config\n */\nexport function getDefaultModel(): string {\n return loadConfig().ollama.defaultModel;\n}\n\n/**\n * Get docker compose file path from config\n */\nexport function getComposeFile(): string {\n return loadConfig().docker.composeFile;\n}\n\n/**\n * Check if GPU is enabled in config\n */\nexport function isGpuEnabled(): boolean {\n return loadConfig().docker.gpu;\n}\n\n/**\n * Get extra Claude args from config\n */\nexport function getClaudeExtraArgs(): string[] {\n return loadConfig().claude.extraArgs;\n}\n",
12
- "/**\n * Constants - Loaded from configuration system\n *\n * Values come from (in priority order):\n * 1. Environment variables (OLLAMA_URL, OLLAMA_MODEL)\n * 2. Project config (.loclaude/config.json)\n * 3. User config (~/.config/loclaude/config.json)\n * 4. Default values\n */\n\nimport { getOllamaUrl, getDefaultModel } from './config';\n\nexport const OLLAMA_URL = getOllamaUrl();\nexport const DEFAULT_MODEL = getDefaultModel();\n",
13
- "export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\nexport const isShiftKey = (key) => key.shift;\n",
14
- "export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n",
15
- "import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n",
16
- "/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n",
17
- "import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n",
18
- "import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: styleText('blue', '?'),\n done: styleText('green', figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((frame) => styleText('yellow', frame)),\n },\n style: {\n answer: (text) => styleText('cyan', text),\n message: (text) => styleText('bold', text),\n error: (text) => styleText('red', `> ${text}`),\n defaultAnswer: (text) => styleText('dim', `(${text})`),\n help: (text) => styleText('dim', text),\n highlight: (text) => styleText('cyan', text),\n key: (text) => styleText('cyan', styleText('bold', `<${text}>`)),\n },\n};\n",
19
- "// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '█',\n squareDarkShade: '▓',\n squareMediumShade: '▒',\n squareLightShade: '░',\n squareTop: '▀',\n squareBottom: '▄',\n squareLeft: '▌',\n squareRight: '▐',\n squareCenter: '■',\n bullet: '●',\n dot: '․',\n ellipsis: '…',\n pointerSmall: '›',\n triangleUp: '▲',\n triangleUpSmall: '▴',\n triangleDown: '▼',\n triangleDownSmall: '▾',\n triangleLeftSmall: '◂',\n triangleRightSmall: '▸',\n home: '⌂',\n heart: '♥',\n musicNote: '♪',\n musicNoteBeamed: '♫',\n arrowUp: '↑',\n arrowDown: '↓',\n arrowLeft: '←',\n arrowRight: '→',\n arrowLeftRight: '↔',\n arrowUpDown: '↕',\n almostEqual: '≈',\n notEqual: '≠',\n lessOrEqual: '≤',\n greaterOrEqual: '≥',\n identical: '≡',\n infinity: '∞',\n subscriptZero: '₀',\n subscriptOne: '₁',\n subscriptTwo: '₂',\n subscriptThree: '₃',\n subscriptFour: '₄',\n subscriptFive: '₅',\n subscriptSix: '₆',\n subscriptSeven: '₇',\n subscriptEight: '₈',\n subscriptNine: '₉',\n oneHalf: '½',\n oneThird: '⅓',\n oneQuarter: '¼',\n oneFifth: '⅕',\n oneSixth: '⅙',\n oneEighth: '⅛',\n twoThirds: '⅔',\n twoFifths: '⅖',\n threeQuarters: '¾',\n threeFifths: '⅗',\n threeEighths: '⅜',\n fourFifths: '⅘',\n fiveSixths: '⅚',\n fiveEighths: '⅝',\n sevenEighths: '⅞',\n line: '─',\n lineBold: '━',\n lineDouble: '═',\n lineDashed0: '┄',\n lineDashed1: '┅',\n lineDashed2: '┈',\n lineDashed3: '┉',\n lineDashed4: '╌',\n lineDashed5: '╍',\n lineDashed6: '╴',\n lineDashed7: '╶',\n lineDashed8: '╸',\n lineDashed9: '╺',\n lineDashed10: '╼',\n lineDashed11: '╾',\n lineDashed12: '−',\n lineDashed13: '–',\n lineDashed14: '‐',\n lineDashed15: '⁃',\n lineVertical: '│',\n lineVerticalBold: '┃',\n lineVerticalDouble: '║',\n lineVerticalDashed0: '┆',\n lineVerticalDashed1: '┇',\n lineVerticalDashed2: '┊',\n lineVerticalDashed3: '┋',\n lineVerticalDashed4: '╎',\n lineVerticalDashed5: '╏',\n lineVerticalDashed6: '╵',\n lineVerticalDashed7: '╷',\n lineVerticalDashed8: '╹',\n lineVerticalDashed9: '╻',\n lineVerticalDashed10: '╽',\n lineVerticalDashed11: '╿',\n lineDownLeft: '┐',\n lineDownLeftArc: '╮',\n lineDownBoldLeftBold: '┓',\n lineDownBoldLeft: '┒',\n lineDownLeftBold: '┑',\n lineDownDoubleLeftDouble: '╗',\n lineDownDoubleLeft: '╖',\n lineDownLeftDouble: '╕',\n lineDownRight: '┌',\n lineDownRightArc: '╭',\n lineDownBoldRightBold: '┏',\n lineDownBoldRight: '┎',\n lineDownRightBold: '┍',\n lineDownDoubleRightDouble: '╔',\n lineDownDoubleRight: '╓',\n lineDownRightDouble: '╒',\n lineUpLeft: '┘',\n lineUpLeftArc: '╯',\n lineUpBoldLeftBold: '┛',\n lineUpBoldLeft: '┚',\n lineUpLeftBold: '┙',\n lineUpDoubleLeftDouble: '╝',\n lineUpDoubleLeft: '╜',\n lineUpLeftDouble: '╛',\n lineUpRight: '└',\n lineUpRightArc: '╰',\n lineUpBoldRightBold: '┗',\n lineUpBoldRight: '┖',\n lineUpRightBold: '┕',\n lineUpDoubleRightDouble: '╚',\n lineUpDoubleRight: '╙',\n lineUpRightDouble: '╘',\n lineUpDownLeft: '┤',\n lineUpBoldDownBoldLeftBold: '┫',\n lineUpBoldDownBoldLeft: '┨',\n lineUpDownLeftBold: '┥',\n lineUpBoldDownLeftBold: '┩',\n lineUpDownBoldLeftBold: '┪',\n lineUpDownBoldLeft: '┧',\n lineUpBoldDownLeft: '┦',\n lineUpDoubleDownDoubleLeftDouble: '╣',\n lineUpDoubleDownDoubleLeft: '╢',\n lineUpDownLeftDouble: '╡',\n lineUpDownRight: '├',\n lineUpBoldDownBoldRightBold: '┣',\n lineUpBoldDownBoldRight: '┠',\n lineUpDownRightBold: '┝',\n lineUpBoldDownRightBold: '┡',\n lineUpDownBoldRightBold: '┢',\n lineUpDownBoldRight: '┟',\n lineUpBoldDownRight: '┞',\n lineUpDoubleDownDoubleRightDouble: '╠',\n lineUpDoubleDownDoubleRight: '╟',\n lineUpDownRightDouble: '╞',\n lineDownLeftRight: '┬',\n lineDownBoldLeftBoldRightBold: '┳',\n lineDownLeftBoldRightBold: '┯',\n lineDownBoldLeftRight: '┰',\n lineDownBoldLeftBoldRight: '┱',\n lineDownBoldLeftRightBold: '┲',\n lineDownLeftRightBold: '┮',\n lineDownLeftBoldRight: '┭',\n lineDownDoubleLeftDoubleRightDouble: '╦',\n lineDownDoubleLeftRight: '╥',\n lineDownLeftDoubleRightDouble: '╤',\n lineUpLeftRight: '┴',\n lineUpBoldLeftBoldRightBold: '┻',\n lineUpLeftBoldRightBold: '┷',\n lineUpBoldLeftRight: '┸',\n lineUpBoldLeftBoldRight: '┹',\n lineUpBoldLeftRightBold: '┺',\n lineUpLeftRightBold: '┶',\n lineUpLeftBoldRight: '┵',\n lineUpDoubleLeftDoubleRightDouble: '╩',\n lineUpDoubleLeftRight: '╨',\n lineUpLeftDoubleRightDouble: '╧',\n lineUpDownLeftRight: '┼',\n lineUpBoldDownBoldLeftBoldRightBold: '╋',\n lineUpDownBoldLeftBoldRightBold: '╈',\n lineUpBoldDownLeftBoldRightBold: '╇',\n lineUpBoldDownBoldLeftRightBold: '╊',\n lineUpBoldDownBoldLeftBoldRight: '╉',\n lineUpBoldDownLeftRight: '╀',\n lineUpDownBoldLeftRight: '╁',\n lineUpDownLeftBoldRight: '┽',\n lineUpDownLeftRightBold: '┾',\n lineUpBoldDownBoldLeftRight: '╂',\n lineUpDownLeftBoldRightBold: '┿',\n lineUpBoldDownLeftBoldRight: '╃',\n lineUpBoldDownLeftRightBold: '╄',\n lineUpDownBoldLeftBoldRight: '╅',\n lineUpDownBoldLeftRightBold: '╆',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '╬',\n lineUpDoubleDownDoubleLeftRight: '╫',\n lineUpDownLeftDoubleRightDouble: '╪',\n lineCross: '╳',\n lineBackslash: '╲',\n lineSlash: '╱',\n};\nconst specialMainSymbols = {\n tick: '✔',\n info: 'ℹ',\n warning: '⚠',\n cross: '✘',\n squareSmall: '◻',\n squareSmallFilled: '◼',\n circle: '◯',\n circleFilled: '◉',\n circleDotted: '◌',\n circleDouble: '◎',\n circleCircle: 'ⓞ',\n circleCross: 'ⓧ',\n circlePipe: 'Ⓘ',\n radioOn: '◉',\n radioOff: '◯',\n checkboxOn: '☒',\n checkboxOff: '☐',\n checkboxCircleOn: 'ⓧ',\n checkboxCircleOff: 'Ⓘ',\n pointer: '❯',\n triangleUpOutline: '△',\n triangleLeft: '◀',\n triangleRight: '▶',\n lozenge: '◆',\n lozengeOutline: '◇',\n hamburger: '☰',\n smiley: '㋡',\n mustache: '෴',\n star: '★',\n play: '▶',\n nodejs: '⬢',\n oneSeventh: '⅐',\n oneNinth: '⅑',\n oneTenth: '⅒',\n};\nconst specialFallbackSymbols = {\n tick: '√',\n info: 'i',\n warning: '‼',\n cross: '×',\n squareSmall: '□',\n squareSmallFilled: '■',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(○)',\n circleCross: '(×)',\n circlePipe: '(│)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[×]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(×)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '∆',\n triangleLeft: '◄',\n triangleRight: '►',\n lozenge: '♦',\n lozengeOutline: '◊',\n hamburger: '≡',\n smiley: '☺',\n mustache: '┌─┐',\n star: '✶',\n play: '►',\n nodejs: '♦',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n",
20
- "import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n",
21
- "import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n",
22
- "import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n",
23
- "import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n",
24
- "import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n",
25
- "import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n",
26
- "export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n",
27
- "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n",
28
- "// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n",
29
- "import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n",
30
- "import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n",
31
- "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n",
32
- "import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n",
33
- "import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n",
34
- "import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // oxlint-disable-next-line no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n // Re-renders only happen when the state change; but the readline cursor could change position\n // and that also requires a re-render (and a manual one because we mute the streams).\n // We set the listener after the initial workLoop to avoid a double render if render triggered\n // by a state change sets the cursor to the right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n",
35
- "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals = [];\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM');\nif (process.platform !== 'win32') {\n signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n );\n}\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n//# sourceMappingURL=signals.js.map",
36
- "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js';\nexport { signals };\nconst processOk = (process) => !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function';\nconst kExitEmitter = Symbol.for('signal-exit emitter');\nconst global = globalThis;\nconst ObjectDefineProperty = Object.defineProperty.bind(Object);\n// teeny special purpose ee\nclass Emitter {\n emitted = {\n afterExit: false,\n exit: false,\n };\n listeners = {\n afterExit: [],\n exit: [],\n };\n count = 0;\n id = Math.random();\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter];\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n }\n on(ev, fn) {\n this.listeners[ev].push(fn);\n }\n removeListener(ev, fn) {\n const list = this.listeners[ev];\n const i = list.indexOf(fn);\n /* c8 ignore start */\n if (i === -1) {\n return;\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0;\n }\n else {\n list.splice(i, 1);\n }\n }\n emit(ev, code, signal) {\n if (this.emitted[ev]) {\n return false;\n }\n this.emitted[ev] = true;\n let ret = false;\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret;\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret;\n }\n return ret;\n }\n}\nclass SignalExitBase {\n}\nconst signalExitWrap = (handler) => {\n return {\n onExit(cb, opts) {\n return handler.onExit(cb, opts);\n },\n load() {\n return handler.load();\n },\n unload() {\n return handler.unload();\n },\n };\n};\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => { };\n }\n load() { }\n unload() { }\n}\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP';\n /* c8 ignore stop */\n #emitter = new Emitter();\n #process;\n #originalProcessEmit;\n #originalProcessReallyExit;\n #sigListeners = {};\n #loaded = false;\n constructor(process) {\n super();\n this.#process = process;\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {};\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig);\n let { count } = this.#emitter;\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process;\n if (typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number') {\n count += p.__signal_exit_emitter__.count;\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload();\n const ret = this.#emitter.emit('exit', null, sig);\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig;\n if (!ret)\n process.kill(process.pid, s);\n /* c8 ignore stop */\n }\n };\n }\n this.#originalProcessReallyExit = process.reallyExit;\n this.#originalProcessEmit = process.emit;\n }\n onExit(cb, opts) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => { };\n }\n /* c8 ignore stop */\n if (this.#loaded === false) {\n this.load();\n }\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit';\n this.#emitter.on(ev, cb);\n return () => {\n this.#emitter.removeListener(ev, cb);\n if (this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0) {\n this.unload();\n }\n };\n }\n load() {\n if (this.#loaded) {\n return;\n }\n this.#loaded = true;\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1;\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig];\n if (fn)\n this.#process.on(sig, fn);\n }\n catch (_) { }\n }\n this.#process.emit = (ev, ...a) => {\n return this.#processEmit(ev, ...a);\n };\n this.#process.reallyExit = (code) => {\n return this.#processReallyExit(code);\n };\n }\n unload() {\n if (!this.#loaded) {\n return;\n }\n this.#loaded = false;\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig];\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig);\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener);\n /* c8 ignore start */\n }\n catch (_) { }\n /* c8 ignore stop */\n });\n this.#process.emit = this.#originalProcessEmit;\n this.#process.reallyExit = this.#originalProcessReallyExit;\n this.#emitter.count -= 1;\n }\n #processReallyExit(code) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0;\n }\n this.#process.exitCode = code || 0;\n /* c8 ignore stop */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);\n }\n #processEmit(ev, ...args) {\n const og = this.#originalProcessEmit;\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0];\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args);\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null);\n /* c8 ignore stop */\n return ret;\n }\n else {\n return og.call(this.#process, ev, ...args);\n }\n }\n}\nconst process = globalThis.process;\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const { \n/**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\nonExit, \n/**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nload, \n/**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\nunload, } = signalExitWrap(processOk(process) ? new SignalExit(process) : new SignalExitFallback());\n//# sourceMappingURL=index.js.map",
37
- "import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n",
38
- "const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n",
39
- "// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n",
40
- "import { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = styleText('dim', Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n",
41
- "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport { styleText } from 'node:util';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => styleText('dim', `- ${text}`),\n description: (text) => styleText('cyan', text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)\n .join(styleText('dim', ' • ')),\n },\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice !== 'object' || choice === null || !('value' in choice)) {\n // It's a raw value (string, number, etc.)\n const name = String(choice);\n return {\n value: choice,\n name,\n short: name,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isSelectable);\n const last = items.findLastIndex(isSelectable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (isEnterKey(key)) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isSelectable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n const helpLine = theme.style.keysHelpTip([\n ['↑↓', 'navigate'],\n ['⏎', 'select'],\n ]);\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n",
42
- "import { select } from '@inquirer/prompts';\nimport bytes from 'bytes';\nimport { getOllamaUrl, getClaudeExtraArgs } from './config';\nimport { info, success, warn, dim, magenta, cyan, loading } from './output';\nimport { spawn } from './spawn';\nimport type { OllamaModel, OllamaTagsResponse, OllamaPsResponse, RunningModel } from './types';\n\n// =============================================================================\n// Model Fetching\n// =============================================================================\n\n/**\n * Fetch available models from Ollama API\n */\nexport async function fetchOllamaModels(): Promise<OllamaModel[]> {\n const ollamaUrl = getOllamaUrl();\n const response = await fetch(`${ollamaUrl}/api/tags`);\n if (!response.ok) {\n throw new Error(`Failed to fetch models: ${response.statusText}`);\n }\n const data = (await response.json()) as OllamaTagsResponse;\n return data.models ?? [];\n}\n\n/**\n * Fetch currently running/loaded models from Ollama API\n */\nexport async function fetchRunningModels(): Promise<RunningModel[]> {\n const ollamaUrl = getOllamaUrl();\n try {\n const response = await fetch(`${ollamaUrl}/api/ps`, {\n signal: AbortSignal.timeout(5000)\n });\n\n if (!response.ok) {\n return [];\n }\n\n const data = (await response.json()) as OllamaPsResponse;\n return data.models ?? [];\n } catch (error) {\n return [];\n }\n}\n\n/**\n * Check if a specific model is currently loaded in memory\n */\nexport async function isModelLoaded(modelName: string): Promise<boolean> {\n const runningModels = await fetchRunningModels();\n\n // Check for exact match or partial match (e.g., \"qwen3-coder:30b\" matches \"qwen3-coder:30b\")\n return runningModels.some(\n (m) =>\n m.model === modelName ||\n m.name === modelName ||\n m.model.startsWith(modelName + ':') ||\n modelName.startsWith(m.model)\n );\n}\n\n/**\n * Load a model into memory with specified keep_alive duration\n * Sends an empty prompt to trigger model loading\n */\nexport async function loadModel(modelName: string, keepAlive: string = '10m'): Promise<void> {\n const ollamaUrl = getOllamaUrl();\n\n const response = await fetch(`${ollamaUrl}/api/generate`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n model: modelName,\n prompt: '',\n stream: false,\n keep_alive: keepAlive\n })\n });\n\n if (!response.ok) {\n throw new Error(`Failed to load model: ${response.statusText}`);\n }\n\n // Wait for response to ensure model is loaded\n await response.json();\n}\n\n/**\n * Ensure a model is loaded, loading it if necessary\n * Shows progress while loading\n */\nexport async function ensureModelLoaded(modelName: string): Promise<void> {\n const isLoaded = await isModelLoaded(modelName);\n\n if (isLoaded) {\n console.log(dim(` Model ${magenta(modelName)} is already loaded`));\n return;\n }\n\n console.log(info(`Loading model ${magenta(modelName)}...`));\n console.log(dim(' This may take a moment on first run'));\n\n try {\n await loadModel(modelName, '10m');\n console.log(success(`Model ${magenta(modelName)} loaded (keep_alive: 10m)`));\n } catch (error) {\n console.log(warn(`Could not pre-load model (will load on first request)`));\n console.log(dim(` ${error instanceof Error ? error.message : 'Unknown error'}`));\n }\n}\n\n// =============================================================================\n// Model Selection\n// =============================================================================\n\n/**\n * Interactive model selection prompt\n */\nexport async function selectModelInteractively(): Promise<string> {\n const ollamaUrl = getOllamaUrl();\n let models: OllamaModel[];\n\n try {\n models = await fetchOllamaModels();\n } catch (error) {\n console.log(warn(`Could not connect to Ollama at ${ollamaUrl}`));\n console.log(dim(' Make sure Ollama is running: loclaude docker-up'));\n process.exit(1);\n }\n\n if (models.length === 0) {\n console.log(warn('No models found in Ollama.'));\n console.log(dim(' Pull a model first: loclaude models-pull <model-name>'));\n process.exit(1);\n }\n\n // Fetch running models to show which are loaded\n const runningModels = await fetchRunningModels();\n const loadedModelNames = new Set(runningModels.map((m) => m.model));\n\n const selected = await select({\n message: 'Select a model',\n choices: models.map((model) => {\n const isLoaded = loadedModelNames.has(model.name);\n const loadedIndicator = isLoaded ? ' [loaded]' : '';\n return {\n name: `${model.name} (${bytes(model.size)})${loadedIndicator}`,\n value: model.name\n };\n })\n });\n\n return selected;\n}\n\n// =============================================================================\n// Claude Launcher\n// =============================================================================\n\n/**\n * Launch Claude with Ollama configuration\n */\nexport async function launchClaude(model: string, passthroughArgs: string[]) {\n const ollamaUrl = getOllamaUrl();\n const extraArgs = getClaudeExtraArgs();\n\n console.log('');\n console.log(cyan('Launching Claude Code with Ollama'));\n console.log(dim(` Model: ${magenta(model)}`));\n console.log(dim(` API: ${ollamaUrl}`));\n console.log('');\n\n // Ensure the model is loaded before launching Claude\n await ensureModelLoaded(model);\n console.log('');\n\n const env: Record<string, string | undefined> = {\n ...process.env,\n ANTHROPIC_AUTH_TOKEN: 'ollama',\n ANTHROPIC_BASE_URL: ollamaUrl\n };\n\n const claudeArgs = ['claude', '--model', model, ...extraArgs, ...passthroughArgs];\n const exitCode = await spawn(claudeArgs, { env });\n process.exit(exitCode);\n}\n",
43
- "/**\n * CLI Output Utilities\n *\n * Provides colorful, themed output for the loclaude CLI.\n * Uses picocolors for terminal colors.\n *\n * Color Palette:\n * - Brand/Primary: cyan - Headers, branding, info\n * - Accent: magenta - Highlights, interactive elements\n * - Success: green - Confirmations, completed tasks\n * - Warning: yellow - Cautions, non-critical issues\n * - Error: red - Failures, critical issues\n * - Dim: gray - Secondary info, hints\n */\n\nimport pc from 'picocolors';\n\n// =============================================================================\n// Brand Elements\n// =============================================================================\n\n/** Brand-colored bold text for headers and branding */\nexport const brand = (text: string) => pc.cyan(pc.bold(text));\n\n/** Accent color for highlights */\nexport const accent = (text: string) => pc.magenta(text);\n\n/** Bright cyan for emphasis */\nexport const highlight = (text: string) => pc.cyan(text);\n\n// =============================================================================\n// Status Indicators\n// =============================================================================\n\n/** Success message with checkmark */\nexport const success = (text: string) => `${pc.green('✓')} ${text}`;\n\n/** Warning message with caution symbol */\nexport const warn = (text: string) => `${pc.yellow('⚠')} ${text}`;\n\n/** Error message with X symbol */\nexport const error = (text: string) => `${pc.red('✗')} ${text}`;\n\n/** Info message with info symbol */\nexport const info = (text: string) => `${pc.cyan('ℹ')} ${text}`;\n\n// =============================================================================\n// Text Formatting\n// =============================================================================\n\n/** Dimmed/muted text for secondary information */\nexport const dim = (text: string) => pc.dim(text);\n\n/** Bold text for emphasis */\nexport const bold = (text: string) => pc.bold(text);\n\n/** Underlined text */\nexport const underline = (text: string) => pc.underline(text);\n\n/** Green colored text */\nexport const green = (text: string) => pc.green(text);\n\n/** Yellow colored text */\nexport const yellow = (text: string) => pc.yellow(text);\n\n/** Red colored text */\nexport const red = (text: string) => pc.red(text);\n\n/** Cyan colored text */\nexport const cyan = (text: string) => pc.cyan(text);\n\n/** Magenta colored text */\nexport const magenta = (text: string) => pc.magenta(text);\n\n// =============================================================================\n// Composite Helpers\n// =============================================================================\n\n/** Print a branded header with underline */\nexport function header(text: string): void {\n console.log('');\n console.log(brand(` ${text}`));\n console.log(pc.dim(' ' + '─'.repeat(text.length + 2)));\n}\n\n/** Print a section title */\nexport function section(title: string): void {\n console.log('');\n console.log(pc.bold(pc.cyan(title)));\n}\n\n/** Print a labeled value */\nexport function labelValue(label: string, value: string): void {\n console.log(` ${pc.dim(label + ':')} ${value}`);\n}\n\n/**\n * Format a status line with icon\n *\n * @example\n * statusLine('ok', 'Docker', 'Installed', 'v24.0.0')\n * // ✓ Docker: Installed (v24.0.0)\n */\nexport function statusLine(\n status: 'ok' | 'warning' | 'error',\n name: string,\n message: string,\n extra?: string\n): string {\n const icons = { ok: '✓', warning: '⚠', error: '✗' };\n const colors = { ok: pc.green, warning: pc.yellow, error: pc.red };\n\n let line = `${colors[status](icons[status])} ${name}: ${message}`;\n if (extra) {\n line += ` ${pc.dim(`(${extra})`)}`;\n }\n return line;\n}\n\n/**\n * Print a hint/suggestion with arrow\n */\nexport function hint(text: string): void {\n console.log(` ${pc.dim('→')} ${pc.dim(text)}`);\n}\n\n/**\n * Print the loclaude banner\n */\nexport function banner(): void {\n console.log('');\n console.log(\n ` ${pc.cyan(pc.bold('loclaude'))} ${pc.dim('─')} ${pc.dim('Run Claude Code with local Ollama')}`\n );\n console.log('');\n}\n\n/**\n * Print a spinner-style loading message\n */\nexport function loading(text: string): void {\n console.log(`${pc.cyan('◐')} ${text}...`);\n}\n\n/**\n * Print a completion message\n */\nexport function done(text: string): void {\n console.log(`${pc.green('●')} ${text}`);\n}\n\n/**\n * Print a table row with consistent formatting\n */\nexport function tableRow(columns: string[], widths: number[]): string {\n return columns\n .map((col, i) => {\n const width = widths[i] || col.length;\n return col.padEnd(width);\n })\n .join(' ');\n}\n\n/**\n * Print a table header with underline\n */\nexport function tableHeader(columns: string[], widths: number[]): void {\n const headerRow = tableRow(\n columns.map((c) => pc.bold(c)),\n widths\n );\n const underlineRow = widths.map((w) => '─'.repeat(w)).join(' ');\n console.log(headerRow);\n console.log(pc.dim(underlineRow));\n}\n\n/**\n * Format bytes with color based on size\n */\nexport function coloredSize(sizeStr: string): string {\n // Parse the size string to determine color\n const num = parseFloat(sizeStr);\n if (sizeStr.includes('GB') && num > 10) {\n return pc.yellow(sizeStr); // Large models in yellow\n }\n return pc.dim(sizeStr);\n}\n\n/**\n * Format a URL for display\n */\nexport function url(urlStr: string): string {\n return pc.underline(pc.cyan(urlStr));\n}\n\n/**\n * Format a command for display\n */\nexport function cmd(command: string): string {\n return pc.cyan(command);\n}\n\n/**\n * Format a file path for display\n */\nexport function file(filePath: string): string {\n return pc.magenta(filePath);\n}\n\n// =============================================================================\n// Summary Output\n// =============================================================================\n\n/**\n * Print a success summary box\n */\nexport function successBox(title: string, lines: string[]): void {\n console.log('');\n console.log(`${pc.green('┌')} ${pc.green(pc.bold(title))}`);\n for (const line of lines) {\n console.log(`${pc.green('│')} ${line}`);\n }\n console.log(pc.green('└' + '─'.repeat(40)));\n}\n\n/**\n * Print an error summary box\n */\nexport function errorBox(title: string, lines: string[]): void {\n console.log('');\n console.log(`${pc.red('┌')} ${pc.red(pc.bold(title))}`);\n for (const line of lines) {\n console.log(`${pc.red('│')} ${line}`);\n }\n console.log(pc.red('└' + '─'.repeat(40)));\n}\n",
44
- "/**\n * Cross-runtime spawn utilities\n * Works with both Bun and Node.js\n */\n\nexport interface SpawnOptions {\n env?: Record<string, string | undefined>;\n cwd?: string;\n stdin?: 'inherit' | 'pipe' | 'ignore';\n stdout?: 'inherit' | 'pipe' | 'ignore';\n stderr?: 'inherit' | 'pipe' | 'ignore';\n}\n\nexport interface SpawnResult {\n exitCode: number;\n stdout?: string;\n stderr?: string;\n}\n\n/**\n * Spawn a process and wait for it to complete\n * Returns exit code (inherits stdio by default)\n */\nexport async function spawn(cmd: string[], opts: SpawnOptions = {}): Promise<number> {\n const command = cmd[0];\n const args = cmd.slice(1);\n\n if (command === undefined) {\n throw new Error('No command provided');\n }\n\n if (typeof Bun !== 'undefined') {\n const proc = Bun.spawn(cmd, {\n env: opts.env ?? process.env,\n cwd: opts.cwd ?? process.cwd(),\n stdin: opts.stdin ?? 'inherit',\n stdout: opts.stdout ?? 'inherit',\n stderr: opts.stderr ?? 'inherit'\n });\n return proc.exited;\n } else {\n const { spawn: nodeSpawn } = await import('child_process');\n return new Promise((resolve) => {\n const proc = nodeSpawn(command, args, {\n env: opts.env as NodeJS.ProcessEnv,\n cwd: opts.cwd,\n stdio: [opts.stdin ?? 'inherit', opts.stdout ?? 'inherit', opts.stderr ?? 'inherit']\n });\n proc.on('close', (code) => resolve(code ?? 1));\n });\n }\n}\n\n/**\n * Spawn a process and capture its output\n * Returns stdout/stderr as strings\n */\nexport async function spawnCapture(\n cmd: string[],\n opts: Omit<SpawnOptions, 'stdout' | 'stderr'> = {}\n): Promise<SpawnResult> {\n const command = cmd[0];\n const args = cmd.slice(1);\n\n if (command === undefined) {\n throw new Error('No command provided');\n }\n\n if (typeof Bun !== 'undefined') {\n const proc = Bun.spawn(cmd, {\n env: opts.env ?? process.env,\n cwd: opts.cwd,\n stdin: opts.stdin ?? 'ignore',\n stdout: 'pipe',\n stderr: 'pipe'\n });\n\n const [stdout, stderr, exitCode] = await Promise.all([\n new Response(proc.stdout).text(),\n new Response(proc.stderr).text(),\n proc.exited\n ]);\n\n return { exitCode, stdout, stderr };\n } else {\n const { spawn: nodeSpawn } = await import('child_process');\n return new Promise((resolve) => {\n const proc = nodeSpawn(command, args, {\n env: opts.env as NodeJS.ProcessEnv,\n cwd: opts.cwd,\n stdio: ['ignore', 'pipe', 'pipe']\n });\n\n let stdout = '';\n let stderr = '';\n\n proc.stdout?.on('data', (data) => {\n stdout += data.toString();\n });\n proc.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n proc.on('close', (code) => {\n resolve({ exitCode: code ?? 1, stdout, stderr });\n });\n });\n }\n}\n\n/**\n * Check if a command exists in PATH\n */\nexport async function commandExists(cmd: string): Promise<boolean> {\n try {\n const result = await spawnCapture(process.platform === 'win32' ? ['where', cmd] : ['which', cmd]);\n return result.exitCode === 0;\n } catch {\n return false;\n }\n}\n\n/**\n * Get the version of a command (assumes --version flag)\n */\nexport async function getCommandVersion(cmd: string): Promise<string | null> {\n try {\n const result = await spawnCapture([cmd, '--version']);\n if (result.exitCode === 0 && result.stdout) {\n return result.stdout.trim().split('\\n')[0] ?? null;\n }\n return null;\n } catch {\n return null;\n }\n}\n",
45
- "/**\n * init command - Scaffold docker-compose.yml and config\n */\n\nimport { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { header, success, warn, info, dim, cyan, green, url, cmd, file, successBox } from '../output';\nimport { hasNvidiaGpu } from './doctor';\n\n// =============================================================================\n// Docker Compose Templates\n// =============================================================================\n\n/**\n * GPU-enabled Docker Compose template with NVIDIA runtime\n * Includes comprehensive documentation for each setting\n */\nconst DOCKER_COMPOSE_TEMPLATE_GPU = `# =============================================================================\n# LOCLAUDE DOCKER COMPOSE - GPU MODE\n# =============================================================================\n# This configuration runs Ollama with NVIDIA GPU acceleration for fast inference.\n# Generated by: loclaude init\n#\n# Prerequisites:\n# - NVIDIA GPU with CUDA support\n# - NVIDIA drivers installed on host\n# - NVIDIA Container Toolkit: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit\n#\n# Quick test for GPU support:\n# docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi\n#\n# =============================================================================\n\nservices:\n # ===========================================================================\n # OLLAMA - Local LLM Inference Server\n # ===========================================================================\n # Ollama provides the AI backend that Claude Code connects to.\n # It runs large language models locally on your hardware.\n #\n # API Documentation: https://github.com/ollama/ollama/blob/main/docs/api.md\n # Model Library: https://ollama.com/library\n # ===========================================================================\n ollama:\n # Official Ollama image - 'latest' ensures newest features and model support\n image: ollama/ollama:latest\n\n # Fixed container name for easy CLI access:\n # docker exec ollama ollama list\n # docker logs ollama\n container_name: ollama\n\n # NVIDIA Container Runtime - Required for GPU access\n # This makes CUDA libraries available inside the container\n runtime: nvidia\n\n environment:\n # ---------------------------------------------------------------------------\n # GPU Configuration\n # ---------------------------------------------------------------------------\n # NVIDIA_VISIBLE_DEVICES: Which GPUs to expose to the container\n # - 'all': Use all available GPUs (recommended for most setups)\n # - '0': Use only GPU 0\n # - '0,1': Use GPUs 0 and 1\n - NVIDIA_VISIBLE_DEVICES=all\n\n # NVIDIA_DRIVER_CAPABILITIES: What GPU features to enable\n # - 'compute': CUDA compute (required for inference)\n # - 'utility': nvidia-smi and other tools\n - NVIDIA_DRIVER_CAPABILITIES=compute,utility\n\n # ---------------------------------------------------------------------------\n # Ollama Configuration (Optional)\n # ---------------------------------------------------------------------------\n # Uncomment these to customize Ollama behavior:\n\n # Maximum number of models loaded in memory simultaneously\n # Lower this if you're running out of VRAM\n # - OLLAMA_MAX_LOADED_MODELS=1\n\n # Maximum parallel inference requests per model\n # Higher values use more VRAM but handle more concurrent requests\n # - OLLAMA_NUM_PARALLEL=1\n\n # Enable debug logging for troubleshooting\n # - OLLAMA_DEBUG=1\n\n # Custom model storage location (inside container)\n # - OLLAMA_MODELS=/root/.ollama\n\n volumes:\n # ---------------------------------------------------------------------------\n # Model Storage\n # ---------------------------------------------------------------------------\n # Maps ./models on your host to /root/.ollama in the container\n # This persists downloaded models across container restarts\n #\n # Disk space requirements (approximate):\n # - 7B model: ~4GB\n # - 13B model: ~8GB\n # - 30B model: ~16GB\n # - 70B model: ~40GB\n - ./models:/root/.ollama\n\n ports:\n # Ollama API port - access at http://localhost:11434\n # Used by Claude Code and other Ollama clients\n - \"11434:11434\"\n\n # Restart policy - keeps Ollama running unless manually stopped\n restart: unless-stopped\n\n healthcheck:\n # Verify Ollama is responsive by listing models\n test: [\"CMD\", \"ollama\", \"list\"]\n interval: 300s # Check every 5 minutes\n timeout: 2s # Fail if no response in 2 seconds\n retries: 3 # Mark unhealthy after 3 consecutive failures\n start_period: 40s # Grace period for initial model loading\n\n deploy:\n resources:\n reservations:\n devices:\n # Request GPU access from Docker\n - driver: nvidia\n count: all # Use all available GPUs\n capabilities: [gpu] # Request GPU compute capability\n\n # ===========================================================================\n # OPEN WEBUI - Chat Interface (Optional)\n # ===========================================================================\n # Open WebUI provides a ChatGPT-like interface for your local models.\n # Access at http://localhost:3000 after starting containers.\n #\n # Features:\n # - Multi-model chat interface\n # - Conversation history\n # - Model management UI\n # - RAG/document upload support\n #\n # Documentation: https://docs.openwebui.com/\n # ===========================================================================\n open-webui:\n # CUDA-enabled image for GPU-accelerated features (embeddings, etc.)\n # Change to :main if you don't need GPU features in the UI\n image: ghcr.io/open-webui/open-webui:cuda\n\n container_name: open-webui\n\n ports:\n # Web UI port - access at http://localhost:3000\n - \"3000:8080\"\n\n environment:\n # Tell Open WebUI where to find Ollama\n # Uses Docker internal networking (service name as hostname)\n - OLLAMA_BASE_URL=http://ollama:11434\n\n # Wait for Ollama to be ready before starting\n depends_on:\n - ollama\n\n restart: unless-stopped\n\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 60s\n\n volumes:\n # Persistent storage for conversations, settings, and user data\n - open-webui:/app/backend/data\n\n deploy:\n resources:\n reservations:\n devices:\n - driver: nvidia\n count: all\n capabilities: [gpu]\n\n# =============================================================================\n# VOLUMES\n# =============================================================================\n# Named volumes for persistent data that survives container recreation\nvolumes:\n open-webui:\n # Open WebUI data: conversations, user settings, uploads\n # Located at /var/lib/docker/volumes/open-webui/_data on host\n`;\n\n/**\n * CPU-only Docker Compose template without NVIDIA dependencies\n * For systems without NVIDIA GPUs or container toolkit\n */\nconst DOCKER_COMPOSE_TEMPLATE_CPU = `# =============================================================================\n# LOCLAUDE DOCKER COMPOSE - CPU MODE\n# =============================================================================\n# This configuration runs Ollama in CPU-only mode.\n# Inference will be slower than GPU mode but works on any system.\n# Generated by: loclaude init --no-gpu\n#\n# Performance notes:\n# - 7B models: ~10-20 tokens/sec on modern CPUs\n# - Larger models will be significantly slower\n# - Consider using quantized models (Q4_K_M, Q5_K_M) for better performance\n#\n# Recommended CPU-optimized models:\n# - llama3.2:3b (fast, good for simple tasks)\n# - qwen2.5-coder:7b (coding tasks)\n# - gemma2:9b (general purpose)\n#\n# =============================================================================\n\nservices:\n # ===========================================================================\n # OLLAMA - Local LLM Inference Server (CPU Mode)\n # ===========================================================================\n # Ollama provides the AI backend that Claude Code connects to.\n # Running in CPU mode - no GPU acceleration.\n #\n # API Documentation: https://github.com/ollama/ollama/blob/main/docs/api.md\n # Model Library: https://ollama.com/library\n # ===========================================================================\n ollama:\n # Official Ollama image - works for both CPU and GPU\n image: ollama/ollama:latest\n\n # Fixed container name for easy CLI access\n container_name: ollama\n\n # NOTE: No 'runtime: nvidia' - running in CPU mode\n\n environment:\n # ---------------------------------------------------------------------------\n # Ollama Configuration (Optional)\n # ---------------------------------------------------------------------------\n # Uncomment these to customize Ollama behavior:\n\n # Maximum number of models loaded in memory simultaneously\n # CPU mode uses system RAM instead of VRAM\n # - OLLAMA_MAX_LOADED_MODELS=1\n\n # Number of CPU threads to use (default: auto-detect)\n # - OLLAMA_NUM_THREADS=8\n\n # Enable debug logging for troubleshooting\n # - OLLAMA_DEBUG=1\n\n volumes:\n # ---------------------------------------------------------------------------\n # Model Storage\n # ---------------------------------------------------------------------------\n # Maps ./models on your host to /root/.ollama in the container\n # This persists downloaded models across container restarts\n - ./models:/root/.ollama\n\n ports:\n # Ollama API port - access at http://localhost:11434\n - \"11434:11434\"\n\n restart: unless-stopped\n\n healthcheck:\n test: [\"CMD\", \"ollama\", \"list\"]\n interval: 300s\n timeout: 2s\n retries: 3\n start_period: 40s\n\n # CPU resource limits (optional - uncomment to constrain)\n # deploy:\n # resources:\n # limits:\n # cpus: '4' # Limit to 4 CPU cores\n # memory: 16G # Limit to 16GB RAM\n # reservations:\n # cpus: '2' # Reserve at least 2 cores\n # memory: 8G # Reserve at least 8GB RAM\n\n # ===========================================================================\n # OPEN WEBUI - Chat Interface (Optional)\n # ===========================================================================\n # Open WebUI provides a ChatGPT-like interface for your local models.\n # Access at http://localhost:3000 after starting containers.\n #\n # Documentation: https://docs.openwebui.com/\n # ===========================================================================\n open-webui:\n # Standard image (no CUDA) - smaller download, CPU-only features\n image: ghcr.io/open-webui/open-webui:main\n\n container_name: open-webui\n\n ports:\n - \"3000:8080\"\n\n environment:\n - OLLAMA_BASE_URL=http://ollama:11434\n\n depends_on:\n - ollama\n\n restart: unless-stopped\n\n healthcheck:\n test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/health\"]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 60s\n\n volumes:\n - open-webui:/app/backend/data\n\n# =============================================================================\n# VOLUMES\n# =============================================================================\nvolumes:\n open-webui:\n`;\n\n// =============================================================================\n// Configuration Templates\n// =============================================================================\n\n/**\n * Generate config template based on GPU mode\n */\nfunction getConfigTemplate(gpu: boolean): string {\n return `{\n \"ollama\": {\n \"url\": \"http://localhost:11434\",\n \"defaultModel\": \"${gpu ? 'qwen3-coder:30b' : 'qwen2.5-coder:7b'}\"\n },\n \"docker\": {\n \"composeFile\": \"./docker-compose.yml\",\n \"gpu\": ${gpu}\n }\n}\n`;\n}\n\n// .gitignore template for models directory\nconst GITIGNORE_TEMPLATE = `# Ollama models (large binary files)\n# These are downloaded by Ollama and can be re-pulled anytime\nmodels/\n`;\n\n// mise.toml template with comprehensive task definitions\nconst MISE_TOML_TEMPLATE = `# =============================================================================\n# MISE TASK RUNNER CONFIGURATION\n# =============================================================================\n# Mise is a task runner that provides convenient shortcuts for common operations.\n# Run 'mise tasks' to see all available tasks.\n#\n# Documentation: https://mise.jdx.dev/\n# Install: curl https://mise.jdx.dev/install.sh | sh\n# =============================================================================\n\n[tasks]\n\n# =============================================================================\n# Docker Management\n# =============================================================================\n# Commands for managing the Ollama and Open WebUI containers\n\n[tasks.up]\ndescription = \"Start Ollama and Open WebUI containers\"\nrun = \"loclaude docker-up\"\n\n[tasks.down]\ndescription = \"Stop all containers\"\nrun = \"loclaude docker-down\"\n\n[tasks.restart]\ndescription = \"Restart all containers\"\nrun = \"loclaude docker-restart\"\n\n[tasks.status]\ndescription = \"Show container status\"\nrun = \"loclaude docker-status\"\n\n[tasks.logs]\ndescription = \"Follow container logs\"\nrun = \"loclaude docker-logs --follow\"\n\n# =============================================================================\n# Model Management\n# =============================================================================\n# Commands for managing Ollama models (download, remove, list)\n\n[tasks.models]\ndescription = \"List installed models\"\nrun = \"loclaude models\"\n\n[tasks.pull]\ndescription = \"Pull a model (usage: mise run pull <model-name>)\"\nrun = \"loclaude models-pull {{arg(name='model')}}\"\n\n[tasks.\"pull:recommended\"]\ndescription = \"Pull the recommended coding model\"\nrun = \"loclaude models-pull qwen3-coder:30b\"\n\n# =============================================================================\n# Claude Code\n# =============================================================================\n# Commands for running Claude Code with local Ollama\n\n[tasks.claude]\ndescription = \"Run Claude Code with local Ollama\"\nrun = \"loclaude run\"\n\n[tasks.\"claude:model\"]\ndescription = \"Run Claude with specific model (usage: mise run claude:model <model>)\"\nrun = \"loclaude run -m {{arg(name='model')}}\"\n\n# =============================================================================\n# Diagnostics\n# =============================================================================\n# Commands for checking system health and troubleshooting\n\n[tasks.doctor]\ndescription = \"Check system requirements\"\nrun = \"loclaude doctor\"\n\n[tasks.gpu]\ndescription = \"Check GPU status (requires NVIDIA GPU)\"\nrun = \"docker exec ollama nvidia-smi\"\n\n[tasks.config]\ndescription = \"Show current configuration\"\nrun = \"loclaude config\"\n`;\n\n// README.md template with comprehensive documentation\nconst README_TEMPLATE = `# Project Name\n\n> Powered by [loclaude](https://github.com/nicholasgalante1997/docker-ollama) - Run Claude Code with local Ollama LLMs\n\n## Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/) with Docker Compose v2\n- [mise](https://mise.jdx.dev/) task runner (recommended)\n- [loclaude](https://www.npmjs.com/package/loclaude) CLI (\\`npm install -g loclaude\\`)\n\n### For GPU Mode (Recommended)\n\n- [NVIDIA GPU](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) with CUDA support\n- NVIDIA drivers installed on host\n- [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)\n\n## Quick Start\n\n\\`\\`\\`bash\n# Start the LLM backend (Ollama + Open WebUI)\nmise run up\n\n# Pull a model (adjust based on your hardware)\nmise run pull qwen3-coder:30b # GPU: 30B model (~16GB VRAM)\nmise run pull qwen2.5-coder:7b # CPU: 7B model (faster)\n\n# Run Claude Code with local LLM\nmise run claude\n\\`\\`\\`\n\n## Available Commands\n\nRun \\`mise tasks\\` to see all available commands.\n\n| Command | Description |\n|---------|-------------|\n| \\`mise run up\\` | Start Ollama and Open WebUI containers |\n| \\`mise run down\\` | Stop all containers |\n| \\`mise run status\\` | Show container status |\n| \\`mise run logs\\` | Follow container logs |\n| \\`mise run models\\` | List installed models |\n| \\`mise run pull <model>\\` | Pull a model from Ollama registry |\n| \\`mise run claude\\` | Run Claude Code with model selection |\n| \\`mise run claude:model <model>\\` | Run Claude with specific model |\n| \\`mise run doctor\\` | Check system requirements |\n| \\`mise run gpu\\` | Check GPU status |\n\n## Service URLs\n\n| Service | URL | Description |\n|---------|-----|-------------|\n| Ollama API | http://localhost:11434 | LLM inference API |\n| Open WebUI | http://localhost:3000 | Chat interface |\n\n## Project Structure\n\n\\`\\`\\`\n.\n├── .claude/\n│ └── CLAUDE.md # Claude Code project instructions\n├── .loclaude/\n│ └── config.json # Loclaude configuration\n├── models/ # Ollama model storage (gitignored)\n├── docker-compose.yml # Container definitions\n├── mise.toml # Task runner configuration\n└── README.md\n\\`\\`\\`\n\n## Configuration\n\n### Loclaude Config (\\`.loclaude/config.json\\`)\n\n\\`\\`\\`json\n{\n \"ollama\": {\n \"url\": \"http://localhost:11434\",\n \"defaultModel\": \"qwen3-coder:30b\"\n },\n \"docker\": {\n \"composeFile\": \"./docker-compose.yml\",\n \"gpu\": true\n }\n}\n\\`\\`\\`\n\n### Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| \\`OLLAMA_URL\\` | Ollama API endpoint | \\`http://localhost:11434\\` |\n| \\`OLLAMA_MODEL\\` | Default model name | \\`qwen3-coder:30b\\` |\n| \\`LOCLAUDE_GPU\\` | Enable GPU mode | \\`true\\` |\n\n## Recommended Models\n\n### For GPU (NVIDIA with 16GB+ VRAM)\n\n| Model | Size | Use Case |\n|-------|------|----------|\n| \\`qwen3-coder:30b\\` | ~16GB | Best coding performance |\n| \\`gpt-oss:20b\\` | ~12GB | General purpose |\n| \\`glm-4.7:cloud\\` | Cloud | No local storage needed |\n\n### For CPU or Limited VRAM\n\n| Model | Size | Use Case |\n|-------|------|----------|\n| \\`qwen2.5-coder:7b\\` | ~4GB | Coding on CPU |\n| \\`llama3.2:3b\\` | ~2GB | Fast, simple tasks |\n| \\`gemma2:9b\\` | ~5GB | General purpose |\n\n## Troubleshooting\n\n### Check System Requirements\n\n\\`\\`\\`bash\nmise run doctor\n\\`\\`\\`\n\n### View Container Logs\n\n\\`\\`\\`bash\nmise run logs\n\\`\\`\\`\n\n### Restart Containers\n\n\\`\\`\\`bash\nmise run down && mise run up\n\\`\\`\\`\n\n### GPU Not Detected\n\n1. Verify NVIDIA drivers: \\`nvidia-smi\\`\n2. Check Docker GPU access: \\`docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi\\`\n3. Install NVIDIA Container Toolkit if missing\n\n## License\n\nMIT\n`;\n\n// .claude/CLAUDE.md template\nconst CLAUDE_MD_TEMPLATE = `# Claude Code Instructions\n\nProject-specific instructions for Claude Code.\n\n## Project Overview\n\nThis project uses [loclaude](https://github.com/nicholasgalante1997/docker-ollama) to run Claude Code with local Ollama LLMs.\n\n## Quick Reference\n\n\\`\\`\\`bash\n# Start the LLM backend\nmise run up\n\n# Run Claude Code\nmise run claude\n\n# Check system status\nmise run doctor\n\\`\\`\\`\n\n## Available Commands\n\n| Command | Description |\n|---------|-------------|\n| \\`mise run up\\` | Start Ollama + Open WebUI containers |\n| \\`mise run down\\` | Stop containers |\n| \\`mise run claude\\` | Run Claude Code with model selection |\n| \\`mise run models\\` | List installed models |\n| \\`mise run pull <model>\\` | Pull a new model |\n| \\`mise run doctor\\` | Check prerequisites |\n\n## Service URLs\n\n- **Ollama API:** http://localhost:11434\n- **Open WebUI:** http://localhost:3000\n\n## Configuration\n\n- **Docker:** \\`docker-compose.yml\\`\n- **Loclaude:** \\`.loclaude/config.json\\`\n- **Tasks:** \\`mise.toml\\`\n\n## Conventions\n\n<!-- Add project-specific conventions here -->\n\n## Do Not\n\n- Commit the \\`models/\\` directory (contains large model files)\n`;\n\n// =============================================================================\n// Init Command\n// =============================================================================\n\nexport interface InitOptions {\n force?: boolean;\n noWebui?: boolean;\n gpu?: boolean;\n noGpu?: boolean;\n}\n\nexport async function init(options: InitOptions = {}): Promise<void> {\n const cwd = process.cwd();\n const composePath = join(cwd, 'docker-compose.yml');\n const configDir = join(cwd, '.loclaude');\n const configPath = join(configDir, 'config.json');\n const modelsDir = join(cwd, 'models');\n const gitignorePath = join(cwd, '.gitignore');\n const miseTomlPath = join(cwd, 'mise.toml');\n const claudeDir = join(cwd, '.claude');\n const claudeMdPath = join(claudeDir, 'CLAUDE.md');\n const readmePath = join(cwd, 'README.md');\n\n header('Initializing loclaude project');\n console.log('');\n\n // Determine GPU mode\n // Note: cac converts --no-gpu to gpu: false, and --gpu to gpu: true\n let gpuMode: boolean;\n if (options.gpu === false) {\n gpuMode = false;\n console.log(info('CPU-only mode (--no-gpu)'));\n } else if (options.gpu === true) {\n gpuMode = true;\n console.log(info('GPU mode enabled (--gpu)'));\n } else {\n // Auto-detect GPU\n console.log(dim(' Detecting GPU...'));\n gpuMode = await hasNvidiaGpu();\n if (gpuMode) {\n console.log(success('NVIDIA GPU detected - using GPU mode'));\n } else {\n console.log(warn('No NVIDIA GPU detected - using CPU mode'));\n console.log(dim(' Use --gpu to force GPU mode if you have an NVIDIA GPU'));\n }\n }\n console.log('');\n\n // Create README.md\n if (existsSync(readmePath) && !options.force) {\n console.log(warn(`${file('README.md')} already exists`));\n } else {\n writeFileSync(readmePath, README_TEMPLATE);\n console.log(success(`Created ${file('README.md')}`));\n }\n\n // Check for existing docker-compose.yml\n if (existsSync(composePath) && !options.force) {\n console.log(warn(`${file('docker-compose.yml')} already exists`));\n console.log(dim(' Use --force to overwrite'));\n } else {\n // Select appropriate template\n let composeContent = gpuMode ? DOCKER_COMPOSE_TEMPLATE_GPU : DOCKER_COMPOSE_TEMPLATE_CPU;\n\n // Remove open-webui if --no-webui flag\n if (options.noWebui) {\n // Remove the open-webui service and volume\n composeContent = composeContent\n .replace(/\\n # =+\\n # OPEN WEBUI[\\s\\S]*?capabilities: \\[gpu\\]\\n/m, '\\n')\n .replace(/\\n # =+\\n # OPEN WEBUI[\\s\\S]*?open-webui:\\/app\\/backend\\/data\\n/m, '\\n')\n .replace(/\\nvolumes:\\n open-webui:\\n.*$/m, '\\n');\n }\n\n writeFileSync(composePath, composeContent);\n const modeLabel = gpuMode ? cyan('GPU') : cyan('CPU');\n console.log(success(`Created ${file('docker-compose.yml')} (${modeLabel} mode)`));\n }\n\n // Create mise.toml\n if (existsSync(miseTomlPath) && !options.force) {\n console.log(warn(`${file('mise.toml')} already exists`));\n } else {\n writeFileSync(miseTomlPath, MISE_TOML_TEMPLATE);\n console.log(success(`Created ${file('mise.toml')}`));\n }\n\n // Create .claude directory and CLAUDE.md\n if (!existsSync(claudeDir)) {\n mkdirSync(claudeDir, { recursive: true });\n }\n if (existsSync(claudeMdPath) && !options.force) {\n console.log(warn(`${file('.claude/CLAUDE.md')} already exists`));\n } else {\n writeFileSync(claudeMdPath, CLAUDE_MD_TEMPLATE);\n console.log(success(`Created ${file('.claude/CLAUDE.md')}`));\n }\n\n // Create .loclaude config directory\n if (!existsSync(configDir)) {\n mkdirSync(configDir, { recursive: true });\n console.log(success(`Created ${file('.loclaude/')} directory`));\n }\n\n // Create config file\n if (existsSync(configPath) && !options.force) {\n console.log(warn(`${file('.loclaude/config.json')} already exists`));\n } else {\n writeFileSync(configPath, getConfigTemplate(gpuMode));\n console.log(success(`Created ${file('.loclaude/config.json')}`));\n }\n\n // Create models directory\n if (!existsSync(modelsDir)) {\n mkdirSync(modelsDir, { recursive: true });\n console.log(success(`Created ${file('models/')} directory`));\n }\n\n // Append to .gitignore if it exists, or create it\n if (existsSync(gitignorePath)) {\n const existing = readFileSync(gitignorePath, 'utf-8');\n if (!existing.includes('models/')) {\n writeFileSync(gitignorePath, existing + '\\n' + GITIGNORE_TEMPLATE);\n console.log(success(`Updated ${file('.gitignore')}`));\n }\n } else {\n writeFileSync(gitignorePath, GITIGNORE_TEMPLATE);\n console.log(success(`Created ${file('.gitignore')}`));\n }\n\n // Print success summary\n const recommendedModel = gpuMode ? 'qwen3-coder:30b' : 'qwen2.5-coder:7b';\n\n console.log('');\n console.log(green('Project initialized!'));\n console.log('');\n console.log(cyan('Next steps:'));\n console.log(` 1. Start containers: ${cmd('mise run up')}`);\n console.log(` 2. Pull a model: ${cmd(`mise run pull ${recommendedModel}`)}`);\n console.log(` 3. Run Claude: ${cmd('mise run claude')}`);\n console.log('');\n console.log(cyan('Service URLs:'));\n console.log(` Ollama API: ${url('http://localhost:11434')}`);\n if (!options.noWebui) {\n console.log(` Open WebUI: ${url('http://localhost:3000')}`);\n }\n}\n",
46
- "/**\n * doctor command - Check prerequisites and system health\n */\n\nimport { getOllamaUrl } from '../config';\nimport { statusLine, header, success, warn, error, hint, green, yellow, red, dim } from '../output';\nimport { commandExists, getCommandVersion, spawnCapture } from '../spawn';\n\ninterface CheckResult {\n name: string;\n status: 'ok' | 'warning' | 'error';\n message: string;\n version?: string;\n hint?: string;\n}\n\nasync function checkDocker(): Promise<CheckResult> {\n const exists = await commandExists('docker');\n if (!exists) {\n return {\n name: 'Docker',\n status: 'error',\n message: 'Not installed',\n hint: 'Install Docker: https://docs.docker.com/get-docker/'\n };\n }\n\n const version = await getCommandVersion('docker');\n return {\n name: 'Docker',\n status: 'ok',\n message: 'Installed',\n version: version ?? undefined\n };\n}\n\nasync function checkDockerCompose(): Promise<CheckResult> {\n // Try docker compose (v2) first\n const result = await spawnCapture(['docker', 'compose', 'version']);\n if (result.exitCode === 0) {\n const version = result.stdout?.trim().split('\\n')[0];\n return {\n name: 'Docker Compose',\n status: 'ok',\n message: 'Installed (v2)',\n version: version ?? undefined\n };\n }\n\n // Fall back to docker-compose (v1)\n const v1Exists = await commandExists('docker-compose');\n if (v1Exists) {\n const version = await getCommandVersion('docker-compose');\n return {\n name: 'Docker Compose',\n status: 'warning',\n message: 'Using legacy v1',\n version: version ?? undefined,\n hint: 'Consider upgrading to Docker Compose v2'\n };\n }\n\n return {\n name: 'Docker Compose',\n status: 'error',\n message: 'Not installed',\n hint: 'Docker Compose is included with Docker Desktop, or install separately'\n };\n}\n\nasync function checkNvidiaSmi(): Promise<CheckResult> {\n const exists = await commandExists('nvidia-smi');\n if (!exists) {\n return {\n name: 'NVIDIA GPU',\n status: 'warning',\n message: 'nvidia-smi not found',\n hint: 'GPU support requires NVIDIA drivers. CPU-only mode will be used.'\n };\n }\n\n const result = await spawnCapture(['nvidia-smi', '--query-gpu=name', '--format=csv,noheader']);\n if (result.exitCode === 0 && result.stdout) {\n const gpus = result.stdout.trim().split('\\n').filter(Boolean);\n return {\n name: 'NVIDIA GPU',\n status: 'ok',\n message: `${gpus.length} GPU(s) detected`,\n version: gpus[0]\n };\n }\n\n return {\n name: 'NVIDIA GPU',\n status: 'warning',\n message: 'nvidia-smi failed',\n hint: 'GPU may not be available. Check NVIDIA drivers.'\n };\n}\n\nasync function checkNvidiaContainerToolkit(): Promise<CheckResult> {\n // Check if nvidia container runtime is available\n const result = await spawnCapture(['docker', 'info', '--format', '{{.Runtimes}}']);\n if (result.exitCode === 0 && result.stdout?.includes('nvidia')) {\n return {\n name: 'NVIDIA Container Toolkit',\n status: 'ok',\n message: 'nvidia runtime available'\n };\n }\n\n return {\n name: 'NVIDIA Container Toolkit',\n status: 'warning',\n message: 'nvidia runtime not found',\n hint: 'Install: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html'\n };\n}\n\nasync function checkClaude(): Promise<CheckResult> {\n const exists = await commandExists('claude');\n if (!exists) {\n return {\n name: 'Claude Code',\n status: 'error',\n message: 'Not installed',\n hint: 'Install: npm install -g @anthropic-ai/claude-code'\n };\n }\n\n const version = await getCommandVersion('claude');\n return {\n name: 'Claude Code',\n status: 'ok',\n message: 'Installed',\n version: version ?? undefined\n };\n}\n\nasync function checkOllamaConnection(): Promise<CheckResult> {\n const ollamaUrl = getOllamaUrl();\n try {\n const response = await fetch(`${ollamaUrl}/api/tags`, {\n signal: AbortSignal.timeout(5000)\n });\n\n if (response.ok) {\n const data = (await response.json()) as { models?: unknown[] };\n const modelCount = data.models?.length ?? 0;\n return {\n name: 'Ollama API',\n status: 'ok',\n message: `Connected (${modelCount} model${modelCount === 1 ? '' : 's'})`,\n version: ollamaUrl\n };\n }\n\n return {\n name: 'Ollama API',\n status: 'warning',\n message: `HTTP ${response.status}`,\n hint: 'Ollama may not be running. Try: loclaude docker-up'\n };\n } catch (error) {\n return {\n name: 'Ollama API',\n status: 'warning',\n message: 'Not reachable',\n hint: `Cannot connect to ${ollamaUrl}. Start Ollama: loclaude docker-up`\n };\n }\n}\n\nfunction formatCheck(check: CheckResult): string {\n let line = statusLine(check.status, check.name, check.message, check.version);\n\n if (check.hint) {\n line += `\\n ${dim('→')} ${dim(check.hint)}`;\n }\n\n return line;\n}\n\nexport async function doctor(): Promise<void> {\n header('System Health Check');\n console.log('');\n\n const checks: CheckResult[] = await Promise.all([\n checkDocker(),\n checkDockerCompose(),\n checkNvidiaSmi(),\n checkNvidiaContainerToolkit(),\n checkClaude(),\n checkOllamaConnection()\n ]);\n\n for (const check of checks) {\n console.log(formatCheck(check));\n }\n\n const errors = checks.filter((c) => c.status === 'error');\n const warnings = checks.filter((c) => c.status === 'warning');\n\n console.log('');\n\n if (errors.length > 0) {\n console.log(red(`${errors.length} error(s) found.`) + ' Fix these before proceeding.');\n process.exit(1);\n } else if (warnings.length > 0) {\n console.log(yellow(`${warnings.length} warning(s).`) + ' loclaude may work with limited functionality.');\n } else {\n console.log(green('All checks passed!') + ' Ready to use loclaude.');\n }\n}\n\n/**\n * Check if NVIDIA GPU is available (exported for use by init command)\n */\nexport async function hasNvidiaGpu(): Promise<boolean> {\n const exists = await commandExists('nvidia-smi');\n if (!exists) return false;\n\n const result = await spawnCapture(['nvidia-smi', '--query-gpu=name', '--format=csv,noheader']);\n return result.exitCode === 0 && Boolean(result.stdout?.trim());\n}\n",
47
- "/**\n * config command - Show and manage configuration\n */\n\nimport { loadConfig, getActiveConfigPath, getConfigSearchPaths } from '../config';\nimport { header, info, dim, green, cyan, magenta, file, cmd, labelValue, bold } from '../output';\n\nexport async function configShow(): Promise<void> {\n const config = loadConfig();\n const activePath = getActiveConfigPath();\n\n header('Current Configuration');\n console.log('');\n\n // Ollama settings\n console.log(cyan('Ollama:'));\n labelValue(' URL', config.ollama.url);\n labelValue(' Default Model', magenta(config.ollama.defaultModel));\n console.log('');\n\n // Docker settings\n console.log(cyan('Docker:'));\n labelValue(' Compose File', config.docker.composeFile);\n labelValue(' GPU Mode', config.docker.gpu ? green('enabled') : dim('disabled'));\n console.log('');\n\n // Claude settings\n console.log(cyan('Claude:'));\n if (config.claude.extraArgs.length > 0) {\n labelValue(' Extra Args', config.claude.extraArgs.join(' '));\n } else {\n labelValue(' Extra Args', dim('none'));\n }\n console.log('');\n\n // Config source\n console.log(dim('─'.repeat(40)));\n if (activePath) {\n console.log(dim(`Loaded from: ${file(activePath)}`));\n } else {\n console.log(dim('Using default configuration (no config file found)'));\n }\n}\n\nexport async function configPaths(): Promise<void> {\n const paths = getConfigSearchPaths();\n const activePath = getActiveConfigPath();\n\n header('Config Search Paths');\n console.log('');\n console.log(dim('Files are checked in priority order (first found wins):'));\n console.log('');\n\n for (let i = 0; i < paths.length; i++) {\n const configPath = paths[i];\n if (!configPath) continue;\n\n const isActive = configPath === activePath;\n const num = `${i + 1}.`;\n\n if (isActive) {\n console.log(` ${num} ${file(configPath)} ${green('← active')}`);\n } else {\n console.log(` ${num} ${dim(configPath)}`);\n }\n }\n\n console.log('');\n\n if (!activePath) {\n console.log(info('No config file found. Using defaults.'));\n console.log(dim(` Run ${cmd('loclaude init')} to create a project config.`));\n }\n}\n",
48
- "/**\n * docker command - Manage Docker containers\n */\n\nimport { existsSync } from 'fs';\nimport path, { join, isAbsolute } from 'path';\nimport { fileURLToPath } from 'url';\nimport { getComposeFile } from '../config';\nimport { success, error, info, dim, cyan, url, cmd, loading, done } from '../output';\nimport { spawn } from '../spawn';\n\n/**\n * Find docker-compose.yml using config or searching directories\n */\nfunction findComposeFile(): string | null {\n // First, check config for explicit compose file path\n const configPath = getComposeFile();\n if (configPath) {\n const absolutePath = isAbsolute(configPath) ? configPath : join(process.cwd(), configPath);\n if (existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n // Search in workspace only\n let dir = process.cwd();\n\n while (dir !== '/' && dir.startsWith(process.cwd())) {\n const composePath = join(dir, 'docker-compose.yml');\n if (existsSync(composePath)) {\n return composePath;\n }\n\n // Also check in docker/ subdirectory\n const dockerComposePath = join(dir, 'docker', 'docker-compose.yml');\n if (existsSync(dockerComposePath)) {\n return dockerComposePath;\n }\n\n dir = join(dir, '..');\n }\n\n /**\n * At this point, there's no locally defined docker compose file,\n * so we can at this time use the one that we ship with\n * we expect this script to run from bin/\n * and we package and ship the docker compose file in docker/docker-compose\n *\n * so we can reliably try to grab docker/docker-compose.yml from\n * import.meta.url + '..' + 'docker/docker-compose.yml';\n */\n const backup = path.resolve(fileURLToPath(import.meta.url), '..', 'docker', 'docker-compose.yml');\n\n if (existsSync(backup)) {\n return backup;\n }\n\n return null;\n}\n\n/**\n * Get docker compose command (v2 preferred)\n */\nfunction getComposeCommand(): string[] {\n return ['docker', 'compose'];\n}\n\nexport interface DockerOptions {\n file?: string;\n detach?: boolean;\n}\n\nasync function runCompose(args: string[], options: DockerOptions = {}): Promise<number> {\n const composeFile = options.file ?? findComposeFile();\n\n if (!composeFile) {\n console.log(error('No docker-compose.yml found'));\n console.log(dim(` Run ${cmd('loclaude init')} to create one, or specify --file`));\n return 1;\n }\n\n const cmd_args = [...getComposeCommand(), '-f', composeFile, ...args];\n return spawn(cmd_args);\n}\n\nexport async function dockerUp(options: DockerOptions = {}): Promise<void> {\n const args = ['up'];\n if (options.detach !== false) {\n args.push('-d');\n }\n\n console.log(info('Starting containers...'));\n console.log('');\n const exitCode = await runCompose(args, options);\n\n if (exitCode === 0) {\n console.log('');\n console.log(success('Containers started'));\n console.log('');\n console.log(cyan('Service URLs:'));\n console.log(` Ollama API: ${url('http://localhost:11434')}`);\n console.log(` Open WebUI: ${url('http://localhost:3000')}`);\n }\n\n process.exit(exitCode);\n}\n\nexport async function dockerDown(options: DockerOptions = {}): Promise<void> {\n console.log(info('Stopping containers...'));\n console.log('');\n const exitCode = await runCompose(['down'], options);\n\n if (exitCode === 0) {\n console.log('');\n console.log(success('Containers stopped'));\n }\n\n process.exit(exitCode);\n}\n\nexport async function dockerStatus(options: DockerOptions = {}): Promise<void> {\n console.log(info('Container status:'));\n console.log('');\n const exitCode = await runCompose(['ps'], options);\n process.exit(exitCode);\n}\n\nexport async function dockerLogs(\n options: DockerOptions & { follow?: boolean; service?: string } = {}\n): Promise<void> {\n const args = ['logs'];\n\n if (options.follow) {\n args.push('-f');\n }\n\n if (options.service) {\n args.push(options.service);\n console.log(info(`Logs for ${cyan(options.service)}:`));\n } else {\n console.log(info('Container logs:'));\n }\n console.log('');\n\n const exitCode = await runCompose(args, options);\n process.exit(exitCode);\n}\n\nexport async function dockerRestart(options: DockerOptions = {}): Promise<void> {\n console.log(info('Restarting containers...'));\n console.log('');\n const exitCode = await runCompose(['restart'], options);\n\n if (exitCode === 0) {\n console.log('');\n console.log(success('Containers restarted'));\n }\n\n process.exit(exitCode);\n}\n\nexport async function dockerExec(\n service: string,\n command: string[],\n options: DockerOptions = {}\n): Promise<number> {\n const composeFile = options.file ?? findComposeFile();\n\n if (!composeFile) {\n console.log(error('No docker-compose.yml found'));\n return 1;\n }\n\n const cmd_args = [...getComposeCommand(), '-f', composeFile, 'exec', service, ...command];\n\n return spawn(cmd_args);\n}\n",
49
- "/**\n * models command - Manage Ollama models\n */\n\nimport bytes from 'bytes';\nimport { getOllamaUrl } from '../config';\nimport {\n header,\n success,\n error,\n info,\n dim,\n bold,\n cyan,\n yellow,\n green,\n magenta,\n tableHeader,\n cmd\n} from '../output';\nimport type { OllamaModel, OllamaTagsResponse } from '../types';\nimport { spawn, spawnCapture } from '../spawn';\n\n/**\n * Fetch models from Ollama API\n */\nasync function fetchModels(): Promise<OllamaModel[]> {\n const ollamaUrl = getOllamaUrl();\n try {\n const response = await fetch(`${ollamaUrl}/api/tags`, {\n signal: AbortSignal.timeout(10000)\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n\n const data = (await response.json()) as OllamaTagsResponse;\n return data.models ?? [];\n } catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n throw new Error(`Connection to Ollama timed out (${ollamaUrl})`);\n }\n throw error;\n }\n}\n\n/**\n * Check if Ollama is running in Docker\n */\nasync function isOllamaInDocker(): Promise<boolean> {\n const result = await spawnCapture(['docker', 'ps', '--filter', 'name=ollama', '--format', '{{.Names}}']);\n return result.exitCode === 0 && (result.stdout?.includes('ollama') ?? false);\n}\n\n/**\n * Run ollama command (via docker if container exists, otherwise direct)\n */\nasync function runOllamaCommand(args: string[]): Promise<number> {\n const inDocker = await isOllamaInDocker();\n\n if (inDocker) {\n return spawn(['docker', 'exec', '-it', 'ollama', 'ollama', ...args]);\n } else {\n return spawn(['ollama', ...args]);\n }\n}\n\n/**\n * Format size with color based on magnitude\n */\nfunction formatSize(sizeBytes: number): string {\n const sizeStr = bytes(sizeBytes) ?? '?';\n const sizeNum = sizeBytes / (1024 * 1024 * 1024); // Convert to GB\n\n if (sizeNum > 20) {\n return yellow(sizeStr); // Large models (>20GB) in yellow\n } else if (sizeNum > 10) {\n return cyan(sizeStr); // Medium models (10-20GB) in cyan\n }\n return dim(sizeStr); // Small models in dim\n}\n\nexport async function modelsList(): Promise<void> {\n try {\n const models = await fetchModels();\n\n if (models.length === 0) {\n header('Installed Models');\n console.log('');\n console.log(info('No models installed.'));\n console.log('');\n console.log(`Pull a model with: ${cmd('loclaude models-pull <model-name>')}`);\n console.log(`Example: ${cmd('loclaude models-pull llama3.2')}`);\n return;\n }\n\n header('Installed Models');\n console.log('');\n\n // Calculate column widths\n const nameWidth = Math.max(...models.map((m) => m.name.length), 'NAME'.length);\n const sizeWidth = 10;\n const modifiedWidth = 20;\n\n // Header\n tableHeader(['NAME', 'SIZE', 'MODIFIED'], [nameWidth, sizeWidth, modifiedWidth]);\n\n // Rows\n for (const model of models) {\n const name = magenta(model.name.padEnd(nameWidth));\n const size = formatSize(model.size).padStart(sizeWidth);\n const modified = dim(formatRelativeTime(model.modified_at));\n console.log(`${name} ${size} ${modified}`);\n }\n\n console.log('');\n console.log(dim(`${models.length} model(s) installed`));\n } catch (err) {\n const ollamaUrl = getOllamaUrl();\n console.log(error(`Could not connect to Ollama at ${ollamaUrl}`));\n console.log(dim(` Make sure Ollama is running: ${cmd('loclaude docker-up')}`));\n process.exit(1);\n }\n}\n\nexport async function modelsPull(modelName: string): Promise<void> {\n if (!modelName) {\n console.log(error('Model name required'));\n console.log(dim(`Usage: ${cmd('loclaude models-pull <model-name>')}`));\n console.log(dim(`Example: ${cmd('loclaude models-pull llama3.2')}`));\n process.exit(1);\n }\n\n console.log(info(`Pulling model: ${magenta(modelName)}`));\n console.log('');\n const exitCode = await runOllamaCommand(['pull', modelName]);\n\n if (exitCode === 0) {\n console.log('');\n console.log(success(`Model '${magenta(modelName)}' pulled successfully`));\n }\n\n process.exit(exitCode);\n}\n\nexport async function modelsRm(modelName: string): Promise<void> {\n if (!modelName) {\n console.log(error('Model name required'));\n console.log(dim(`Usage: ${cmd('loclaude models-rm <model-name>')}`));\n process.exit(1);\n }\n\n console.log(info(`Removing model: ${magenta(modelName)}`));\n console.log('');\n const exitCode = await runOllamaCommand(['rm', modelName]);\n\n if (exitCode === 0) {\n console.log('');\n console.log(success(`Model '${magenta(modelName)}' removed`));\n }\n\n process.exit(exitCode);\n}\n\nexport async function modelsShow(modelName: string): Promise<void> {\n if (!modelName) {\n console.log(error('Model name required'));\n console.log(dim(`Usage: ${cmd('loclaude models-show <model-name>')}`));\n process.exit(1);\n }\n\n console.log(info(`Model details: ${magenta(modelName)}`));\n console.log('');\n const exitCode = await runOllamaCommand(['show', modelName]);\n process.exit(exitCode);\n}\n\nexport async function modelsRun(modelName: string): Promise<void> {\n if (!modelName) {\n console.log(error('Model name required'));\n console.log(dim(`Usage: ${cmd('loclaude models-run <model-name>')}`));\n process.exit(1);\n }\n\n console.log(info(`Running model: ${magenta(modelName)}`));\n console.log('');\n const exitCode = await runOllamaCommand(['run', modelName]);\n process.exit(exitCode);\n}\n\n/**\n * Format a date string as relative time\n */\nfunction formatRelativeTime(dateStr: string): string {\n const date = new Date(dateStr);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffSecs = Math.floor(diffMs / 1000);\n const diffMins = Math.floor(diffSecs / 60);\n const diffHours = Math.floor(diffMins / 60);\n const diffDays = Math.floor(diffHours / 24);\n const diffWeeks = Math.floor(diffDays / 7);\n\n if (diffSecs < 60) return 'just now';\n if (diffMins < 60) return `${diffMins} minute${diffMins === 1 ? '' : 's'} ago`;\n if (diffHours < 24) return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;\n if (diffDays < 7) return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;\n if (diffWeeks < 4) return `${diffWeeks} week${diffWeeks === 1 ? '' : 's'} ago`;\n\n return date.toLocaleDateString();\n}\n",
50
- "import cac from 'cac';\nimport { DEFAULT_MODEL } from './constants';\nimport { launchClaude, selectModelInteractively } from './utils';\nimport {\n init,\n doctor,\n configShow,\n configPaths,\n dockerUp,\n dockerDown,\n dockerStatus,\n dockerLogs,\n dockerRestart,\n modelsList,\n modelsPull,\n modelsRm,\n modelsShow,\n modelsRun\n} from './commands';\n\n// CLI setup\nconst cli = cac('loclaude');\n\n// =============================================================================\n// run command: Run Claude with Ollama (default when no command specified)\n// =============================================================================\n\ncli\n .command('run [...args]', 'Run Claude Code with local Ollama', {\n allowUnknownOptions: true\n })\n .alias('x')\n .option('-m, --model <name>', 'Specify model to use')\n .action(async (args: string[], options: { model?: string }) => {\n let model: string;\n\n if (options.model) {\n model = options.model;\n } else if (args.includes('--help') || args.includes('-h')) {\n // Pass through help without prompting\n model = DEFAULT_MODEL;\n } else {\n model = await selectModelInteractively();\n }\n\n await launchClaude(model, args);\n });\n\n// =============================================================================\n// init command\n// =============================================================================\n\ncli\n .command('init', 'Initialize a new loclaude project')\n .option('--force', 'Overwrite existing files')\n .option('--no-webui', 'Skip Open WebUI in docker-compose')\n .option('--gpu', 'Force GPU mode (NVIDIA)')\n .option('--no-gpu', 'Force CPU-only mode')\n .action(async (options: { force?: boolean; noWebui?: boolean; gpu?: boolean; noGpu?: boolean }) => {\n await init(options);\n });\n\n// =============================================================================\n// doctor command\n// =============================================================================\n\ncli.command('doctor', 'Check system requirements and health').action(async () => {\n await doctor();\n});\n\n// =============================================================================\n// config commands\n// =============================================================================\n\ncli.command('config', 'Show current configuration').action(async () => {\n await configShow();\n});\n\ncli.command('config-paths', 'Show config file search paths').action(async () => {\n await configPaths();\n});\n\n// =============================================================================\n// docker commands\n// =============================================================================\n\ncli\n .command('docker-up', 'Start Ollama and Open WebUI containers')\n .option('-f, --file <path>', 'Path to docker-compose.yml')\n .option('--no-detach', \"Run in foreground (don't detach)\")\n .action(async (options: { file?: string; detach?: boolean }) => {\n await dockerUp(options);\n });\n\ncli\n .command('docker-down', 'Stop containers')\n .option('-f, --file <path>', 'Path to docker-compose.yml')\n .action(async (options: { file?: string }) => {\n await dockerDown(options);\n });\n\ncli\n .command('docker-status', 'Show container status')\n .option('-f, --file <path>', 'Path to docker-compose.yml')\n .action(async (options: { file?: string }) => {\n await dockerStatus(options);\n });\n\ncli\n .command('docker-logs', 'Show container logs')\n .option('-f, --file <path>', 'Path to docker-compose.yml')\n .option('--follow', 'Follow log output')\n .option('-s, --service <name>', 'Show logs for specific service')\n .action(async (options: { file?: string; follow?: boolean; service?: string }) => {\n await dockerLogs(options);\n });\n\ncli\n .command('docker-restart', 'Restart containers')\n .option('-f, --file <path>', 'Path to docker-compose.yml')\n .action(async (options: { file?: string }) => {\n await dockerRestart(options);\n });\n\n// =============================================================================\n// models commands\n// =============================================================================\n\ncli.command('models', 'List installed Ollama models').action(async () => {\n await modelsList();\n});\n\ncli.command('models-pull <name>', 'Pull a model from Ollama registry').action(async (name: string) => {\n await modelsPull(name);\n});\n\ncli.command('models-rm <name>', 'Remove an installed model').action(async (name: string) => {\n await modelsRm(name);\n});\n\ncli.command('models-show <name>', 'Show model information').action(async (name: string) => {\n await modelsShow(name);\n});\n\ncli.command('models-run <name>', 'Run a model interactively').action(async (name: string) => {\n await modelsRun(name);\n});\n\n// =============================================================================\n// CLI configuration\n// =============================================================================\n\ncli.help();\ncli.version('0.0.1-rc.1');\n\nexport const help = () => cli.outputHelp();\nexport const version = () => cli.outputVersion();\n\nexport const run_cli = (): void => {\n cli.parse();\n};\n\nexport { cli };\n"
51
- ],
52
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;EAEA,OAAO,UAAU;AAAA,EAEjB,SAAS,aAAa,CAAC,SAAS;AAAA,IAC9B,MAAM,cAAc;AAAA,MAClB,cAAc;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,SAAS;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,KAAK,WAAW,EAAE,QAAQ,QAAS,CAAC,KAAK;AAAA,MAC9C,IAAI,CAAC,QAAQ,MAAM;AAAA,QACjB,QAAQ,OAAO,YAAY;AAAA,MAC7B;AAAA,KACD;AAAA,IAED,OAAO;AAAA;AAAA,EAGT,SAAS,QAAQ,CAAC,SAAS;AAAA,IACzB,MAAM,OAAO,cAAc,OAAO;AAAA,IAElC,IAAI,KAAK,OAAO,eAAe;AAAA,MAC7B,OAAO,KAAK,OAAO,cAAc,EAAE,MAAM,KAAK;AAAA,IAChD;AAAA,IAEA,IAAI,KAAK,IAAI,eAAe;AAAA,MAC1B,OAAO,KAAK,IAAI,cAAc,EAAE,MAAM,KAAK;AAAA,IAC7C;AAAA,IAEA,IAAI,KAAK,OAAO,SAAS;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,IACrB;AAAA,IAEA,IAAI,QAAQ,IAAI,WAAW;AAAA,MACzB,MAAM,QAAQ,SAAS,QAAQ,IAAI,WAAW,EAAE;AAAA,MAEhD,IAAI,CAAC,MAAM,KAAK,KAAK,UAAU,GAAG;AAAA,QAChC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO,KAAK;AAAA;AAAA;;;;EC/Cd,OAAO,UAAU,MAAM;AAAA,IAEtB,OAAO;AAAA;AAAA;;;;ECFR,IAAM;AAAA;AAAA,EAEN,MAAM,mBAAmB,OAAO;AAAA,IAC9B,SAAS;AAAA,IAET,WAAY,CAAC,OAAO,CAAC,GAAG;AAAA,MACtB,MAAM,IAAI;AAAA,MACV,KAAK,WAAW,KAAK,WAAW;AAAA,MAChC,KAAK,QAAQ;AAAA,MACb,KAAK,GAAG,QAAQ,KAAK,OAAO;AAAA,MAC5B,KAAK,UAAU,KAAK;AAAA,MAKpB,KAAK,UAAU,KAAK,UAAU;AAAA,MAC9B,KAAK,cAAc;AAAA;AAAA,IAGrB,QAAS,CAAC,KAAK,KAAK;AAAA,MAClB,IAAI,KAAK,OAAO;AAAA,QACd,OAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MACA,IAAI,KAAK,MAAM;AAAA,QACb,OAAO,KAAK,KAAK;AAAA,MACnB;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,MAAO,CAAC,WAAW,MAAM;AAAA,MACvB,IAAI,OAAO,KAAK,QAAQ,YAAY,YAAY;AAAA,QAC9C,KAAK,MAAM,QAAQ,GAAG,IAAI;AAAA,MAC5B;AAAA,MACA,IAAI,OAAO,KAAK,OAAO,YAAY,YAAY;AAAA,QAC7C,KAAK,KAAK,QAAQ,GAAG,IAAI;AAAA,MAC3B;AAAA;AAAA,QAGE,KAAM,GAAG;AAAA,MACX,IAAI,KAAK,WAAW,MAAM;AAAA,QACxB,OAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,KAAK,SAAS,SAAS,KAAK;AAAA;AAAA,QAIjC,KAAM,CAAC,KAAK;AAAA,MACd,KAAK,SAAS;AAAA;AAAA,QAGZ,IAAK,GAAG;AAAA,MACV,OAAO,KAAK,SAAS,MAAM;AAAA;AAAA,QAGzB,OAAQ,GAAG;AAAA,MACb,OAAO,KAAK,SAAS,SAAS;AAAA;AAAA,IAGhC,IAAK,GAAG;AAAA,MACN,KAAK,QAAQ;AAAA;AAAA,IAGf,MAAO,GAAG;AAAA,MACR,KAAK,QAAQ;AAAA;AAAA,IAGf,OAAQ,CAAC,KAAK;AAAA,MACZ,KAAK,OAAO;AAAA;AAAA,IAGd,IAAK,CAAC,MAAM,SAAS;AAAA,MACnB,KAAK,QAAQ;AAAA,MACb,OAAO,MAAM,KAAK,MAAM,OAAO;AAAA;AAAA,IAGjC,KAAM,GAAG;AAAA,MACP,IAAI,KAAK,MAAM;AAAA,QACb,OAAO,KAAK,KAAK,MAAM;AAAA,MACzB;AAAA;AAAA,IAGF,MAAO,GAAG;AAAA,MACR,IAAI,KAAK,MAAM;AAAA,QACb,OAAO,KAAK,KAAK,OAAO;AAAA,MAC1B;AAAA;AAAA,IAGF,KAAM,CAAC,GAAG;AAAA,MACR,IAAI,KAAK,OAAO;AAAA,QACd,IAAI,CAAC,KAAK,SAAS;AAAA,UACjB,OAAO;AAAA,QACT;AAAA,QAEA,IAAI,EAAE,MAAM,SAAS,GAAG;AAAA,UACtB,IAAI,EAAE,QAAQ,KAAK,OAAO,MAAM,GAAG;AAAA,YACjC,IAAI,EAAE,MAAM,KAAK,QAAQ,MAAM;AAAA,YAC/B,IAAI,EAAE,QAAQ,MAAM,KAAK,OAAO;AAAA,YAChC,IAAI,KAAK,UAAU;AAAA,UACrB;AAAA,UACA,KAAK,cAAc;AAAA,UACnB,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,QAC5B,EAAO;AAAA,UACL,IAAI,KAAK,WAAW,KAAK,eACvB,EAAE,QAAQ,KAAK,OAAO,MAAM,GAAG;AAAA,YAC/B,KAAK,cAAc;AAAA,YACnB,KAAK,KAAK,QAAQ,KAAK,OAAO;AAAA,YAC9B,IAAI,EAAE,MAAM,KAAK,QAAQ,MAAM;AAAA,UACjC;AAAA,UACA,IAAI,EAAE,SAAS,EAAE,QAAQ,MAAM,KAAK,OAAO;AAAA;AAAA,MAE/C;AAAA,MACA,KAAK,KAAK,QAAQ,CAAC;AAAA;AAAA,IAGrB,GAAI,CAAC,GAAG;AAAA,MACN,IAAI,KAAK,OAAO;AAAA,QACd,IAAI,KAAK,KAAK,SAAS;AAAA,UACrB,IAAI,EAAE,SAAS,EAAE,QAAQ,MAAM,KAAK,OAAO;AAAA,QAC7C,EAAO;AAAA,UACL,IAAI;AAAA;AAAA,MAER;AAAA,MACA,IAAI,GAAG;AAAA,QACL,KAAK,KAAK,QAAQ,CAAC;AAAA,MACrB;AAAA,MACA,KAAK,KAAK,KAAK;AAAA;AAAA,IAGjB,OAAQ,IAAI,MAAM;AAAA,MAChB,OAAO,KAAK,OAAO,WAAW,GAAG,IAAI;AAAA;AAAA,IAGvC,WAAY,IAAI,MAAM;AAAA,MACpB,OAAO,KAAK,OAAO,eAAe,GAAG,IAAI;AAAA;AAAA,IAG3C,KAAM,IAAI,MAAM;AAAA,MACd,OAAO,KAAK,OAAO,SAAS,GAAG,IAAI;AAAA;AAAA,EAEvC;AAAA,EAEA,OAAO,UAAU;AAAA;;;;ECtIjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,UAAU;AAAA,EACjB,OAAO,QAAQ,SAAS;AAAA,EACxB,OAAO,QAAQ,QAAQ;AAAA,EAOvB,IAAI,wBAAwB;AAAA,EAE5B,IAAI,uBAAuB;AAAA,EAE3B,IAAI,MAAM;AAAA,IACR,GAAI;AAAA,IACJ,IAAI,KAAK;AAAA,IACT,IAAI,KAAK;AAAA,IACT,IAAI,KAAK;AAAA,IACT,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,IACpB,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,EACtB;AAAA,EAEA,IAAI,cAAc;AAAA,EAiBlB,SAAS,KAAK,CAAC,OAAO,SAAS;AAAA,IAC7B,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,OAAO,MAAM,KAAK;AAAA,IACpB;AAAA,IAEA,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,OAAO,OAAO,OAAO,OAAO;AAAA,IAC9B;AAAA,IAEA,OAAO;AAAA;AAAA,EAqBT,SAAS,MAAM,CAAC,OAAO,SAAS;AAAA,IAC9B,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAM,KAAK,IAAI,KAAK;AAAA,IACxB,IAAI,qBAAsB,WAAW,QAAQ,sBAAuB;AAAA,IACpE,IAAI,gBAAiB,WAAW,QAAQ,iBAAkB;AAAA,IAC1D,IAAI,gBAAiB,WAAW,QAAQ,kBAAkB,YAAa,QAAQ,gBAAgB;AAAA,IAC/F,IAAI,gBAAgB,QAAQ,WAAW,QAAQ,aAAa;AAAA,IAC5D,IAAI,OAAQ,WAAW,QAAQ,QAAS;AAAA,IAExC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI;AAAA,MACrC,IAAI,OAAO,IAAI,IAAI;AAAA,QACjB,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,IAAI,IAAI;AAAA,QACxB,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,IAAI,IAAI;AAAA,QACxB,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,IAAI,IAAI;AAAA,QACxB,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,IAAI,IAAI;AAAA,QACxB,OAAO;AAAA,MACT,EAAO;AAAA,QACL,OAAO;AAAA;AAAA,IAEX;AAAA,IAEA,IAAI,MAAM,QAAQ,IAAI,KAAK,YAAY;AAAA,IACvC,IAAI,MAAM,IAAI,QAAQ,aAAa;AAAA,IAEnC,IAAI,CAAC,eAAe;AAAA,MAClB,MAAM,IAAI,QAAQ,sBAAsB,IAAI;AAAA,IAC9C;AAAA,IAEA,IAAI,oBAAoB;AAAA,MACtB,MAAM,IAAI,MAAM,GAAG,EAAE,IAAI,QAAS,CAAC,GAAG,GAAG;AAAA,QACvC,OAAO,MAAM,IACT,EAAE,QAAQ,uBAAuB,kBAAkB,IACnD;AAAA,OACL,EAAE,KAAK,GAAG;AAAA,IACb;AAAA,IAEA,OAAO,MAAM,gBAAgB;AAAA;AAAA,EAc/B,SAAS,KAAK,CAAC,KAAK;AAAA,IAClB,IAAI,OAAO,QAAQ,YAAY,CAAC,MAAM,GAAG,GAAG;AAAA,MAC1C,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,UAAU,YAAY,KAAK,GAAG;AAAA,IAClC,IAAI;AAAA,IACJ,IAAI,OAAO;AAAA,IAEX,IAAI,CAAC,SAAS;AAAA,MAEZ,aAAa,SAAS,KAAK,EAAE;AAAA,MAC7B,OAAO;AAAA,IACT,EAAO;AAAA,MAEL,aAAa,WAAW,QAAQ,EAAE;AAAA,MAClC,OAAO,QAAQ,GAAG,YAAY;AAAA;AAAA,IAGhC,IAAI,MAAM,UAAU,GAAG;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,KAAK,MAAM,IAAI,QAAQ,UAAU;AAAA;AAAA;;;;ECxK1C,IAAI,IAAI,WAAW,CAAC;AAAA,EAApB,IAAuB,OAAO,EAAE,QAAQ,CAAC;AAAA,EAAzC,IAA4C,MAAM,EAAE,OAAO,CAAC;AAAA,EAC5D,IAAI,mBACH,EAAE,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,YAAY,OAC7C,CAAC,CAAC,IAAI,eAAe,KAAK,SAAS,SAAS,KAAK,EAAE,aAAa,YAAa,EAAE,UAAU,CAAC,GAAG,SAAS,IAAI,SAAS,UAAW,CAAC,CAAC,IAAI;AAAA,EAEtI,IAAI,YAAY,CAAC,MAAM,OAAO,UAAU,SACvC,WAAS;AAAA,IACR,IAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,IAClE,OAAO,CAAC,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAG/F,IAAI,eAAe,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrD,IAAI,SAAS,IAAI,SAAS;AAAA,IAC1B,GAAG;AAAA,MACF,UAAU,OAAO,UAAU,QAAQ,KAAK,IAAI;AAAA,MAC5C,SAAS,QAAQ,MAAM;AAAA,MACvB,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,IACrC,SAAS,CAAC;AAAA,IACV,OAAO,SAAS,OAAO,UAAU,MAAM;AAAA;AAAA,EAGxC,IAAI,eAAe,CAAC,UAAU,qBAAqB;AAAA,IAClD,IAAI,IAAI,UAAU,YAAY,MAAM;AAAA,IACpC,OAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,OAAO,EAAE,WAAW,SAAS;AAAA,MAC7B,MAAM,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAChD,KAAK,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAC/C,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,WAAW,EAAE,WAAW,UAAU;AAAA,MAClC,SAAS,EAAE,WAAW,UAAU;AAAA,MAChC,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,eAAe,EAAE,WAAW,UAAU;AAAA,MAEtC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,KAAK,EAAE,YAAY,UAAU;AAAA,MAC7B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,MAAM,EAAE,YAAY,UAAU;AAAA,MAE9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,UAAU,EAAE,YAAY,UAAU;AAAA,MAClC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,SAAS,EAAE,YAAY,UAAU;AAAA,MAEjC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,cAAc,EAAE,YAAY,UAAU;AAAA,MACtC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,eAAe,EAAE,YAAY,UAAU;AAAA,MACvC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,aAAa,EAAE,YAAY,UAAU;AAAA,MAErC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,aAAa,EAAE,aAAa,UAAU;AAAA,MACtC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,gBAAgB,EAAE,aAAa,UAAU;AAAA,MACzC,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,iBAAiB,EAAE,aAAa,UAAU;AAAA,MAC1C,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,eAAe,EAAE,aAAa,UAAU;AAAA,IACzC;AAAA;AAAA,EAGD,OAAO,UAAU,aAAa;AAAA,EAC9B,OAAO,QAAQ,eAAe;AAAA;;;AC1E9B;AAEA,SAAS,KAAK,CAAC,KAAK;AAAA,EACnB,OAAO,OAAO,OAAO,CAAC,IAAI,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAAA;AAG1D,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,MAAM;AAAA,EACnC,IAAI,GAAG,MAAI,IAAI,MAAM,MAClB,CAAC,KAAK,OAAO,QAAQ,GAAG,IAAK,OAAO,QAAQ,QAAQ,OAAO,KAAK,OAAO,GAAG,IAC1E,OAAO,QAAQ,YAAY,MACzB,CAAC,KAAK,QAAQ,QAAQ,GAAG,IAAK,QAAQ,UAAU,QAAQ,QAAQ,WAAW,IAAI,EAAE,MAAM,IAAI,CAAC,KAAI,IAAI,MAAM,KAAK,IAAI,GAAG,GAAE,CAAC,CAAC,QAC3H,IAAI,CAAC,KAAI,IAAI,MAAM,KAAK,IAAI;AAAA,EAEhC,IAAI,OAAO,OAAO,OAAO,MAAO,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG;AAAA;AAGjF,SAAS,IAAK,CAAC,MAAM,MAAM;AAAA,EAC1B,OAAO,QAAQ,CAAC;AAAA,EAChB,OAAO,QAAQ,CAAC;AAAA,EAEhB,IAAI,GAAG,KAAK,KAAK,MAAM,KAAK,MAAI,EAAE,GAAE,CAAC,EAAE;AAAA,EACvC,IAAI,IAAE,GAAG,IAAE,GAAG,MAAI,GAAG,MAAI,KAAK;AAAA,EAE9B,MAAM,QAAQ,KAAK,UAAe;AAAA,EAClC,MAAM,SAAS,KAAK,YAAiB;AAAA,EACrC,MAAM,WAAW,KAAK,YAAiB;AAAA,EAEvC,KAAK,QAAQ,KAAK,SAAS,CAAC;AAAA,EAC5B,KAAK,SAAS,MAAM,KAAK,MAAM;AAAA,EAC/B,KAAK,UAAU,MAAM,KAAK,OAAO;AAAA,EAEjC,IAAI,OAAO;AAAA,IACV,KAAK,KAAK,KAAK,OAAO;AAAA,MACrB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,EAAE;AAAA,MACzC,KAAK,IAAE,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,SAC7B,KAAK,MAAM,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC;AAAA,MACjD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,KAAK,IAAE,KAAK,QAAQ,OAAQ,MAAM,KAAI;AAAA,IACrC,MAAM,KAAK,MAAM,KAAK,QAAQ,OAAO,CAAC;AAAA,IACtC,KAAK,IAAE,IAAI,OAAQ,MAAM;AAAA,MAAI,KAAK,QAAQ,KAAK,IAAI,EAAE;AAAA,EACtD;AAAA,EAEA,KAAK,IAAE,KAAK,OAAO,OAAQ,MAAM,KAAI;AAAA,IACpC,MAAM,KAAK,MAAM,KAAK,OAAO,OAAO,CAAC;AAAA,IACrC,KAAK,IAAE,IAAI,OAAQ,MAAM;AAAA,MAAI,KAAK,OAAO,KAAK,IAAI,EAAE;AAAA,EACrD;AAAA,EAEA,IAAI,UAAU;AAAA,IACb,KAAK,KAAK,KAAK,SAAS;AAAA,MACvB,OAAO,OAAO,KAAK,QAAQ;AAAA,MAC3B,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,CAAC;AAAA,MACxC,IAAI,KAAK,UAAe,WAAG;AAAA,QAC1B,KAAK,MAAM,KAAK,CAAC;AAAA,QACjB,KAAK,IAAE,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,UAC9B,KAAK,MAAM,KAAK,IAAI,EAAE;AAAA,QACvB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,OAAO,SAAS,OAAO,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA,EAEjD,KAAK,IAAE,EAAG,IAAI,KAAK,KAAK;AAAA,IACvB,MAAM,KAAK;AAAA,IAEX,IAAI,QAAQ,MAAM;AAAA,MACjB,IAAI,IAAI,IAAI,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;AAAA,MACpC;AAAA,IACD;AAAA,IAEA,KAAK,IAAE,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,MAC9B,IAAI,IAAI,WAAW,CAAC,MAAM;AAAA,QAAI;AAAA,IAC/B;AAAA,IAEA,IAAI,MAAM,GAAG;AAAA,MACZ,IAAI,EAAE,KAAK,GAAG;AAAA,IACf,EAAO,SAAI,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,OAAO;AAAA,MAC7C,OAAO,IAAI,UAAU,IAAI,CAAC;AAAA,MAC1B,IAAI,UAAU,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG;AAAA,QACnC,OAAO,KAAK,QAAQ,GAAG;AAAA,MACxB;AAAA,MACA,IAAI,QAAQ;AAAA,IACb,EAAO;AAAA,MACN,KAAK,MAAI,IAAE,EAAG,MAAM,IAAI,QAAQ,OAAO;AAAA,QACtC,IAAI,IAAI,WAAW,GAAG,MAAM;AAAA,UAAI;AAAA,MACjC;AAAA,MAEA,OAAO,IAAI,UAAU,GAAG,GAAG;AAAA,MAC3B,MAAM,IAAI,UAAU,EAAE,GAAG,MAAM,IAAE,MAAM,QAAQ,KAAG,KAAK,IAAE,IAAI,WAAW,CAAC,MAAM,MAAM,KAAK,EAAE;AAAA,MAC5F,MAAO,MAAM,IAAI,CAAC,IAAI,IAAI;AAAA,MAE1B,KAAK,MAAI,EAAG,MAAM,IAAI,QAAQ,OAAO;AAAA,QACpC,OAAO,IAAI;AAAA,QACX,IAAI,UAAU,CAAC,CAAC,KAAK,QAAQ,IAAI;AAAA,UAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI;AAAA,QAC5E,MAAM,KAAK,MAAO,MAAM,IAAI,IAAI,UAAW,KAAK,IAAI;AAAA,MACrD;AAAA;AAAA,EAEF;AAAA,EAEA,IAAI,UAAU;AAAA,IACb,KAAK,KAAK,KAAK,SAAS;AAAA,MACvB,IAAI,IAAI,OAAY,WAAG;AAAA,QACtB,IAAI,KAAK,KAAK,QAAQ;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,IAAI,OAAO;AAAA,IACV,KAAK,KAAK,KAAK;AAAA,MACd,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,MACxB,OAAO,IAAI,SAAS,GAAG;AAAA,QACtB,IAAI,IAAI,MAAM,KAAK,IAAI;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,UAAU,EAAE,EAAE,KAAK;AAC3D,IAAM,kBAAkB,CAAC,MAAM;AAAA,EAC7B,MAAM,2BAA2B;AAAA,EACjC,MAAM,2BAA2B;AAAA,EACjC,MAAM,MAAM,CAAC;AAAA,EACb,MAAM,QAAQ,CAAC,UAAU;AAAA,IACvB,IAAI,WAAW;AAAA,IACf,IAAI,QAAQ,MAAM;AAAA,IAClB,IAAI,MAAM,WAAW,KAAK,GAAG;AAAA,MAC3B,QAAQ,MAAM,MAAM,CAAC;AAAA,MACrB,WAAW;AAAA,IACb;AAAA,IACA,OAAO;AAAA,MACL,UAAU,MAAM,GAAG,WAAW,GAAG;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAEF,IAAI;AAAA,EACJ,OAAO,cAAc,yBAAyB,KAAK,CAAC,GAAG;AAAA,IACrD,IAAI,KAAK,MAAM,WAAW,CAAC;AAAA,EAC7B;AAAA,EACA,IAAI;AAAA,EACJ,OAAO,cAAc,yBAAyB,KAAK,CAAC,GAAG;AAAA,IACrD,IAAI,KAAK,MAAM,WAAW,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;AAET,IAAM,gBAAgB,CAAC,YAAY;AAAA,EACjC,MAAM,SAAS,EAAC,OAAO,CAAC,GAAG,SAAS,CAAC,EAAC;AAAA,EACtC,YAAY,OAAO,WAAW,QAAQ,QAAQ,GAAG;AAAA,IAC/C,IAAI,OAAO,MAAM,SAAS,GAAG;AAAA,MAC3B,OAAO,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,IACtD;AAAA,IACA,IAAI,OAAO,WAAW;AAAA,MACpB,IAAI,OAAO,SAAS;AAAA,QAClB,MAAM,sBAAsB,QAAQ,KAAK,CAAC,GAAG,MAAM;AAAA,UACjD,OAAO,MAAM,SAAS,EAAE,MAAM,KAAK,CAAC,SAAS,OAAO,MAAM,SAAS,IAAI,CAAC,KAAK,OAAO,EAAE,aAAa;AAAA,SACpG;AAAA,QACD,IAAI,CAAC,qBAAqB;AAAA,UACxB,OAAO,QAAQ,KAAK,OAAO,MAAM,EAAE;AAAA,QACrC;AAAA,MACF,EAAO;AAAA,QACL,OAAO,QAAQ,KAAK,OAAO,MAAM,EAAE;AAAA;AAAA,IAEvC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,IAAM,cAAc,CAAC,QAAQ;AAAA,EAC3B,OAAO,IAAI,KAAK,CAAC,GAAG,MAAM;AAAA,IACxB,OAAO,EAAE,SAAS,EAAE,SAAS,KAAK;AAAA,GACnC,EAAE;AAAA;AAEL,IAAM,WAAW,CAAC,KAAK,WAAW;AAAA,EAChC,OAAO,IAAI,UAAU,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,SAAS,IAAI,MAAM;AAAA;AAE7E,IAAM,YAAY,CAAC,UAAU;AAAA,EAC3B,OAAO,MAAM,QAAQ,oBAAoB,CAAC,GAAG,IAAI,OAAO;AAAA,IACtD,OAAO,KAAK,GAAG,YAAY;AAAA,GAC5B;AAAA;AAEH,IAAM,aAAa,CAAC,KAAK,MAAM,QAAQ;AAAA,EACrC,IAAI,IAAI;AAAA,EACR,IAAI,SAAS,KAAK;AAAA,EAClB,IAAI,IAAI;AAAA,EACR,IAAI;AAAA,EACJ,MAAO,IAAI,QAAQ,EAAE,GAAG;AAAA,IACtB,IAAI,EAAE,KAAK;AAAA,IACX,IAAI,EAAE,KAAK,MAAM,MAAM,SAAS,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;AAAA,EACxH;AAAA;AAEF,IAAM,YAAY,CAAC,KAAK,eAAe;AAAA,EACrC,WAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AAAA,IACzC,MAAM,YAAY,WAAW;AAAA,IAC7B,IAAI,UAAU,iBAAiB;AAAA,MAC7B,IAAI,OAAO,MAAM,UAAU,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI;AAAA,MACnD,IAAI,OAAO,UAAU,sBAAsB,YAAY;AAAA,QACrD,IAAI,OAAO,IAAI,KAAK,IAAI,UAAU,iBAAiB;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAAA;AAEF,IAAM,cAAc,CAAC,UAAU;AAAA,EAC7B,MAAM,IAAI,cAAc,KAAK,KAAK;AAAA,EAClC,OAAO,IAAI,EAAE,KAAK;AAAA;AAEpB,IAAM,sBAAsB,CAAC,SAAS;AAAA,EACpC,OAAO,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM;AAAA,IACnC,OAAO,MAAM,IAAI,UAAU,CAAC,IAAI;AAAA,GACjC,EAAE,KAAK,GAAG;AAAA;AAAA;AAEb,MAAM,iBAAiB,MAAM;AAAA,EAC3B,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,IACb,KAAK,OAAO,KAAK,YAAY;AAAA,IAC7B,IAAI,OAAO,MAAM,sBAAsB,YAAY;AAAA,MACjD,MAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,IAChD,EAAO;AAAA,MACL,KAAK,QAAQ,IAAI,MAAM,OAAO,EAAE;AAAA;AAAA;AAGtC;AAAA;AAEA,MAAM,OAAO;AAAA,EACX,WAAW,CAAC,SAAS,aAAa,QAAQ;AAAA,IACxC,KAAK,UAAU;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,KAAK,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM;AAAA,IACtC,UAAU,QAAQ,QAAQ,SAAS,EAAE;AAAA,IACrC,KAAK,UAAU;AAAA,IACf,KAAK,QAAQ,eAAe,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM;AAAA,MACzD,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,WAAW,EAAE;AAAA,MACzC,IAAI,KAAK,WAAW,KAAK,GAAG;AAAA,QAC1B,KAAK,UAAU;AAAA,QACf,OAAO,KAAK,QAAQ,QAAQ,EAAE;AAAA,MAChC;AAAA,MACA,OAAO,oBAAoB,IAAI;AAAA,KAChC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE;AAAA,IAC9C,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,SAAS;AAAA,IAC3C,IAAI,KAAK,WAAW,KAAK,OAAO,WAAW,MAAM;AAAA,MAC/C,KAAK,OAAO,UAAU;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG,GAAG;AAAA,MACzB,KAAK,WAAW;AAAA,IAClB,EAAO,SAAI,QAAQ,SAAS,GAAG,GAAG;AAAA,MAChC,KAAK,WAAW;AAAA,IAClB,EAAO;AAAA,MACL,KAAK,YAAY;AAAA;AAAA;AAGvB;AAEA,IAAM,cAAc,QAAQ;AAC5B,IAAM,eAAe,GAAG,QAAQ,YAAY,QAAQ,aAAa,QAAQ;AAAA;AAEzE,MAAM,QAAQ;AAAA,EACZ,WAAW,CAAC,SAAS,aAAa,SAAS,CAAC,GAAG,KAAK;AAAA,IAClD,KAAK,UAAU;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,KAAK,SAAS;AAAA,IACd,KAAK,MAAM;AAAA,IACX,KAAK,UAAU,CAAC;AAAA,IAChB,KAAK,aAAa,CAAC;AAAA,IACnB,KAAK,OAAO,eAAe,OAAO;AAAA,IAClC,KAAK,OAAO,gBAAgB,OAAO;AAAA,IACnC,KAAK,WAAW,CAAC;AAAA;AAAA,EAEnB,KAAK,CAAC,MAAM;AAAA,IACV,KAAK,YAAY;AAAA,IACjB,OAAO;AAAA;AAAA,EAET,mBAAmB,GAAG;AAAA,IACpB,KAAK,OAAO,sBAAsB;AAAA,IAClC,OAAO;AAAA;AAAA,EAET,wBAAwB,GAAG;AAAA,IACzB,KAAK,OAAO,2BAA2B;AAAA,IACvC,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,SAAS,cAAc,iBAAiB;AAAA,IAC9C,KAAK,gBAAgB;AAAA,IACrB,KAAK,OAAO,aAAa,wBAAwB;AAAA,IACjD,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,SAAS;AAAA,IACf,KAAK,SAAS,KAAK,OAAO;AAAA,IAC1B,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,SAAS,aAAa,QAAQ;AAAA,IACnC,MAAM,SAAS,IAAI,OAAO,SAAS,aAAa,MAAM;AAAA,IACtD,KAAK,QAAQ,KAAK,MAAM;AAAA,IACxB,OAAO;AAAA;AAAA,EAET,KAAK,CAAC,MAAM;AAAA,IACV,KAAK,WAAW,KAAK,IAAI;AAAA,IACzB,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,UAAU;AAAA,IACf,KAAK,gBAAgB;AAAA,IACrB,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,MAAM;AAAA,IACd,OAAO,KAAK,SAAS,QAAQ,KAAK,WAAW,SAAS,IAAI;AAAA;AAAA,MAExD,gBAAgB,GAAG;AAAA,IACrB,OAAO,KAAK,SAAS,MAAM,KAAK,WAAW,SAAS,GAAG;AAAA;AAAA,MAErD,eAAe,GAAG;AAAA,IACpB,OAAO,gBAAgB;AAAA;AAAA,EAEzB,SAAS,CAAC,MAAM;AAAA,IACd,OAAO,KAAK,MAAM,GAAG,EAAE;AAAA,IACvB,OAAO,KAAK,QAAQ,KAAK,CAAC,WAAW;AAAA,MACnC,OAAO,OAAO,MAAM,SAAS,IAAI;AAAA,KAClC;AAAA;AAAA,EAEH,UAAU,GAAG;AAAA,IACX,QAAO,MAAM,aAAY,KAAK;AAAA,IAC9B;AAAA,MACE;AAAA,MACA,SAAS;AAAA,MACT;AAAA,QACE,KAAK,IAAI;AAAA,IACb,IAAI,WAAW;AAAA,MACb;AAAA,QACE,MAAM,GAAG,OAAO,gBAAgB,IAAI,kBAAkB;AAAA,MACxD;AAAA,IACF;AAAA,IACA,SAAS,KAAK;AAAA,MACZ,OAAO;AAAA,MACP,MAAM,OAAO,QAAQ,KAAK,aAAa,KAAK;AAAA,IAC9C,CAAC;AAAA,IACD,MAAM,gBAAgB,KAAK,mBAAmB,KAAK,qBAAqB,SAAS,SAAS;AAAA,IAC1F,IAAI,cAAc;AAAA,MAChB,MAAM,qBAAqB,YAAY,SAAS,IAAI,CAAC,YAAY,QAAQ,OAAO,CAAC;AAAA,MACjF,SAAS,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,MAAM,SAAS,IAAI,CAAC,YAAY;AAAA,UAC9B,OAAO,KAAK,SAAS,QAAQ,SAAS,mBAAmB,MAAM,MAAM,QAAQ;AAAA,SAC9E,EAAE,KAAK;AAAA,CAAI;AAAA,MACd,CAAC;AAAA,MACD,SAAS,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,MAAM,SAAS,IAAI,CAAC,YAAY,OAAO,OAAO,QAAQ,SAAS,KAAK,KAAK,IAAI,QAAQ,eAAe,EAAE,KAAK;AAAA,CAAI;AAAA,MACjH,CAAC;AAAA,IACH;AAAA,IACA,IAAI,UAAU,KAAK,kBAAkB,gBAAgB,CAAC,GAAG,KAAK,SAAS,GAAG,iBAAiB,CAAC,CAAC;AAAA,IAC7F,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,kBAAkB;AAAA,MACnD,UAAU,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,SAAS;AAAA,IAChE;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,MAAM,oBAAoB,YAAY,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,CAAC;AAAA,MAC7E,SAAS,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,MAAM,QAAQ,IAAI,CAAC,WAAW;AAAA,UAC5B,OAAO,KAAK,SAAS,OAAO,SAAS,kBAAkB,MAAM,MAAM,OAAO,eAAe,OAAO,OAAO,YAAiB,YAAI,KAAK,aAAa,OAAO,OAAO;AAAA,SAC7J,EAAE,KAAK;AAAA,CAAI;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,MAC5B,SAAS,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,MAAM,KAAK,SAAS,IAAI,CAAC,YAAY;AAAA,UACnC,IAAI,OAAO,YAAY,YAAY;AAAA,YACjC,OAAO,QAAQ,IAAI;AAAA,UACrB;AAAA,UACA,OAAO;AAAA,SACR,EAAE,KAAK;AAAA,CAAI;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,IAAI,cAAc;AAAA,MAChB,WAAW,aAAa,QAAQ,KAAK;AAAA,IACvC;AAAA,IACA,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY;AAAA,MACpC,OAAO,QAAQ,QAAQ,GAAG,QAAQ;AAAA,EACtC,QAAQ,SAAS,QAAQ;AAAA,KACtB,EAAE,KAAK;AAAA;AAAA,CAAM,CAAC;AAAA;AAAA,EAEjB,aAAa,GAAG;AAAA,IACd,QAAO,SAAQ,KAAK;AAAA,IACpB,QAAO,kBAAiB,KAAK,IAAI;AAAA,IACjC,IAAI,eAAe;AAAA,MACjB,QAAQ,IAAI,GAAG,QAAQ,iBAAiB,cAAc;AAAA,IACxD;AAAA;AAAA,EAEF,iBAAiB,GAAG;AAAA,IAClB,MAAM,mBAAmB,KAAK,KAAK,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE;AAAA,IACjE,IAAI,KAAK,IAAI,KAAK,SAAS,kBAAkB;AAAA,MAC3C,MAAM,IAAI,SAAS,uCAAuC,KAAK,WAAW;AAAA,IAC5E;AAAA;AAAA,EAEF,mBAAmB,GAAG;AAAA,IACpB,QAAO,SAAS,kBAAiB,KAAK;AAAA,IACtC,IAAI,CAAC,KAAK,OAAO,qBAAqB;AAAA,MACpC,WAAW,QAAQ,OAAO,KAAK,OAAO,GAAG;AAAA,QACvC,IAAI,SAAS,QAAQ,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,cAAc,UAAU,IAAI,GAAG;AAAA,UAC5E,MAAM,IAAI,SAAS,oBAAoB,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,UAAU;AAAA,QACvF;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAEF,gBAAgB,GAAG;AAAA,IACjB,QAAO,SAAS,eAAe,kBAAiB,KAAK;AAAA,IACrD,MAAM,UAAU,CAAC,GAAG,cAAc,SAAS,GAAG,KAAK,OAAO;AAAA,IAC1D,WAAW,UAAU,SAAS;AAAA,MAC5B,MAAM,QAAQ,cAAc,OAAO,KAAK,MAAM,GAAG,EAAE;AAAA,MACnD,IAAI,OAAO,UAAU;AAAA,QACnB,MAAM,aAAa,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,OAAO,IAAI,CAAC;AAAA,QACjF,IAAI,UAAU,QAAQ,UAAU,SAAS,CAAC,YAAY;AAAA,UACpD,MAAM,IAAI,SAAS,YAAY,OAAO,4BAA4B;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAAA;AAEJ;AAAA;AACA,MAAM,sBAAsB,QAAQ;AAAA,EAClC,WAAW,CAAC,KAAK;AAAA,IACf,MAAM,cAAc,IAAI,CAAC,GAAG,GAAG;AAAA;AAEnC;AAEA,IAAI,WAAW,OAAO;AAAA;AACtB,MAAM,YAAY,aAAa;AAAA,EAC7B,WAAW,CAAC,OAAO,IAAI;AAAA,IACrB,MAAM;AAAA,IACN,KAAK,OAAO;AAAA,IACZ,KAAK,WAAW,CAAC;AAAA,IACjB,KAAK,UAAU,CAAC;AAAA,IAChB,KAAK,OAAO,CAAC;AAAA,IACb,KAAK,UAAU,CAAC;AAAA,IAChB,KAAK,gBAAgB,IAAI,cAAc,IAAI;AAAA,IAC3C,KAAK,cAAc,MAAM,qBAAqB;AAAA;AAAA,EAEhD,KAAK,CAAC,MAAM;AAAA,IACV,KAAK,cAAc,MAAM,IAAI;AAAA,IAC7B,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,SAAS,aAAa,QAAQ;AAAA,IACpC,MAAM,UAAU,IAAI,QAAQ,SAAS,eAAe,IAAI,QAAQ,IAAI;AAAA,IACpE,QAAQ,gBAAgB,KAAK;AAAA,IAC7B,KAAK,SAAS,KAAK,OAAO;AAAA,IAC1B,OAAO;AAAA;AAAA,EAET,MAAM,CAAC,SAAS,aAAa,QAAQ;AAAA,IACnC,KAAK,cAAc,OAAO,SAAS,aAAa,MAAM;AAAA,IACtD,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,UAAU;AAAA,IACb,KAAK,cAAc,OAAO,cAAc,sBAAsB;AAAA,IAC9D,KAAK,cAAc,eAAe;AAAA,IAClC,KAAK,iBAAiB;AAAA,IACtB,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,SAAS,cAAc,iBAAiB;AAAA,IAC9C,KAAK,cAAc,QAAQ,SAAS,WAAW;AAAA,IAC/C,KAAK,oBAAoB;AAAA,IACzB,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,SAAS;AAAA,IACf,KAAK,cAAc,QAAQ,OAAO;AAAA,IAClC,OAAO;AAAA;AAAA,EAET,UAAU,GAAG;AAAA,IACX,IAAI,KAAK,gBAAgB;AAAA,MACvB,KAAK,eAAe,WAAW;AAAA,IACjC,EAAO;AAAA,MACL,KAAK,cAAc,WAAW;AAAA;AAAA;AAAA,EAGlC,aAAa,GAAG;AAAA,IACd,KAAK,cAAc,cAAc;AAAA;AAAA,EAEnC,aAAa,GAAE,MAAM,WAAU,gBAAgB,oBAAoB;AAAA,IACjE,KAAK,OAAO;AAAA,IACZ,KAAK,UAAU;AAAA,IACf,IAAI,gBAAgB;AAAA,MAClB,KAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,IAAI,oBAAoB;AAAA,MACtB,KAAK,qBAAqB;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA;AAAA,EAET,mBAAmB,GAAG;AAAA,IACpB,KAAK,iBAAsB;AAAA,IAC3B,KAAK,qBAA0B;AAAA;AAAA,EAEjC,KAAK,CAAC,OAAO;AAAA,IACX,MAAM;AAAA,MACJ,CAAC,GAAG;AAAA,IACN,KAAK,UAAU;AAAA,IACf,IAAI,CAAC,KAAK,MAAM;AAAA,MACd,KAAK,OAAO,KAAK,KAAK,YAAY,KAAK,EAAE,IAAI;AAAA,IAC/C;AAAA,IACA,IAAI,cAAc;AAAA,IAClB,WAAW,WAAW,KAAK,UAAU;AAAA,MACnC,MAAM,SAAS,KAAK,IAAI,KAAK,MAAM,CAAC,GAAG,OAAO;AAAA,MAC9C,MAAM,cAAc,OAAO,KAAK;AAAA,MAChC,IAAI,QAAQ,UAAU,WAAW,GAAG;AAAA,QAClC,cAAc;AAAA,QACd,MAAM,aAAa,SAAS,SAAS,CAAC,GAAG,MAAM,GAAG;AAAA,UAChD,MAAM,OAAO,KAAK,MAAM,CAAC;AAAA,QAC3B,CAAC;AAAA,QACD,KAAK,cAAc,YAAY,SAAS,WAAW;AAAA,QACnD,KAAK,KAAK,WAAW,eAAe,OAAO;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,IAAI,aAAa;AAAA,MACf,WAAW,WAAW,KAAK,UAAU;AAAA,QACnC,IAAI,QAAQ,SAAS,IAAI;AAAA,UACvB,cAAc;AAAA,UACd,MAAM,SAAS,KAAK,IAAI,KAAK,MAAM,CAAC,GAAG,OAAO;AAAA,UAC9C,KAAK,cAAc,QAAQ,OAAO;AAAA,UAClC,KAAK,KAAK,aAAa,OAAO;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,aAAa;AAAA,MACf,MAAM,SAAS,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC;AAAA,MACrC,KAAK,cAAc,MAAM;AAAA,IAC3B;AAAA,IACA,IAAI,KAAK,QAAQ,QAAQ,KAAK,gBAAgB;AAAA,MAC5C,KAAK,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,KAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,IAAI,KAAK,QAAQ,WAAW,KAAK,qBAAqB,KAAK,sBAAsB,MAAM;AAAA,MACrF,KAAK,cAAc;AAAA,MACnB,MAAM;AAAA,MACN,KAAK,oBAAoB;AAAA,IAC3B;AAAA,IACA,MAAM,aAAa,EAAC,MAAM,KAAK,MAAM,SAAS,KAAK,QAAO;AAAA,IAC1D,IAAI,KAAK;AAAA,MACP,KAAK,kBAAkB;AAAA,IACzB;AAAA,IACA,IAAI,CAAC,KAAK,kBAAkB,KAAK,KAAK,IAAI;AAAA,MACxC,KAAK,KAAK,WAAW;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,GAAG,CAAC,MAAM,SAAS;AAAA,IACjB,MAAM,aAAa;AAAA,MACjB,GAAG,KAAK,cAAc;AAAA,MACtB,GAAG,UAAU,QAAQ,UAAU,CAAC;AAAA,IAClC;AAAA,IACA,MAAM,aAAa,cAAc,UAAU;AAAA,IAC3C,IAAI,wBAAwB,CAAC;AAAA,IAC7B,MAAM,oBAAoB,KAAK,QAAQ,IAAI;AAAA,IAC3C,IAAI,oBAAoB,IAAI;AAAA,MAC1B,wBAAwB,KAAK,MAAM,oBAAoB,CAAC;AAAA,MACxD,OAAO,KAAK,MAAM,GAAG,iBAAiB;AAAA,IACxC;AAAA,IACA,IAAI,SAAS,KAAK,MAAM,UAAU;AAAA,IAClC,SAAS,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS;AAAA,MACjD,OAAO,SAAS,SAAS,CAAC,GAAG,GAAG,GAAG;AAAA,SAChC,oBAAoB,IAAI,IAAI,OAAO;AAAA,MACtC,CAAC;AAAA,OACA,EAAC,GAAG,CAAC,EAAC,CAAC;AAAA,IACV,MAAM,OAAO,OAAO;AAAA,IACpB,MAAM,UAAU;AAAA,MACd,MAAM;AAAA,IACR;AAAA,IACA,MAAM,gBAAgB,WAAW,QAAQ,OAAO,2BAA2B,QAAQ,OAAO,2BAA2B,KAAK,cAAc,OAAO;AAAA,IAC/I,IAAI,aAAa,OAAO,OAAO,IAAI;AAAA,IACnC,WAAW,aAAa,YAAY;AAAA,MAClC,IAAI,CAAC,iBAAiB,UAAU,OAAO,YAAiB,WAAG;AAAA,QACzD,WAAW,QAAQ,UAAU,OAAO;AAAA,UAClC,QAAQ,QAAQ,UAAU,OAAO;AAAA,QACnC;AAAA,MACF;AAAA,MACA,IAAI,MAAM,QAAQ,UAAU,OAAO,IAAI,GAAG;AAAA,QACxC,IAAI,WAAW,UAAU,UAAe,WAAG;AAAA,UACzC,WAAW,UAAU,QAAQ,OAAO,OAAO,IAAI;AAAA,UAC/C,WAAW,UAAU,MAAM,qBAAqB;AAAA,UAChD,WAAW,UAAU,MAAM,uBAAuB,UAAU,OAAO,KAAK;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAAA,MACrC,IAAI,QAAQ,KAAK;AAAA,QACf,MAAM,OAAO,IAAI,MAAM,GAAG;AAAA,QAC1B,WAAW,SAAS,MAAM,OAAO,IAAI;AAAA,QACrC,UAAU,SAAS,UAAU;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAEF,iBAAiB,GAAG;AAAA,IAClB,QAAO,MAAM,SAAS,gBAAgB,YAAW;AAAA,IACjD,IAAI,CAAC,WAAW,CAAC,QAAQ;AAAA,MACvB;AAAA,IACF,QAAQ,oBAAoB;AAAA,IAC5B,QAAQ,iBAAiB;AAAA,IACzB,QAAQ,kBAAkB;AAAA,IAC1B,MAAM,aAAa,CAAC;AAAA,IACpB,QAAQ,KAAK,QAAQ,CAAC,KAAK,UAAU;AAAA,MACnC,IAAI,IAAI,UAAU;AAAA,QAChB,WAAW,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,MACnC,EAAO;AAAA,QACL,WAAW,KAAK,KAAK,MAAM;AAAA;AAAA,KAE9B;AAAA,IACD,WAAW,KAAK,OAAO;AAAA,IACvB,OAAO,QAAQ,cAAc,MAAM,MAAM,UAAU;AAAA;AAEvD;AAEA,IAAM,MAAM,CAAC,OAAO,OAAO,IAAI,IAAI,IAAI;AAEvC,IAAe;;;AC5lBf;AACA;AACA;AAqCA,IAAM,iBAAiC;AAAA,EACrC,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,cAAc;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,WAAW,CAAC;AAAA,EACd;AACF;AASA,SAAS,cAAc,GAAa;AAAA,EAClC,MAAM,QAAkB,CAAC;AAAA,EAGzB,MAAM,gBAAgB,KAAK,QAAQ,IAAI,GAAG,aAAa,aAAa;AAAA,EACpE,MAAM,KAAK,aAAa;AAAA,EAGxB,MAAM,aAAa,KAAK,QAAQ,GAAG,WAAW,YAAY,aAAa;AAAA,EACvE,MAAM,KAAK,UAAU;AAAA,EAErB,OAAO;AAAA;AAMT,SAAS,cAAc,GAAkB;AAAA,EACvC,WAAW,QAAQ,eAAe,GAAG;AAAA,IACnC,IAAI,WAAW,IAAI,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,cAAc,CAAC,MAA4C;AAAA,EAClE,IAAI;AAAA,IACF,MAAM,UAAU,aAAa,MAAM,OAAO;AAAA,IAC1C,OAAO,KAAK,MAAM,OAAO;AAAA,IACzB,OAAO,OAAO;AAAA,IACd,QAAQ,KAAK,wCAAwC,MAAM;AAAA,IAC3D,OAAO;AAAA;AAAA;AAOX,SAAS,eAAe,GAA0B;AAAA,EAChD,MAAM,QAAQ,eAAe;AAAA,EAC7B,IAAI,SAAgC,CAAC;AAAA,EAGrC,WAAW,QAAQ,MAAM,QAAQ,GAAG;AAAA,IAClC,IAAI,WAAW,IAAI,GAAG;AAAA,MACpB,MAAM,SAAS,eAAe,IAAI;AAAA,MAClC,IAAI,QAAQ;AAAA,QACV,SAAS,UAAU,QAAQ,MAAM;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,aAAa,GAA0B;AAAA,EAC9C,MAAM,SAAgC,CAAC;AAAA,EAGvC,IAAI,QAAQ,IAAI,YAAY;AAAA,IAC1B,OAAO,SAAS,OAAO,UAAU,CAAC;AAAA,IAClC,OAAO,OAAO,MAAM,QAAQ,IAAI;AAAA,EAClC;AAAA,EACA,IAAI,QAAQ,IAAI,cAAc;AAAA,IAC5B,OAAO,SAAS,OAAO,UAAU,CAAC;AAAA,IAClC,OAAO,OAAO,eAAe,QAAQ,IAAI;AAAA,EAC3C;AAAA,EAGA,IAAI,QAAQ,IAAI,uBAAuB;AAAA,IACrC,OAAO,SAAS,OAAO,UAAU,CAAC;AAAA,IAClC,OAAO,OAAO,cAAc,QAAQ,IAAI;AAAA,EAC1C;AAAA,EACA,IAAI,QAAQ,IAAI,iBAAiB,WAAW;AAAA,IAC1C,OAAO,SAAS,OAAO,UAAU,CAAC;AAAA,IAClC,OAAO,OAAO,MAAM,QAAQ,IAAI,iBAAiB,WAAW,QAAQ,IAAI,iBAAiB;AAAA,EAC3F;AAAA,EAEA,OAAO;AAAA;AAUT,SAAS,SAA2B,CAAC,GAAM,GAAkB;AAAA,EAC3D,MAAM,SAAS,KAAK,EAAE;AAAA,EAEtB,WAAW,OAAO,GAAG;AAAA,IACnB,IAAI,OAAO,UAAU,eAAe,KAAK,GAAG,GAAG,GAAG;AAAA,MAChD,MAAM,SAAS,EAAE;AAAA,MACjB,MAAM,SAAS,EAAE;AAAA,MAEjB,IACE,WAAW,aACX,OAAO,WAAW,YAClB,CAAC,MAAM,QAAQ,MAAM,KACrB,WAAW,aACX,OAAO,WAAW,YAClB,CAAC,MAAM,QAAQ,MAAM,GACrB;AAAA,QACC,OAAmC,OAAO,UAAU,QAAkB,MAAgB;AAAA,MACzF,EAAO,SAAI,WAAW,WAAW;AAAA,QAC9B,OAAmC,OAAO;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,iBAAiB,CAAC,SAAgD;AAAA,EACzE,OAAO;AAAA,IACL,QAAQ;AAAA,SACH,eAAe;AAAA,SACf,QAAQ;AAAA,IACb;AAAA,IACA,QAAQ;AAAA,SACH,eAAe;AAAA,SACf,QAAQ;AAAA,IACb;AAAA,IACA,QAAQ;AAAA,SACH,eAAe;AAAA,SACf,QAAQ;AAAA,IACb;AAAA,EACF;AAAA;AAOF,IAAI,eAAsC;AAWnC,SAAS,UAAU,GAAmB;AAAA,EAC3C,IAAI,cAAc;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,aAAa,gBAAgB;AAAA,EAGnC,MAAM,YAAY,cAAc;AAAA,EAGhC,MAAM,SAAS,UAAU,YAAY,SAAS;AAAA,EAC9C,eAAe,kBAAkB,MAAM;AAAA,EAEvC,OAAO;AAAA;AAaF,SAAS,mBAAmB,GAAkB;AAAA,EACnD,OAAO,eAAe;AAAA;AAMjB,SAAS,oBAAoB,GAAa;AAAA,EAC/C,OAAO,eAAe;AAAA;AAUjB,SAAS,YAAY,GAAW;AAAA,EACrC,OAAO,WAAW,EAAE,OAAO;AAAA;AAMtB,SAAS,eAAe,GAAW;AAAA,EACxC,OAAO,WAAW,EAAE,OAAO;AAAA;AAMtB,SAAS,cAAc,GAAW;AAAA,EACvC,OAAO,WAAW,EAAE,OAAO;AAAA;AAatB,SAAS,kBAAkB,GAAa;AAAA,EAC7C,OAAO,WAAW,EAAE,OAAO;AAAA;;;ACtStB,IAAM,aAAa,aAAa;AAChC,IAAM,gBAAgB,gBAAgB;;;ACbtC,IAAM,UAAU,CAAC,KAAK,cAAc,CAAC,MAE5C,IAAI,SAAS,QAER,YAAY,SAAS,KAAK,KAAK,IAAI,SAAS,OAE5C,YAAY,SAAS,OAAO,KAAK,IAAI,QAAQ,IAAI,SAAS;AACxD,IAAM,YAAY,CAAC,KAAK,cAAc,CAAC,MAE9C,IAAI,SAAS,UAER,YAAY,SAAS,KAAK,KAAK,IAAI,SAAS,OAE5C,YAAY,SAAS,OAAO,KAAK,IAAI,QAAQ,IAAI,SAAS;AAExD,IAAM,iBAAiB,CAAC,QAAQ,IAAI,SAAS;AAE7C,IAAM,cAAc,CAAC,QAAQ,aAAa,SAAS,IAAI,IAAI;AAC3D,IAAM,aAAa,CAAC,QAAQ,IAAI,SAAS,WAAW,IAAI,SAAS;;AClBjE,MAAM,yBAAyB,MAAM;AAAA,EACxC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,WAAW,CAAC,SAAS;AAAA,IACjB,MAAM;AAAA,IACN,KAAK,QAAQ,SAAS;AAAA;AAE9B;AAAA;AACO,MAAM,0BAA0B,MAAM;AAAA,EACzC,OAAO;AAAA,EACP,UAAU;AACd;AAAA;AACO,MAAM,wBAAwB,MAAM;AAAA,EACvC,OAAO;AACX;AAAA;AACO,MAAM,kBAAkB,MAAM;AAAA,EACjC,OAAO;AACX;AAAA;AACO,MAAM,wBAAwB,MAAM;AAAA,EACvC,OAAO;AACX;;ACpBA,0BAAS;;;ACCT;AAEA,IAAM,cAAc,IAAI;AACxB,SAAS,WAAW,CAAC,IAAI;AAAA,EACrB,MAAM,QAAQ;AAAA,IACV;AAAA,IACA,OAAO,CAAC;AAAA,IACR,cAAc,CAAC;AAAA,IACf,aAAa,CAAC;AAAA,IACd,OAAO;AAAA,IACP,YAAY,GAAG;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAGJ,SAAS,SAAS,CAAC,IAAI,IAAI;AAAA,EAC9B,MAAM,QAAQ,YAAY,EAAE;AAAA,EAC5B,OAAO,YAAY,IAAI,OAAO,MAAM;AAAA,IAChC,SAAS,KAAK,CAAC,QAAQ;AAAA,MACnB,MAAM,eAAe,MAAM;AAAA,QACvB,MAAM,QAAQ;AAAA,QACd,OAAO;AAAA;AAAA,MAEX,MAAM,aAAa;AAAA;AAAA,IAEvB,OAAO,GAAG,KAAK;AAAA,GAClB;AAAA;AAGL,SAAS,QAAQ,GAAG;AAAA,EAChB,MAAM,QAAQ,YAAY,SAAS;AAAA,EACnC,IAAI,CAAC,OAAO;AAAA,IACR,MAAM,IAAI,UAAU,mEAAmE;AAAA,EAC3F;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,QAAQ,GAAG;AAAA,EACvB,OAAO,SAAS,EAAE;AAAA;AAGf,SAAS,WAAW,CAAC,IAAI;AAAA,EAC5B,MAAM,UAAU,IAAI,SAAS;AAAA,IACzB,MAAM,QAAQ,SAAS;AAAA,IACvB,IAAI,eAAe;AAAA,IACnB,MAAM,kBAAkB,MAAM;AAAA,IAC9B,MAAM,eAAe,MAAM;AAAA,MACvB,eAAe;AAAA;AAAA,IAEnB,MAAM,cAAc,GAAG,GAAG,IAAI;AAAA,IAC9B,IAAI,cAAc;AAAA,MACd,gBAAgB;AAAA,IACpB;AAAA,IACA,MAAM,eAAe;AAAA,IACrB,OAAO;AAAA;AAAA,EAEX,OAAO,cAAc,KAAK,OAAO;AAAA;AAE9B,SAAS,WAAW,CAAC,IAAI;AAAA,EAC5B,MAAM,QAAQ,SAAS;AAAA,EACvB,QAAQ,UAAU;AAAA,EAClB,MAAM,UAAU;AAAA,IACZ,GAAG,GAAG;AAAA,MACF,OAAO,MAAM,MAAM;AAAA;AAAA,IAEvB,GAAG,CAAC,OAAO;AAAA,MACP,MAAM,MAAM,SAAS;AAAA;AAAA,IAEzB,aAAa,SAAS,MAAM;AAAA,EAChC;AAAA,EACA,MAAM,cAAc,GAAG,OAAO;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AAAA;AAEJ,SAAS,YAAY,GAAG;AAAA,EAC3B,SAAS,EAAE,aAAa;AAAA;AAErB,IAAM,kBAAkB;AAAA,EAC3B,KAAK,CAAC,IAAI;AAAA,IACN,MAAM,QAAQ,SAAS;AAAA,IACvB,QAAQ,UAAU;AAAA,IAClB,MAAM,YAAY,KAAK,MAAM;AAAA,MACzB,MAAM,aAAa,SAAS;AAAA,MAC5B,MAAM,UAAU,GAAG,SAAS,CAAC;AAAA,MAC7B,IAAI,WAAW,QAAQ,OAAO,YAAY,YAAY;AAAA,QAClD,MAAM,IAAI,gBAAgB,+DAA+D;AAAA,MAC7F;AAAA,MACA,MAAM,aAAa,SAAS;AAAA,KAC/B;AAAA;AAAA,EAEL,GAAG,GAAG;AAAA,IACF,MAAM,QAAQ,SAAS;AAAA,IACvB,YAAY,MAAM;AAAA,MACd,MAAM,YAAY,QAAQ,CAAC,WAAW;AAAA,QAClC,OAAO;AAAA,OACV;AAAA,MAGD,MAAM,YAAY,SAAS;AAAA,KAC9B,EAAE;AAAA;AAAA,EAEP,QAAQ,GAAG;AAAA,IACP,MAAM,QAAQ,SAAS;AAAA,IACvB,MAAM,aAAa,QAAQ,CAAC,YAAY;AAAA,MACpC,UAAU;AAAA,KACb;AAAA,IACD,MAAM,YAAY,SAAS;AAAA,IAC3B,MAAM,aAAa,SAAS;AAAA;AAEpC;;;AD3GO,SAAS,QAAQ,CAAC,cAAc;AAAA,EACnC,OAAO,YAAY,CAAC,YAAY;AAAA,IAC5B,MAAM,WAAW,eAAc,KAAK,SAAS,QAAQ,CAAC,UAAU;AAAA,MAE5D,IAAI,QAAQ,IAAI,MAAM,UAAU;AAAA,QAC5B,QAAQ,IAAI,QAAQ;AAAA,QAEpB,aAAa;AAAA,MACjB;AAAA,KACH;AAAA,IACD,IAAI,QAAQ,aAAa;AAAA,MACrB,OAAO,CAAC,QAAQ,IAAI,GAAG,QAAQ;AAAA,IACnC;AAAA,IACA,MAAM,QAAQ,OAAO,iBAAiB,aAAa,aAAa,IAAI;AAAA,IACpE,QAAQ,IAAI,KAAK;AAAA,IACjB,OAAO,CAAC,OAAO,QAAQ;AAAA,GAC1B;AAAA;;;AEjBE,SAAS,SAAS,CAAC,IAAI,UAAU;AAAA,EACpC,YAAY,CAAC,YAAY;AAAA,IACrB,MAAM,UAAU,QAAQ,IAAI;AAAA,IAC5B,MAAM,aAAa,CAAC,MAAM,QAAQ,OAAO,KAAK,SAAS,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;AAAA,IACnG,IAAI,YAAY;AAAA,MACZ,gBAAgB,MAAM,EAAE;AAAA,IAC5B;AAAA,IACA,QAAQ,IAAI,QAAQ;AAAA,GACvB;AAAA;;;ACTL;;;ACGA;AAEA,SAAS,kBAAkB,GAAG;AAAA,EAC1B,IAAI,SAAQ,aAAa,SAAS;AAAA,IAC9B,OAAO,SAAQ,IAAI,YAAY;AAAA,EACnC;AAAA,EACA,OAAQ,QAAQ,SAAQ,IAAI,aAAa,KACrC,QAAQ,SAAQ,IAAI,mBAAmB,KACvC,SAAQ,IAAI,kBAAkB,kBAC9B,SAAQ,IAAI,oBAAoB,sBAChC,SAAQ,IAAI,oBAAoB,YAChC,SAAQ,IAAI,YAAY,oBACxB,SAAQ,IAAI,YAAY,eACxB,SAAQ,IAAI,yBAAyB;AAAA;AAG7C,IAAM,SAAS;AAAA,EACX,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,eAAe;AAAA,EACf,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,kCAAkC;AAAA,EAClC,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mCAAmC;AAAA,EACnC,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,+BAA+B;AAAA,EAC/B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,qCAAqC;AAAA,EACrC,yBAAyB;AAAA,EACzB,+BAA+B;AAAA,EAC/B,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mCAAmC;AAAA,EACnC,uBAAuB;AAAA,EACvB,6BAA6B;AAAA,EAC7B,qBAAqB;AAAA,EACrB,qCAAqC;AAAA,EACrC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,6CAA6C;AAAA,EAC7C,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AACf;AACA,IAAM,qBAAqB;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;AACA,IAAM,yBAAyB;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACd;AACO,IAAM,cAAc;AAAA,KACpB;AAAA,KACA;AACP;AACO,IAAM,kBAAkB;AAAA,KACxB;AAAA,KACA;AACP;AACA,IAAM,gBAAgB,mBAAmB;AACzC,IAAM,UAAU,gBACV,cACA;AACN,IAAe;AACf,IAAM,eAAe,OAAO,QAAQ,kBAAkB;;;AD1S/C,IAAM,eAAe;AAAA,EACxB,QAAQ;AAAA,IACJ,MAAM,UAAU,QAAQ,GAAG;AAAA,IAC3B,MAAM,UAAU,SAAS,cAAQ,IAAI;AAAA,EACzC;AAAA,EACA,SAAS;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,CAAC,KAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,UAAU,UAAU,UAAU,KAAK,CAAC;AAAA,EACvG;AAAA,EACA,OAAO;AAAA,IACH,QAAQ,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,IACxC,SAAS,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,IACzC,OAAO,CAAC,SAAS,UAAU,OAAO,KAAK,MAAM;AAAA,IAC7C,eAAe,CAAC,SAAS,UAAU,OAAO,IAAI,OAAO;AAAA,IACrD,MAAM,CAAC,SAAS,UAAU,OAAO,IAAI;AAAA,IACrC,WAAW,CAAC,SAAS,UAAU,QAAQ,IAAI;AAAA,IAC3C,KAAK,CAAC,SAAS,UAAU,QAAQ,UAAU,QAAQ,IAAI,OAAO,CAAC;AAAA,EACnE;AACJ;;;AEnBA,SAAS,aAAa,CAAC,OAAO;AAAA,EAC1B,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IACvC,OAAO;AAAA,EACX,IAAI,QAAQ;AAAA,EACZ,OAAO,OAAO,eAAe,KAAK,MAAM,MAAM;AAAA,IAC1C,QAAQ,OAAO,eAAe,KAAK;AAAA,EACvC;AAAA,EACA,OAAO,OAAO,eAAe,KAAK,MAAM;AAAA;AAE5C,SAAS,UAAS,IAAI,SAAS;AAAA,EAC3B,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,OAAO,SAAS;AAAA,IACvB,YAAY,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,MAC5C,MAAM,YAAY,OAAO;AAAA,MACzB,OAAO,OACH,cAAc,SAAS,KAAK,cAAc,KAAK,IACzC,WAAU,WAAW,KAAK,IAC1B;AAAA,IACd;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,SAAS,IAAI,QAAQ;AAAA,EACjC,MAAM,gBAAgB;AAAA,IAClB;AAAA,IACA,GAAG,OAAO,OAAO,CAAC,UAAU,SAAS,IAAI;AAAA,EAC7C;AAAA,EACA,OAAO,WAAU,GAAG,aAAa;AAAA;;;ACzB9B,SAAS,SAAS,GAAG,SAAS,QAAQ,SAAU;AAAA,EACnD,OAAO,YAAY,iBAAiB,SAAS,KAAK;AAAA,EAClD,OAAO,MAAM,WAAW,SAAS,CAAC;AAAA,EAClC,QAAQ,QAAQ,YAAY,UAAU,KAAK;AAAA,EAC3C,UAAU,MAAM;AAAA,IACZ,IAAI,WAAW,WAAW;AAAA,MACtB,IAAI;AAAA,MACJ,IAAI,MAAM;AAAA,MAEV,MAAM,eAAe,WAAW,MAAM;AAAA,QAClC,cAAc,IAAI;AAAA,QAClB,eAAe,YAAY,MAAM;AAAA,UAC7B,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM,QAAQ,OAAO,MAAM;AAAA,WACpC,QAAQ,QAAQ;AAAA,SACpB,GAAG;AAAA,MACN,OAAO,MAAM;AAAA,QACT,aAAa,YAAY;AAAA,QACzB,cAAc,YAAY;AAAA;AAAA,IAElC,EACK;AAAA,MACD,cAAc,KAAK;AAAA;AAAA,KAExB,CAAC,MAAM,CAAC;AAAA,EACX,IAAI,YAAY;AAAA,IACZ,OAAO,QAAQ,OAAO;AAAA,EAC1B;AAAA,EAEA,MAAM,WAAW,WAAW,YAAY,SAAS;AAAA,EACjD,OAAO,OAAO,WAAW,WAAW,SAAU,OAAO,aAAa,OAAO;AAAA;;AChCtE,SAAS,OAAO,CAAC,IAAI,cAAc;AAAA,EACtC,OAAO,YAAY,CAAC,YAAY;AAAA,IAC5B,MAAM,OAAO,QAAQ,IAAI;AAAA,IACzB,IAAI,CAAC,QACD,KAAK,aAAa,WAAW,aAAa,UAC1C,KAAK,aAAa,KAAK,CAAC,KAAK,MAAM,QAAQ,aAAa,EAAE,GAAG;AAAA,MAC7D,MAAM,QAAQ,GAAG;AAAA,MACjB,QAAQ,IAAI,EAAE,OAAO,aAAa,CAAC;AAAA,MACnC,OAAO;AAAA,IACX;AAAA,IACA,OAAO,KAAK;AAAA,GACf;AAAA;;ACXE,SAAS,MAAM,CAAC,KAAK;AAAA,EACxB,OAAO,SAAS,EAAE,SAAS,IAAI,CAAC,EAAE;AAAA;;ACC/B,SAAS,WAAW,CAAC,aAAa;AAAA,EACrC,MAAM,SAAS,OAAO,WAAW;AAAA,EACjC,OAAO,UAAU;AAAA,EACjB,UAAU,CAAC,OAAO;AAAA,IACd,IAAI,SAAS;AAAA,IACb,MAAM,UAAU,YAAY,CAAC,QAAQ,UAAU;AAAA,MAC3C,IAAI;AAAA,QACA;AAAA,MACC,OAAO,QAAQ,OAAO,EAAE;AAAA,KAChC;AAAA,IACD,GAAG,MAAM,GAAG,YAAY,OAAO;AAAA,IAC/B,OAAO,MAAM;AAAA,MACT,SAAS;AAAA,MACT,GAAG,MAAM,eAAe,YAAY,OAAO;AAAA;AAAA,KAEhD,CAAC,CAAC;AAAA;;AClBT;;;ACAA,SAAwB,SAAS,GAAE,YAAY,UAAS,CAAC,GAAG;AAAA,EAE3D,MAAM,KAAK;AAAA,EAGX,MAAM,MAAM,0BAA0B;AAAA,EAGtC,MAAM,MAAM;AAAA,EAEZ,MAAM,UAAU,GAAG,OAAO;AAAA,EAE1B,OAAO,IAAI,OAAO,SAAS,YAAY,YAAY,GAAG;AAAA;;;ACVvD,IAAM,QAAQ,UAAU;AAExB,SAAwB,SAAS,CAAC,QAAQ;AAAA,EACzC,IAAI,OAAO,WAAW,UAAU;AAAA,IAC/B,MAAM,IAAI,UAAU,gCAAgC,OAAO,UAAU;AAAA,EACtE;AAAA,EAKA,OAAO,OAAO,QAAQ,OAAO,EAAE;AAAA;;;ACVhC,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,OACT,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,MAAM,QACN,KAAK,QAAS,KAAK,QACnB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AAAA;AAGzB,SAAS,MAAM,CAAC,GAAG;AAAA,EAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK;AAAA;;;ACxW1B,SAAS,QAAQ,CAAC,WAAW;AAAA,EAC5B,IAAI,CAAC,OAAO,cAAc,SAAS,GAAG;AAAA,IACrC,MAAM,IAAI,UAAU,gCAAgC,OAAO,cAAc;AAAA,EAC1E;AAAA;AASM,SAAS,cAAc,CAAC,aAAY,kBAAkB,UAAS,CAAC,GAAG;AAAA,EACzE,SAAS,SAAS;AAAA,EAElB,IACC,YAAY,SAAS,KAClB,OAAO,SAAS,KACf,mBAAmB,YAAY,SAAS,GAC3C;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;;;ACvBR;AAEA,IAAM,YAAY,IAAI,KAAK;AAE3B,IAAM,iCAAiC;AAEvC,SAAwB,WAAW,CAAC,QAAQ,UAAU,CAAC,GAAG;AAAA,EACzD,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AAAA,IACtD,OAAO;AAAA,EACR;AAAA,EAEA;AAAA,IACC,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,MACpB;AAAA,EAEJ,IAAI,CAAC,sBAAsB;AAAA,IAC1B,SAAS,UAAU,MAAM;AAAA,EAC1B;AAAA,EAEA,IAAI,OAAO,WAAW,GAAG;AAAA,IACxB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,QAAQ;AAAA,EACZ,MAAM,wBAAwB,EAAC,iBAAiB,CAAC,kBAAiB;AAAA,EAElE,aAAY,SAAS,eAAc,UAAU,QAAQ,MAAM,GAAG;AAAA,IAC7D,MAAM,YAAY,UAAU,YAAY,CAAC;AAAA,IAGzC,IAAI,aAAa,MAAS,aAAa,OAAQ,aAAa,KAAO;AAAA,MAClE;AAAA,IACD;AAAA,IAGA,IACE,aAAa,QAAW,aAAa,QACnC,cAAc,OAChB;AAAA,MACD;AAAA,IACD;AAAA,IAGA,IACE,aAAa,OAAU,aAAa,OACjC,aAAa,QAAW,aAAa,QACrC,aAAa,QAAW,aAAa,QACrC,aAAa,QAAW,aAAa,QACrC,aAAa,SAAW,aAAa,OACxC;AAAA,MACD;AAAA,IACD;AAAA,IAGA,IAAI,aAAa,SAAW,aAAa,OAAS;AAAA,MACjD;AAAA,IACD;AAAA,IAGA,IAAI,aAAa,SAAW,aAAa,OAAS;AAAA,MACjD;AAAA,IACD;AAAA,IAGA,IAAI,+BAA+B,KAAK,SAAS,GAAG;AAAA,MACnD;AAAA,IACD;AAAA,IAGA,IAAI,2BAAW,EAAE,KAAK,SAAS,GAAG;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IAEA,SAAS,eAAe,WAAW,qBAAqB;AAAA,EACzD;AAAA,EAEA,OAAO;AAAA;;;AChFR,IAAM,yBAAyB;AAE/B,IAAM,aAAa,CAAC,SAAS,MAAM,UAAQ,QAAU,OAAO;AAE5D,IAAM,cAAc,CAAC,SAAS,MAAM,UAAQ,QAAU,KAAK,YAAY;AAEvE,IAAM,cAAc,CAAC,SAAS,MAAM,CAAC,KAAK,OAAO,SAAS,QAAU,KAAK,YAAY,OAAO,SAAS;AAErG,IAAM,SAAS;AAAA,EACd,UAAU;AAAA,IACT,OAAO,CAAC,GAAG,CAAC;AAAA,IAEZ,MAAM,CAAC,GAAG,EAAE;AAAA,IACZ,KAAK,CAAC,GAAG,EAAE;AAAA,IACX,QAAQ,CAAC,GAAG,EAAE;AAAA,IACd,WAAW,CAAC,GAAG,EAAE;AAAA,IACjB,UAAU,CAAC,IAAI,EAAE;AAAA,IACjB,SAAS,CAAC,GAAG,EAAE;AAAA,IACf,QAAQ,CAAC,GAAG,EAAE;AAAA,IACd,eAAe,CAAC,GAAG,EAAE;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACN,OAAO,CAAC,IAAI,EAAE;AAAA,IACd,KAAK,CAAC,IAAI,EAAE;AAAA,IACZ,OAAO,CAAC,IAAI,EAAE;AAAA,IACd,QAAQ,CAAC,IAAI,EAAE;AAAA,IACf,MAAM,CAAC,IAAI,EAAE;AAAA,IACb,SAAS,CAAC,IAAI,EAAE;AAAA,IAChB,MAAM,CAAC,IAAI,EAAE;AAAA,IACb,OAAO,CAAC,IAAI,EAAE;AAAA,IAGd,aAAa,CAAC,IAAI,EAAE;AAAA,IACpB,MAAM,CAAC,IAAI,EAAE;AAAA,IACb,MAAM,CAAC,IAAI,EAAE;AAAA,IACb,WAAW,CAAC,IAAI,EAAE;AAAA,IAClB,aAAa,CAAC,IAAI,EAAE;AAAA,IACpB,cAAc,CAAC,IAAI,EAAE;AAAA,IACrB,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,eAAe,CAAC,IAAI,EAAE;AAAA,IACtB,YAAY,CAAC,IAAI,EAAE;AAAA,IACnB,aAAa,CAAC,IAAI,EAAE;AAAA,EACrB;AAAA,EACA,SAAS;AAAA,IACR,SAAS,CAAC,IAAI,EAAE;AAAA,IAChB,OAAO,CAAC,IAAI,EAAE;AAAA,IACd,SAAS,CAAC,IAAI,EAAE;AAAA,IAChB,UAAU,CAAC,IAAI,EAAE;AAAA,IACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,IACf,WAAW,CAAC,IAAI,EAAE;AAAA,IAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,IACf,SAAS,CAAC,IAAI,EAAE;AAAA,IAGhB,eAAe,CAAC,KAAK,EAAE;AAAA,IACvB,QAAQ,CAAC,KAAK,EAAE;AAAA,IAChB,QAAQ,CAAC,KAAK,EAAE;AAAA,IAChB,aAAa,CAAC,KAAK,EAAE;AAAA,IACrB,eAAe,CAAC,KAAK,EAAE;AAAA,IACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,IACxB,cAAc,CAAC,KAAK,EAAE;AAAA,IACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,IACzB,cAAc,CAAC,KAAK,EAAE;AAAA,IACtB,eAAe,CAAC,KAAK,EAAE;AAAA,EACxB;AACD;AAEO,IAAM,gBAAgB,OAAO,KAAK,OAAO,QAAQ;AACjD,IAAM,uBAAuB,OAAO,KAAK,OAAO,KAAK;AACrD,IAAM,uBAAuB,OAAO,KAAK,OAAO,OAAO;AACvD,IAAM,aAAa,CAAC,GAAG,sBAAsB,GAAG,oBAAoB;AAE3E,SAAS,cAAc,GAAG;AAAA,EACzB,MAAM,QAAQ,IAAI;AAAA,EAElB,YAAY,WAAW,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACxD,YAAY,WAAW,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,MACvD,OAAO,aAAa;AAAA,QACnB,MAAM,QAAU,MAAM;AAAA,QACtB,OAAO,QAAU,MAAM;AAAA,MACxB;AAAA,MAEA,MAAM,aAAa,OAAO;AAAA,MAE1B,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;AAAA,IAC7B;AAAA,IAEA,OAAO,eAAe,QAAQ,WAAW;AAAA,MACxC,OAAO;AAAA,MACP,YAAY;AAAA,IACb,CAAC;AAAA,EACF;AAAA,EAEA,OAAO,eAAe,QAAQ,SAAS;AAAA,IACtC,OAAO;AAAA,IACP,YAAY;AAAA,EACb,CAAC;AAAA,EAED,OAAO,MAAM,QAAQ;AAAA,EACrB,OAAO,QAAQ,QAAQ;AAAA,EAEvB,OAAO,MAAM,OAAO,WAAW;AAAA,EAC/B,OAAO,MAAM,UAAU,YAAY;AAAA,EACnC,OAAO,MAAM,UAAU,YAAY;AAAA,EACnC,OAAO,QAAQ,OAAO,WAAW,sBAAsB;AAAA,EACvD,OAAO,QAAQ,UAAU,YAAY,sBAAsB;AAAA,EAC3D,OAAO,QAAQ,UAAU,YAAY,sBAAsB;AAAA,EAG3D,OAAO,iBAAiB,QAAQ;AAAA,IAC/B,cAAc;AAAA,MACb,KAAK,CAAC,KAAK,OAAO,MAAM;AAAA,QAGvB,IAAI,QAAQ,SAAS,UAAU,MAAM;AAAA,UACpC,IAAI,MAAM,GAAG;AAAA,YACZ,OAAO;AAAA,UACR;AAAA,UAEA,IAAI,MAAM,KAAK;AAAA,YACd,OAAO;AAAA,UACR;AAAA,UAEA,OAAO,KAAK,OAAQ,MAAM,KAAK,MAAO,EAAE,IAAI;AAAA,QAC7C;AAAA,QAEA,OAAO,KACH,KAAK,KAAK,MAAM,MAAM,MAAM,CAAC,IAC7B,IAAI,KAAK,MAAM,QAAQ,MAAM,CAAC,IAC/B,KAAK,MAAM,OAAO,MAAM,CAAC;AAAA;AAAA,MAE7B,YAAY;AAAA,IACb;AAAA,IACA,UAAU;AAAA,MACT,KAAK,CAAC,KAAK;AAAA,QACV,MAAM,UAAU,yBAAyB,KAAK,IAAI,SAAS,EAAE,CAAC;AAAA,QAC9D,IAAI,CAAC,SAAS;AAAA,UACb,OAAO,CAAC,GAAG,GAAG,CAAC;AAAA,QAChB;AAAA,QAEA,KAAK,eAAe;AAAA,QAEpB,IAAI,YAAY,WAAW,GAAG;AAAA,UAC7B,cAAc,CAAC,GAAG,WAAW,EAAE,IAAI,eAAa,YAAY,SAAS,EAAE,KAAK,EAAE;AAAA,QAC/E;AAAA,QAEA,MAAM,UAAU,OAAO,SAAS,aAAa,EAAE;AAAA,QAE/C,OAAO;AAAA,UAEL,WAAW,KAAM;AAAA,UACjB,WAAW,IAAK;AAAA,UACjB,UAAU;AAAA,QAEX;AAAA;AAAA,MAED,YAAY;AAAA,IACb;AAAA,IACA,cAAc;AAAA,MACb,OAAO,SAAO,OAAO,aAAa,GAAG,OAAO,SAAS,GAAG,CAAC;AAAA,MACzD,YAAY;AAAA,IACb;AAAA,IACA,eAAe;AAAA,MACd,KAAK,CAAC,MAAM;AAAA,QACX,IAAI,OAAO,GAAG;AAAA,UACb,OAAO,KAAK;AAAA,QACb;AAAA,QAEA,IAAI,OAAO,IAAI;AAAA,UACd,OAAO,MAAM,OAAO;AAAA,QACrB;AAAA,QAEA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,IAAI,QAAQ,KAAK;AAAA,UAChB,QAAS,OAAO,OAAO,KAAM,KAAK;AAAA,UAClC,QAAQ;AAAA,UACR,OAAO;AAAA,QACR,EAAO;AAAA,UACN,QAAQ;AAAA,UAER,MAAM,YAAY,OAAO;AAAA,UAEzB,MAAM,KAAK,MAAM,OAAO,EAAE,IAAI;AAAA,UAC9B,QAAQ,KAAK,MAAM,YAAY,CAAC,IAAI;AAAA,UACpC,OAAQ,YAAY,IAAK;AAAA;AAAA,QAG1B,MAAM,QAAQ,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI;AAAA,QAE3C,IAAI,UAAU,GAAG;AAAA,UAChB,OAAO;AAAA,QACR;AAAA,QAGA,IAAI,SAAS,MAAO,KAAK,MAAM,IAAI,KAAK,IAAM,KAAK,MAAM,KAAK,KAAK,IAAK,KAAK,MAAM,GAAG;AAAA,QAEtF,IAAI,UAAU,GAAG;AAAA,UAChB,UAAU;AAAA,QACX;AAAA,QAEA,OAAO;AAAA;AAAA,MAER,YAAY;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACV,OAAO,CAAC,KAAK,OAAO,SAAS,OAAO,cAAc,OAAO,aAAa,KAAK,OAAO,IAAI,CAAC;AAAA,MACvF,YAAY;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACV,OAAO,SAAO,OAAO,cAAc,OAAO,aAAa,GAAG,CAAC;AAAA,MAC3D,YAAY;AAAA,IACb;AAAA,EACD,CAAC;AAAA,EAED,OAAO;AAAA;AAGR,IAAM,aAAa,eAAe;AAElC,IAAe;;;AC1Nf,IAAM,UAAU,IAAI,IAAI;AAAA,EACvB;AAAA,EACA;AACD,CAAC;AAED,IAAM,WAAW;AACjB,IAAM,mBAAmB;AACzB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB,GAAG;AAE5B,IAAM,eAAe,UAAQ,GAAG,QAAQ,OAAO,EAAE,KAAK,EAAE,QAAQ,WAAW,OAAO;AAClF,IAAM,oBAAoB,SAAO,GAAG,QAAQ,OAAO,EAAE,KAAK,EAAE,QAAQ,mBAAmB,MAAM;AAI7F,IAAM,cAAc,YAAU,OAAO,MAAM,GAAG,EAAE,IAAI,eAAa,YAAY,SAAS,CAAC;AAIvF,IAAM,WAAW,CAAC,MAAM,MAAM,YAAY;AAAA,EACzC,MAAM,aAAa,CAAC,GAAG,IAAI;AAAA,EAE3B,IAAI,iBAAiB;AAAA,EACrB,IAAI,qBAAqB;AAAA,EACzB,IAAI,UAAU,YAAY,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,EAEhD,YAAY,OAAO,cAAc,WAAW,QAAQ,GAAG;AAAA,IACtD,MAAM,kBAAkB,YAAY,SAAS;AAAA,IAE7C,IAAI,UAAU,mBAAmB,SAAS;AAAA,MACzC,KAAK,KAAK,SAAS,MAAM;AAAA,IAC1B,EAAO;AAAA,MACN,KAAK,KAAK,SAAS;AAAA,MACnB,UAAU;AAAA;AAAA,IAGX,IAAI,QAAQ,IAAI,SAAS,GAAG;AAAA,MAC3B,iBAAiB;AAAA,MAEjB,MAAM,0BAA0B,WAAW,MAAM,QAAQ,GAAG,QAAQ,IAAI,iBAAiB,MAAM,EAAE,KAAK,EAAE;AAAA,MACxG,qBAAqB,4BAA4B;AAAA,IAClD;AAAA,IAEA,IAAI,gBAAgB;AAAA,MACnB,IAAI,oBAAoB;AAAA,QACvB,IAAI,cAAc,kBAAkB;AAAA,UACnC,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,QACtB;AAAA,MACD,EAAO,SAAI,cAAc,qBAAqB;AAAA,QAC7C,iBAAiB;AAAA,MAClB;AAAA,MAEA;AAAA,IACD;AAAA,IAEA,WAAW;AAAA,IAEX,IAAI,YAAY,WAAW,QAAQ,WAAW,SAAS,GAAG;AAAA,MACzD,KAAK,KAAK,EAAE;AAAA,MACZ,UAAU;AAAA,IACX;AAAA,EACD;AAAA,EAIA,IAAI,CAAC,WAAW,KAAK,GAAG,EAAE,EAAE,SAAS,KAAK,KAAK,SAAS,GAAG;AAAA,IAC1D,KAAK,KAAK,SAAS,MAAM,KAAK,IAAI;AAAA,EACnC;AAAA;AAID,IAAM,+BAA+B,YAAU;AAAA,EAC9C,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,EAC9B,IAAI,OAAO,MAAM;AAAA,EAEjB,OAAO,OAAO,GAAG;AAAA,IAChB,IAAI,YAAY,MAAM,OAAO,EAAE,IAAI,GAAG;AAAA,MACrC;AAAA,IACD;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,IAAI,SAAS,MAAM,QAAQ;AAAA,IAC1B,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,KAAK,EAAE;AAAA;AAQlE,IAAM,OAAO,CAAC,QAAQ,SAAS,UAAU,CAAC,MAAM;AAAA,EAC/C,IAAI,QAAQ,SAAS,SAAS,OAAO,KAAK,MAAM,IAAI;AAAA,IACnD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,MAAM,UAAU,YAAY,MAAM;AAAA,EAClC,IAAI,OAAO,CAAC,EAAE;AAAA,EAEd,YAAY,OAAO,SAAS,OAAO,MAAM,GAAG,EAAE,QAAQ,GAAG;AAAA,IACxD,IAAI,QAAQ,SAAS,OAAO;AAAA,MAC3B,KAAK,KAAK,SAAS,KAAK,KAAK,GAAG,EAAE,EAAE,UAAU;AAAA,IAC/C;AAAA,IAEA,IAAI,YAAY,YAAY,KAAK,GAAG,EAAE,CAAC;AAAA,IAEvC,IAAI,UAAU,GAAG;AAAA,MAChB,IAAI,aAAa,YAAY,QAAQ,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAAA,QAEnF,KAAK,KAAK,EAAE;AAAA,QACZ,YAAY;AAAA,MACb;AAAA,MAEA,IAAI,YAAY,KAAK,QAAQ,SAAS,OAAO;AAAA,QAC5C,KAAK,KAAK,SAAS,MAAM;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,IAGA,IAAI,QAAQ,QAAQ,QAAQ,SAAS,SAAS;AAAA,MAC7C,MAAM,mBAAoB,UAAU;AAAA,MACpC,MAAM,yBAAyB,IAAI,KAAK,OAAO,QAAQ,SAAS,mBAAmB,KAAK,OAAO;AAAA,MAC/F,MAAM,yBAAyB,KAAK,OAAO,QAAQ,SAAS,KAAK,OAAO;AAAA,MACxE,IAAI,yBAAyB,wBAAwB;AAAA,QACpD,KAAK,KAAK,EAAE;AAAA,MACb;AAAA,MAEA,SAAS,MAAM,MAAM,OAAO;AAAA,MAC5B;AAAA,IACD;AAAA,IAEA,IAAI,YAAY,QAAQ,SAAS,WAAW,YAAY,KAAK,QAAQ,SAAS,GAAG;AAAA,MAChF,IAAI,QAAQ,aAAa,SAAS,YAAY,SAAS;AAAA,QACtD,SAAS,MAAM,MAAM,OAAO;AAAA,QAC5B;AAAA,MACD;AAAA,MAEA,KAAK,KAAK,EAAE;AAAA,IACb;AAAA,IAEA,IAAI,YAAY,QAAQ,SAAS,WAAW,QAAQ,aAAa,OAAO;AAAA,MACvE,SAAS,MAAM,MAAM,OAAO;AAAA,MAC5B;AAAA,IACD;AAAA,IAEA,KAAK,KAAK,SAAS,MAAM;AAAA,EAC1B;AAAA,EAEA,IAAI,QAAQ,SAAS,OAAO;AAAA,IAC3B,OAAO,KAAK,IAAI,SAAO,6BAA6B,GAAG,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,YAAY,KAAK,KAAK;AAAA,CAAI;AAAA,EAChC,MAAM,MAAM,CAAC,GAAG,SAAS;AAAA,EAGzB,IAAI,iBAAiB;AAAA,EAErB,YAAY,OAAO,cAAc,IAAI,QAAQ,GAAG;AAAA,IAC/C,eAAe;AAAA,IAEf,IAAI,QAAQ,IAAI,SAAS,GAAG;AAAA,MAC3B,QAAO,WAAU,IAAI,OAAO,QAAQ,4BAA4B,6BAA6B,mBAAmB,EAAE,KAAK,UAAU,MAAM,cAAc,CAAC,KAAK,EAAC,QAAQ,CAAC,EAAC;AAAA,MACtK,IAAI,OAAO,SAAS,WAAW;AAAA,QAC9B,MAAM,QAAO,OAAO,WAAW,OAAO,IAAI;AAAA,QAC1C,aAAa,UAAS,WAAW,YAAY;AAAA,MAC9C,EAAO,SAAI,OAAO,QAAQ,WAAW;AAAA,QACpC,YAAY,OAAO,IAAI,WAAW,IAAI,YAAY,OAAO;AAAA,MAC1D;AAAA,IACD;AAAA,IAEA,MAAM,OAAO,oBAAW,MAAM,IAAI,OAAO,UAAU,CAAC;AAAA,IAEpD,IAAI,IAAI,QAAQ,OAAO;AAAA,GAAM;AAAA,MAC5B,IAAI,WAAW;AAAA,QACd,eAAe,kBAAkB,EAAE;AAAA,MACpC;AAAA,MAEA,IAAI,cAAc,MAAM;AAAA,QACvB,eAAe,aAAa,IAAI;AAAA,MACjC;AAAA,IACD,EAAO,SAAI,cAAc;AAAA,GAAM;AAAA,MAC9B,IAAI,cAAc,MAAM;AAAA,QACvB,eAAe,aAAa,UAAU;AAAA,MACvC;AAAA,MAEA,IAAI,WAAW;AAAA,QACd,eAAe,kBAAkB,SAAS;AAAA,MAC3C;AAAA,IACD;AAAA,IAEA,kBAAkB,UAAU;AAAA,EAC7B;AAAA,EAEA,OAAO;AAAA;AAIR,SAAwB,QAAQ,CAAC,QAAQ,SAAS,SAAS;AAAA,EAC1D,OAAO,OAAO,MAAM,EAClB,UAAU,EACV,WAAW;AAAA,GAAQ;AAAA,CAAI,EACvB,MAAM;AAAA,CAAI,EACV,IAAI,UAAQ,KAAK,MAAM,SAAS,OAAO,CAAC,EACxC,KAAK;AAAA,CAAI;AAAA;;;APlNL,SAAS,UAAU,CAAC,SAAS,OAAO;AAAA,EACvC,OAAO,QACF,MAAM;AAAA,CAAI,EACV,QAAQ,CAAC,SAAS,SAAS,MAAM,OAAO,EAAE,MAAM,OAAO,MAAM,KAAK,CAAC,EACnE,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,EAC3B,KAAK;AAAA,CAAI;AAAA;AAMX,SAAS,aAAa,GAAG;AAAA,EAC5B,OAAO,yBAAS,EAAE,cAAc,IAAI,QAAQ,SAAS,EAAE,OAAO,CAAC;AAAA;;;AQrBnE,SAAS,kBAAkB,GAAG,QAAQ,eAAe,UAAU,QAAS;AAAA,EACpE,MAAM,QAAQ,OAAO;AAAA,IACjB,aAAa;AAAA,IACb,YAAY;AAAA,EAChB,CAAC;AAAA,EACD,QAAQ,aAAa,eAAe,MAAM;AAAA,EAC1C,MAAM,SAAS,KAAK,MAAM,WAAW,CAAC;AAAA,EACtC,MAAM,iBAAiB,cAAc,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC/E,MAAM,yBAAyB,cAC1B,MAAM,GAAG,MAAM,EACf,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC/C,IAAI,UAAU;AAAA,EACd,IAAI,iBAAiB,UAAU;AAAA,IAC3B,IAAI,MAAM;AAAA,MASN,UAAU;AAAA,MACV,IAEA,cAAc,QAEV,aAAa,UAEb,SAAS,aAAa,UAAU;AAAA,QAChC,UAAU,KAAK,IAEf,QAAQ,KAAK,IAAI,SAAS,UAAU,MAAM,IACpC,KAAK,IAEP,eAAe,cAAc,aAAa,UAAU,IAGpD,KAAK,IAAI,wBAAwB,WAAW,CAAC,IAEzC,cAAc,SAAS,UAAU;AAAA,MAC7C;AAAA,IACJ,EACK;AAAA,MASD,MAAM,mBAAmB,cACpB,MAAM,MAAM,EACZ,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAAA,MAC/C,UACI,mBAAmB,WAAW,SAEtB,WAAW,mBAEX,KAAK,IAAI,wBAAwB,MAAM;AAAA;AAAA,EAE3D;AAAA,EAEA,MAAM,QAAQ,cAAc;AAAA,EAC5B,MAAM,QAAQ,aAAa;AAAA,EAC3B,OAAO;AAAA;AAEJ,SAAS,aAAa,GAAG,OAAO,QAAQ,YAAY,UAAU,OAAO,QAAS;AAAA,EACjF,MAAM,QAAQ,cAAc;AAAA,EAC5B,MAAM,QAAQ,CAAC,SAAU,MAAM,MAAM,SAAU,MAAM,UAAU,MAAM;AAAA,EACrE,MAAM,gBAAgB,MAAM,IAAI,CAAC,MAAM,UAAU;AAAA,IAC7C,IAAI,QAAQ;AAAA,MACR,OAAO,CAAC;AAAA,IACZ,OAAO,WAAW,WAAW,EAAE,MAAM,OAAO,UAAU,UAAU,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM;AAAA,CAAI;AAAA,GAC/F;AAAA,EACD,MAAM,iBAAiB,cAAc,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC/E,MAAM,oBAAoB,CAAC,UAAU,cAAc,UAAU,CAAC;AAAA,EAC9D,MAAM,UAAU,mBAAmB,EAAE,QAAQ,eAAe,UAAU,KAAK,CAAC;AAAA,EAI5E,MAAM,aAAa,kBAAkB,MAAM,EAAE,MAAM,GAAG,QAAQ;AAAA,EAC9D,MAAM,qBAAqB,UAAU,WAAW,UAAU,WAAW,UAAU,WAAW,WAAW;AAAA,EAErG,MAAM,aAAa,MAAM,KAAK,EAAE,QAAQ,SAAS,CAAC;AAAA,EAClD,WAAW,OAAO,oBAAoB,WAAW,QAAQ,GAAG,UAAU;AAAA,EAEtE,MAAM,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC;AAAA,EAEpC,IAAI,gBAAgB,qBAAqB,WAAW;AAAA,EACpD,IAAI,cAAc,MAAM,SAAS,CAAC;AAAA,EAClC,OAAO,gBAAgB,YACnB,CAAC,YAAY,IAAI,WAAW,MAC3B,QAAQ,iBAAiB,WAAW,gBAAgB,SAAS,cAAc,SAAS;AAAA,IACrF,MAAM,QAAQ,kBAAkB,WAAW;AAAA,IAC3C,MAAM,aAAa,MAAM,MAAM,GAAG,WAAW,aAAa;AAAA,IAC1D,WAAW,OAAO,eAAe,WAAW,QAAQ,GAAG,UAAU;AAAA,IAEjE,YAAY,IAAI,WAAW;AAAA,IAC3B,iBAAiB,WAAW;AAAA,IAC5B,cAAc,MAAM,cAAc,CAAC;AAAA,EACvC;AAAA,EAEA,gBAAgB,qBAAqB;AAAA,EACrC,cAAc,MAAM,SAAS,CAAC;AAAA,EAC9B,OAAO,iBAAiB,KACpB,CAAC,YAAY,IAAI,WAAW,MAC3B,QAAQ,iBAAiB,WAAW,gBAAgB,SAAS,cAAc,SAAS;AAAA,IACrF,MAAM,QAAQ,kBAAkB,WAAW;AAAA,IAC3C,MAAM,aAAa,MAAM,MAAM,KAAK,IAAI,GAAG,MAAM,SAAS,gBAAgB,CAAC,CAAC;AAAA,IAC5E,WAAW,OAAO,gBAAgB,WAAW,SAAS,GAAG,WAAW,QAAQ,GAAG,UAAU;AAAA,IAEzF,YAAY,IAAI,WAAW;AAAA,IAC3B,iBAAiB,WAAW;AAAA,IAC5B,cAAc,MAAM,cAAc,CAAC;AAAA,EACvC;AAAA,EACA,OAAO,WAAW,OAAO,CAAC,SAAS,OAAO,SAAS,QAAQ,EAAE,KAAK;AAAA,CAAI;AAAA;;ACrH1E;AAFA;AACA,0BAAS;;;ACyBF,IAAM,UAAU,CAAC;AACxB,QAAQ,KAAK,UAAU,UAAU,SAAS;AAC1C,IAAI,QAAQ,aAAa,SAAS;AAAA,EAC9B,QAAQ,KAAK,WAAW,WAAW,aAAa,WAAW,WAAW,WAAW,WAAW,UAAU,WAAW,QAIjH;AACJ;AACA,IAAI,QAAQ,aAAa,SAAS;AAAA,EAC9B,QAAQ,KAAK,SAAS,WAAW,UAAU,WAAW;AAC1D;;;AC/BA,IAAM,YAAY,CAAC,aAAY,CAAC,CAAC,YAC7B,OAAO,aAAY,YACnB,OAAO,SAAQ,mBAAmB,cAClC,OAAO,SAAQ,SAAS,cACxB,OAAO,SAAQ,eAAe,cAC9B,OAAO,SAAQ,cAAc,cAC7B,OAAO,SAAQ,SAAS,cACxB,OAAO,SAAQ,QAAQ,YACvB,OAAO,SAAQ,OAAO;AAC1B,IAAM,eAAe,OAAO,IAAI,qBAAqB;AACrD,IAAM,SAAS;AACf,IAAM,uBAAuB,OAAO,eAAe,KAAK,MAAM;AAAA;AAE9D,MAAM,QAAQ;AAAA,EACV,UAAU;AAAA,IACN,WAAW;AAAA,IACX,MAAM;AAAA,EACV;AAAA,EACA,YAAY;AAAA,IACR,WAAW,CAAC;AAAA,IACZ,MAAM,CAAC;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,EACR,KAAK,KAAK,OAAO;AAAA,EACjB,WAAW,GAAG;AAAA,IACV,IAAI,OAAO,eAAe;AAAA,MACtB,OAAO,OAAO;AAAA,IAClB;AAAA,IACA,qBAAqB,QAAQ,cAAc;AAAA,MACvC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA;AAAA,EAEL,EAAE,CAAC,IAAI,IAAI;AAAA,IACP,KAAK,UAAU,IAAI,KAAK,EAAE;AAAA;AAAA,EAE9B,cAAc,CAAC,IAAI,IAAI;AAAA,IACnB,MAAM,OAAO,KAAK,UAAU;AAAA,IAC5B,MAAM,IAAI,KAAK,QAAQ,EAAE;AAAA,IAEzB,IAAI,MAAM,IAAI;AAAA,MACV;AAAA,IACJ;AAAA,IAEA,IAAI,MAAM,KAAK,KAAK,WAAW,GAAG;AAAA,MAC9B,KAAK,SAAS;AAAA,IAClB,EACK;AAAA,MACD,KAAK,OAAO,GAAG,CAAC;AAAA;AAAA;AAAA,EAGxB,IAAI,CAAC,IAAI,MAAM,QAAQ;AAAA,IACnB,IAAI,KAAK,QAAQ,KAAK;AAAA,MAClB,OAAO;AAAA,IACX;AAAA,IACA,KAAK,QAAQ,MAAM;AAAA,IACnB,IAAI,MAAM;AAAA,IACV,WAAW,MAAM,KAAK,UAAU,KAAK;AAAA,MACjC,MAAM,GAAG,MAAM,MAAM,MAAM,QAAQ;AAAA,IACvC;AAAA,IACA,IAAI,OAAO,QAAQ;AAAA,MACf,MAAM,KAAK,KAAK,aAAa,MAAM,MAAM,KAAK;AAAA,IAClD;AAAA,IACA,OAAO;AAAA;AAEf;AAAA;AACA,MAAM,eAAe;AACrB;AACA,IAAM,iBAAiB,CAAC,YAAY;AAAA,EAChC,OAAO;AAAA,IACH,MAAM,CAAC,IAAI,MAAM;AAAA,MACb,OAAO,QAAQ,OAAO,IAAI,IAAI;AAAA;AAAA,IAElC,IAAI,GAAG;AAAA,MACH,OAAO,QAAQ,KAAK;AAAA;AAAA,IAExB,MAAM,GAAG;AAAA,MACL,OAAO,QAAQ,OAAO;AAAA;AAAA,EAE9B;AAAA;AAAA;AAEJ,MAAM,2BAA2B,eAAe;AAAA,EAC5C,MAAM,GAAG;AAAA,IACL,OAAO,MAAM;AAAA;AAAA,EAEjB,IAAI,GAAG;AAAA,EACP,MAAM,GAAG;AACb;AAAA;AACA,MAAM,mBAAmB,eAAe;AAAA,EAIpC,UAAU,SAAQ,aAAa,UAAU,WAAW;AAAA,EAEpD,WAAW,IAAI;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB,UAAU;AAAA,EACV,WAAW,CAAC,UAAS;AAAA,IACjB,MAAM;AAAA,IACN,KAAK,WAAW;AAAA,IAEhB,KAAK,gBAAgB,CAAC;AAAA,IACtB,WAAW,OAAO,SAAS;AAAA,MACvB,KAAK,cAAc,OAAO,MAAM;AAAA,QAK5B,MAAM,YAAY,KAAK,SAAS,UAAU,GAAG;AAAA,QAC7C,MAAM,UAAU,KAAK;AAAA,QAQrB,MAAM,IAAI;AAAA,QACV,IAAI,OAAO,EAAE,4BAA4B,YACrC,OAAO,EAAE,wBAAwB,UAAU,UAAU;AAAA,UACrD,SAAS,EAAE,wBAAwB;AAAA,QACvC;AAAA,QAEA,IAAI,UAAU,WAAW,OAAO;AAAA,UAC5B,KAAK,OAAO;AAAA,UACZ,MAAM,MAAM,KAAK,SAAS,KAAK,QAAQ,MAAM,GAAG;AAAA,UAEhD,MAAM,IAAI,QAAQ,WAAW,KAAK,UAAU;AAAA,UAC5C,IAAI,CAAC;AAAA,YACD,SAAQ,KAAK,SAAQ,KAAK,CAAC;AAAA,QAEnC;AAAA;AAAA,IAER;AAAA,IACA,KAAK,6BAA6B,SAAQ;AAAA,IAC1C,KAAK,uBAAuB,SAAQ;AAAA;AAAA,EAExC,MAAM,CAAC,IAAI,MAAM;AAAA,IAEb,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG;AAAA,MAC3B,OAAO,MAAM;AAAA,IACjB;AAAA,IAEA,IAAI,KAAK,YAAY,OAAO;AAAA,MACxB,KAAK,KAAK;AAAA,IACd;AAAA,IACA,MAAM,KAAK,MAAM,aAAa,cAAc;AAAA,IAC5C,KAAK,SAAS,GAAG,IAAI,EAAE;AAAA,IACvB,OAAO,MAAM;AAAA,MACT,KAAK,SAAS,eAAe,IAAI,EAAE;AAAA,MACnC,IAAI,KAAK,SAAS,UAAU,QAAQ,WAAW,KAC3C,KAAK,SAAS,UAAU,aAAa,WAAW,GAAG;AAAA,QACnD,KAAK,OAAO;AAAA,MAChB;AAAA;AAAA;AAAA,EAGR,IAAI,GAAG;AAAA,IACH,IAAI,KAAK,SAAS;AAAA,MACd;AAAA,IACJ;AAAA,IACA,KAAK,UAAU;AAAA,IAKf,KAAK,SAAS,SAAS;AAAA,IACvB,WAAW,OAAO,SAAS;AAAA,MACvB,IAAI;AAAA,QACA,MAAM,KAAK,KAAK,cAAc;AAAA,QAC9B,IAAI;AAAA,UACA,KAAK,SAAS,GAAG,KAAK,EAAE;AAAA,QAEhC,OAAO,GAAG;AAAA,IACd;AAAA,IACA,KAAK,SAAS,OAAO,CAAC,OAAO,MAAM;AAAA,MAC/B,OAAO,KAAK,aAAa,IAAI,GAAG,CAAC;AAAA;AAAA,IAErC,KAAK,SAAS,aAAa,CAAC,SAAS;AAAA,MACjC,OAAO,KAAK,mBAAmB,IAAI;AAAA;AAAA;AAAA,EAG3C,MAAM,GAAG;AAAA,IACL,IAAI,CAAC,KAAK,SAAS;AAAA,MACf;AAAA,IACJ;AAAA,IACA,KAAK,UAAU;AAAA,IACf,QAAQ,QAAQ,SAAO;AAAA,MACnB,MAAM,WAAW,KAAK,cAAc;AAAA,MAEpC,IAAI,CAAC,UAAU;AAAA,QACX,MAAM,IAAI,MAAM,sCAAsC,GAAG;AAAA,MAC7D;AAAA,MAEA,IAAI;AAAA,QACA,KAAK,SAAS,eAAe,KAAK,QAAQ;AAAA,QAG9C,OAAO,GAAG;AAAA,KAEb;AAAA,IACD,KAAK,SAAS,OAAO,KAAK;AAAA,IAC1B,KAAK,SAAS,aAAa,KAAK;AAAA,IAChC,KAAK,SAAS,SAAS;AAAA;AAAA,EAE3B,kBAAkB,CAAC,MAAM;AAAA,IAErB,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG;AAAA,MAC3B,OAAO;AAAA,IACX;AAAA,IACA,KAAK,SAAS,WAAW,QAAQ;AAAA,IAEjC,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS,UAAU,IAAI;AAAA,IACvD,OAAO,KAAK,2BAA2B,KAAK,KAAK,UAAU,KAAK,SAAS,QAAQ;AAAA;AAAA,EAErF,YAAY,CAAC,OAAO,MAAM;AAAA,IACtB,MAAM,KAAK,KAAK;AAAA,IAChB,IAAI,OAAO,UAAU,UAAU,KAAK,QAAQ,GAAG;AAAA,MAC3C,IAAI,OAAO,KAAK,OAAO,UAAU;AAAA,QAC7B,KAAK,SAAS,WAAW,KAAK;AAAA,MAElC;AAAA,MAEA,MAAM,MAAM,GAAG,KAAK,KAAK,UAAU,IAAI,GAAG,IAAI;AAAA,MAE9C,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS,UAAU,IAAI;AAAA,MAEvD,OAAO;AAAA,IACX,EACK;AAAA,MACD,OAAO,GAAG,KAAK,KAAK,UAAU,IAAI,GAAG,IAAI;AAAA;AAAA;AAGrD;AACA,IAAM,WAAU,WAAW;AAGpB;AAAA,EAUP;AAAA,EAQA;AAAA,EAQA;AAAA,IAAY,eAAe,UAAU,QAAO,IAAI,IAAI,WAAW,QAAO,IAAI,IAAI,kBAAoB;;;ACjRlG;;;ACAA,IAAM,MAAM;AAEL,IAAM,aAAa,MAAM;AAEzB,IAAM,aAAa,MAAM;AAEzB,IAAM,aAAa,MAAM;AAEzB,IAAM,WAAW,CAAC,OAAO,MAAO,OAAO,IAAI,GAAG,MAAM,UAAU;AAE9D,IAAM,aAAa,CAAC,OAAO,MAAM,OAAO,IAAI,GAAG,MAAM,UAAU;AAE/D,IAAM,WAAW,CAAC,GAAG,MAAM;AAAA,EAC9B,IAAI,OAAO,MAAM,YAAY,CAAC,OAAO,MAAM,CAAC,GAAG;AAAA,IAC3C,OAAO,GAAG,MAAM,IAAI,KAAK,IAAI;AAAA,EACjC;AAAA,EACA,OAAO,GAAG,MAAM,IAAI;AAAA;AAExB,IAAM,YAAY,MAAM;AAEjB,IAAM,aAAa,CAAC,UAAU,QAAQ,KAAK,YAAY,SAAS,CAAC,GAAG,OAAO,QAAQ,CAAC,IAAI,YAAY,aAAa;;;ADjBxH,IAAM,SAAS,CAAC,YAAY,QAAQ,MAAM;AAAA,CAAI,EAAE;AAChD,IAAM,WAAW,CAAC,YAAY,QAAQ,MAAM;AAAA,CAAI,EAAE,IAAI,KAAK;AAAA;AAC3D,MAAqB,cAAc;AAAA,EAE/B,SAAS;AAAA,EACT,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,WAAW,CAAC,IAAI;AAAA,IACZ,KAAK,KAAK;AAAA,IACV,KAAK,YAAY,GAAG,aAAa;AAAA;AAAA,EAErC,KAAK,CAAC,SAAS;AAAA,IACX,KAAK,GAAG,OAAO,OAAO;AAAA,IACtB,KAAK,GAAG,OAAO,MAAM,OAAO;AAAA,IAC5B,KAAK,GAAG,OAAO,KAAK;AAAA;AAAA,EAExB,MAAM,CAAC,SAAS,gBAAgB,IAAI;AAAA,IAEhC,MAAM,aAAa,SAAS,OAAO;AAAA,IACnC,MAAM,gBAAgB,yBAAyB,UAAU;AAAA,IAIzD,IAAI,SAAS;AAAA,IACb,IAAI,KAAK,GAAG,KAAK,SAAS,GAAG;AAAA,MACzB,SAAS,OAAO,MAAM,GAAG,CAAC,KAAK,GAAG,KAAK,MAAM;AAAA,IACjD;AAAA,IACA,KAAK,GAAG,UAAU,MAAM;AAAA,IAExB,KAAK,YAAY,KAAK,GAAG,aAAa;AAAA,IACtC,MAAM,QAAQ,cAAc;AAAA,IAC5B,UAAU,WAAW,SAAS,KAAK;AAAA,IACnC,gBAAgB,WAAW,eAAe,KAAK;AAAA,IAI/C,IAAI,cAAc,SAAS,UAAU,GAAG;AAAA,MACpC,WAAW;AAAA;AAAA,IACf;AAAA,IACA,IAAI,SAAS,WAAW,gBAAgB;AAAA,IAAO,gBAAgB;AAAA,IAM/D,MAAM,mBAAmB,KAAK,MAAM,cAAc,SAAS,KAAK,IAAI,KAAK,UAAU;AAAA,IACnF,MAAM,sBAAsB,oBAAoB,gBAAgB,OAAO,aAAa,IAAI;AAAA,IAExF,IAAI,sBAAsB;AAAA,MACtB,UAAU,SAAS,mBAAmB;AAAA,IAE1C,UAAU,SAAS,KAAK,UAAU,IAAI;AAAA,IAItC,KAAK,MAAM,WAAW,KAAK,qBAAqB,IAAI,WAAW,KAAK,MAAM,IAAI,MAAM;AAAA,IACpF,KAAK,wBAAwB;AAAA,IAC7B,KAAK,SAAS,OAAO,MAAM;AAAA;AAAA,EAE/B,cAAc,GAAG;AAAA,IACb,MAAM,YAAY,KAAK,GAAG,aAAa;AAAA,IACvC,IAAI,UAAU,SAAS,KAAK,UAAU,MAAM;AAAA,MACxC,KAAK,MAAM,SAAS,UAAU,IAAI,CAAC;AAAA,MACnC,KAAK,YAAY;AAAA,IACrB;AAAA;AAAA,EAEJ,IAAI,GAAG,gBAAgB;AAAA,IACnB,KAAK,GAAG,UAAU,EAAE;AAAA,IACpB,IAAI,SAAS,WAAW,KAAK,qBAAqB;AAAA,IAClD,UAAU,eAAe,WAAW,KAAK,MAAM,IAAI;AAAA;AAAA,IACnD,UAAU;AAAA,IACV,KAAK,MAAM,MAAM;AAAA,IACjB,KAAK,GAAG,MAAM;AAAA;AAEtB;;;AE7EO,MAAM,wBAAwB,QAAQ;AAAA,SAGlC,YAAY,GAAG;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAAA,MACtC,UAAU;AAAA,MACV,SAAS;AAAA,KACZ;AAAA,IACD,OAAO,EAAE,SAAS,SAAkB,OAAe;AAAA;AAE3D;;;ALLA,SAAS,YAAY,GAAG;AAAA,EAEpB,MAAM,qBAAqB,MAAM;AAAA,EACjC,IAAI,SAAS,CAAC;AAAA,EACd,IAAI;AAAA,IACA,MAAM,oBAAoB,CAAC,GAAG,cAAc;AAAA,MACxC,MAAM,0BAA0B,UAAU,MAAM,CAAC;AAAA,MACjD,SAAS;AAAA,MACT,OAAO;AAAA;AAAA,IAGX,IAAI,MAAM,EAAE;AAAA,IAEhB,MAAM;AAAA,IAGF,OAAO;AAAA;AAAA,EAEX,MAAM,oBAAoB;AAAA,EAC1B,OAAO;AAAA;AAEJ,SAAS,YAAY,CAAC,MAAM;AAAA,EAC/B,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,SAAS,CAAC,QAAQ,UAAU,CAAC,MAAM;AAAA,IAErC,QAAQ,QAAQ,QAAQ,OAAO,WAAW;AAAA,IAC1C,MAAM,WAAW,IAAI;AAAA,IAErB,MAAM,SAAS,IAAI;AAAA,IACnB,OAAO,KAAK,QAAQ,UAAU,QAAQ,MAAM;AAAA,IAC5C,MAAM,KAAc,0BAAgB;AAAA,MAChC,UAAU;AAAA,MACV;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,MAAM,SAAS,IAAI,cAAc,EAAE;AAAA,IACnC,QAAQ,SAAS,SAAS,WAAW,gBAAgB,aAAa;AAAA,IAClE,MAAM,SAAS,MAAM,OAAO,IAAI,iBAAmB;AAAA,IACnD,IAAI,QAAQ;AAAA,MACR,MAAM,QAAQ,MAAM,OAAO,IAAI,iBAAiB,EAAE,OAAO,OAAO,OAAO,CAAC,CAAC;AAAA,MACzE,IAAI,OAAO,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,OAAO,OAAO,SAAS,EAAE,OAAO,CAAC;AAAA,MAC5C;AAAA,MACA,OAAO,iBAAiB,SAAS,KAAK;AAAA,MACtC,SAAS,IAAI,MAAM,OAAO,oBAAoB,SAAS,KAAK,CAAC;AAAA,IACjE;AAAA,IACA,SAAS,IAAI,OAAa,CAAC,MAAM,YAAW;AAAA,MACxC,OAAO,IAAI,gBAAgB,qCAAqC,QAAQ,SAAQ,CAAC;AAAA,KACpF,CAAC;AAAA,IAIF,MAAM,SAAS,MAAM,OAAO,IAAI,gBAAgB,0CAA0C,CAAC;AAAA,IAC3F,GAAG,GAAG,UAAU,MAAM;AAAA,IACtB,SAAS,IAAI,MAAM,GAAG,eAAe,UAAU,MAAM,CAAC;AAAA,IAKtD,MAAM,iBAAiB,MAAM,OAAO,eAAe;AAAA,IACnD,GAAG,MAAM,GAAG,YAAY,cAAc;AAAA,IACtC,SAAS,IAAI,MAAM,GAAG,MAAM,eAAe,YAAY,cAAc,CAAC;AAAA,IACtE,OAAO,UAAU,IAAI,CAAC,UAAU;AAAA,MAI5B,MAAM,eAAe,eAAc,KAAK,MAAM,gBAAgB,SAAS,CAAC;AAAA,MACxE,GAAG,GAAG,SAAS,YAAY;AAAA,MAC3B,SAAS,IAAI,MAAM,GAAG,eAAe,SAAS,YAAY,CAAC;AAAA,MAC3D,MAAM,MAAM;AAAA,QACR,IAAI;AAAA,UACA,MAAM,WAAW,KAAK,QAAQ,CAAC,UAAU;AAAA,YACrC,aAAa,MAAM,QAAQ,KAAK,CAAC;AAAA,WACpC;AAAA,UAGD,IAAI,aAAa,WAAW;AAAA,YACxB,MAAM,iBAAiB,UAAU,IAAI,YAAY;AAAA,YACjD,MAAM,IAAI,MAAM;AAAA,SAAkD,gBAAgB;AAAA,UACtF;AAAA,UACA,OAAO,SAAS,iBAAiB,OAAO,aAAa,WAAW,CAAC,QAAQ,IAAI;AAAA,UAC7E,OAAO,OAAO,SAAS,aAAa;AAAA,UACpC,gBAAgB,IAAI;AAAA,UAExB,OAAO,OAAO;AAAA,UACV,OAAO,KAAK;AAAA;AAAA,OAEnB;AAAA,MACD,OAAO,OAAO,OAAO,QAChB,KAAK,CAAC,WAAW;AAAA,QAClB,gBAAgB,SAAS;AAAA,QACzB,OAAO;AAAA,SACR,CAAC,UAAU;AAAA,QACV,gBAAgB,SAAS;AAAA,QACzB,MAAM;AAAA,OACT,EAEI,QAAQ,MAAM;AAAA,QACf,SAAS,QAAQ,CAAC,YAAY,QAAQ,CAAC;AAAA,QACvC,OAAO,KAAK,EAAE,cAAc,QAAQ,QAAQ,iBAAiB,EAAE,CAAC;AAAA,QAChE,OAAO,IAAI;AAAA,OACd,EAEI,KAAK,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC;AAAA,KACvC;AAAA;AAAA,EAEL,OAAO;AAAA;;AMnHX,sBAAS;AAMF,MAAM,UAAU;AAAA,EACnB,YAAY,WAAU,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,cAAQ,IAAI,CAAC;AAAA,EAC1E,OAAO;AAAA,EACP,WAAW,CAAC,WAAW;AAAA,IACnB,IAAI,WAAW;AAAA,MACX,KAAK,YAAY;AAAA,IACrB;AAAA;AAAA,SAEG,WAAW,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,UACX,OAAO,WAAW,YAClB,UAAU,UACV,OAAO,SAAS,WAAW;AAAA;AAEvC;;AClBA,sBAAS;AAET,IAAM,cAAc;AAAA,EAChB,MAAM,EAAE,QAAQ,cAAQ,QAAQ;AAAA,EAChC,OAAO;AAAA,IACH,UAAU,CAAC,SAAS,WAAU,OAAO,KAAK,MAAM;AAAA,IAChD,aAAa,CAAC,SAAS,WAAU,QAAQ,IAAI;AAAA,IAC7C,aAAa,CAAC,SAAS,KAClB,IAAI,EAAE,KAAK,YAAY,GAAG,WAAU,QAAQ,GAAG,KAAK,WAAU,OAAO,MAAM,GAAG,EAC9E,KAAK,WAAU,OAAO,KAAI,CAAC;AAAA,EACpC;AAAA,EACA,WAAW;AAAA,EACX,aAAa,CAAC;AAClB;AACA,SAAS,YAAY,CAAC,MAAM;AAAA,EACxB,OAAO,CAAC,UAAU,YAAY,IAAI,KAAK,CAAC,KAAK;AAAA;AAEjD,SAAS,gBAAgB,CAAC,SAAS;AAAA,EAC/B,OAAO,QAAQ,IAAI,CAAC,WAAW;AAAA,IAC3B,IAAI,UAAU,YAAY,MAAM;AAAA,MAC5B,OAAO;AAAA,IACX,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,EAAE,WAAW,SAAS;AAAA,MAEvE,MAAM,QAAO,OAAO,MAAM;AAAA,MAC1B,OAAO;AAAA,QACH,OAAO;AAAA,QACP;AAAA,QACA,OAAO;AAAA,QACP,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAAA,IAC/C,MAAM,mBAAmB;AAAA,MACrB,OAAO,OAAO;AAAA,MACd;AAAA,MACA,OAAO,OAAO,SAAS;AAAA,MACvB,UAAU,OAAO,YAAY;AAAA,IACjC;AAAA,IACA,IAAI,OAAO,aAAa;AAAA,MACpB,iBAAiB,cAAc,OAAO;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,GACV;AAAA;AAEL,IAAe,6BAAa,CAAC,QAAQ,SAAS;AAAA,EAC1C,QAAQ,OAAO,MAAM,WAAW,MAAM;AAAA,EACtC,MAAM,QAAQ,UAAU,aAAa,OAAO,KAAK;AAAA,EACjD,QAAQ,gBAAgB;AAAA,EACxB,OAAO,QAAQ,aAAa,SAAS,MAAM;AAAA,EAC3C,MAAM,SAAS,UAAU,EAAE,QAAQ,MAAM,CAAC;AAAA,EAC1C,MAAM,mBAAmB,OAAO;AAAA,EAGhC,MAAM,gBAAgB,CAAC,YAAY,SAAS,KAAK;AAAA,EACjD,MAAM,QAAQ,QAAQ,MAAM,iBAAiB,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC;AAAA,EAC9E,MAAM,SAAS,QAAQ,MAAM;AAAA,IACzB,MAAM,QAAQ,MAAM,UAAU,YAAY;AAAA,IAC1C,MAAM,OAAO,MAAM,cAAc,YAAY;AAAA,IAC7C,IAAI,UAAU,IAAI;AAAA,MACd,MAAM,IAAI,gBAAgB,kEAAkE;AAAA,IAChG;AAAA,IACA,OAAO,EAAE,OAAO,KAAK;AAAA,KACtB,CAAC,KAAK,CAAC;AAAA,EACV,MAAM,mBAAmB,QAAQ,MAAM;AAAA,IACnC,IAAI,EAAE,aAAa;AAAA,MACf,OAAO;AAAA,IACX,OAAO,MAAM,UAAU,CAAC,SAAS,aAAa,IAAI,KAAK,KAAK,UAAU,OAAO,OAAO;AAAA,KACrF,CAAC,OAAO,SAAS,KAAK,CAAC;AAAA,EAC1B,OAAO,QAAQ,aAAa,SAAS,qBAAqB,KAAK,OAAO,QAAQ,gBAAgB;AAAA,EAE9F,MAAM,iBAAiB,MAAM;AAAA,EAC7B,YAAY,CAAC,KAAK,OAAO;AAAA,IACrB,aAAa,iBAAiB,OAAO;AAAA,IACrC,IAAI,WAAW,GAAG,GAAG;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,KAAK,eAAe,KAAK;AAAA,IAC7B,EACK,SAAI,QAAQ,KAAK,WAAW,KAAK,UAAU,KAAK,WAAW,GAAG;AAAA,MAC/D,GAAG,UAAU,CAAC;AAAA,MACd,IAAI,QACC,QAAQ,KAAK,WAAW,KAAK,WAAW,OAAO,SAC/C,UAAU,KAAK,WAAW,KAAK,WAAW,OAAO,MAAO;AAAA,QACzD,MAAM,SAAS,QAAQ,KAAK,WAAW,IAAI,KAAK;AAAA,QAChD,IAAI,OAAO;AAAA,QACX,GAAG;AAAA,UACC,QAAQ,OAAO,SAAS,MAAM,UAAU,MAAM;AAAA,QAClD,SAAS,CAAC,aAAa,MAAM,KAAK;AAAA,QAClC,UAAU,IAAI;AAAA,MAClB;AAAA,IACJ,EACK,SAAI,YAAY,GAAG,KAAK,CAAC,OAAO,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG;AAAA,MACzD,MAAM,gBAAgB,OAAO,GAAG,IAAI,IAAI;AAAA,MAExC,IAAI,kBAAkB;AAAA,MACtB,MAAM,WAAW,MAAM,UAAU,CAAC,UAAS;AAAA,QACvC,IAAI,UAAU,YAAY,KAAI;AAAA,UAC1B,OAAO;AAAA,QACX;AAAA,QACA,OAAO,oBAAoB;AAAA,OAC9B;AAAA,MACD,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,QAAQ,QAAQ,aAAa,IAAI,GAAG;AAAA,QACpC,UAAU,QAAQ;AAAA,MACtB;AAAA,MACA,iBAAiB,UAAU,WAAW,MAAM;AAAA,QACxC,GAAG,UAAU,CAAC;AAAA,SACf,GAAG;AAAA,IACV,EACK,SAAI,eAAe,GAAG,GAAG;AAAA,MAC1B,GAAG,UAAU,CAAC;AAAA,IAClB,EACK,SAAI,eAAe;AAAA,MACpB,MAAM,aAAa,GAAG,KAAK,YAAY;AAAA,MACvC,MAAM,aAAa,MAAM,UAAU,CAAC,SAAS;AAAA,QACzC,IAAI,UAAU,YAAY,IAAI,KAAK,CAAC,aAAa,IAAI;AAAA,UACjD,OAAO;AAAA,QACX,OAAO,KAAK,KAAK,YAAY,EAAE,WAAW,UAAU;AAAA,OACvD;AAAA,MACD,IAAI,eAAe,IAAI;AAAA,QACnB,UAAU,UAAU;AAAA,MACxB;AAAA,MACA,iBAAiB,UAAU,WAAW,MAAM;AAAA,QACxC,GAAG,UAAU,CAAC;AAAA,SACf,GAAG;AAAA,IACV;AAAA,GACH;AAAA,EACD,UAAU,MAAM,MAAM;AAAA,IAClB,aAAa,iBAAiB,OAAO;AAAA,KACtC,CAAC,CAAC;AAAA,EACL,MAAM,UAAU,MAAM,MAAM,QAAQ,OAAO,SAAS,MAAM;AAAA,EAC1D,MAAM,WAAW,MAAM,MAAM,YAAY;AAAA,IACrC,CAAC,MAAK,UAAU;AAAA,IAChB,CAAC,KAAI,QAAQ;AAAA,EACjB,CAAC;AAAA,EACD,IAAI,iBAAiB;AAAA,EACrB,MAAM,OAAO,cAAc;AAAA,IACvB;AAAA,IACA;AAAA,IACA,UAAU,GAAG,MAAM,UAAU,SAAS;AAAA,MAClC,IAAI,UAAU,YAAY,IAAI,GAAG;AAAA,QAC7B;AAAA,QACA,OAAO,IAAI,KAAK;AAAA,MACpB;AAAA,MACA,MAAM,aAAa,MAAM,cAAc,WAAW,GAAG,QAAQ,IAAI,qBAAqB;AAAA,MACtF,IAAI,KAAK,UAAU;AAAA,QACf,MAAM,gBAAgB,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAAA,QAC1E,OAAO,MAAM,MAAM,SAAS,GAAG,aAAa,KAAK,QAAQ,eAAe;AAAA,MAC5E;AAAA,MACA,MAAM,QAAQ,WAAW,MAAM,MAAM,YAAY,CAAC,MAAM;AAAA,MACxD,MAAM,SAAS,WAAW,MAAM,KAAK,SAAS;AAAA,MAC9C,OAAO,MAAM,GAAG,UAAU,aAAa,KAAK,MAAM;AAAA;AAAA,IAEtD;AAAA,IACA;AAAA,EACJ,CAAC;AAAA,EACD,IAAI,WAAW,QAAQ;AAAA,IACnB,OAAO,CAAC,QAAQ,SAAS,MAAM,MAAM,OAAO,eAAe,KAAK,CAAC,EAC5D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,EACjB;AAAA,EACA,QAAQ,gBAAgB;AAAA,EACxB,MAAM,QAAQ;AAAA,IACV,CAAC,QAAQ,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,cAAc,MAAM,MAAM,YAAY,WAAW,IAAI;AAAA,IACrD;AAAA,EACJ,EACK,OAAO,OAAO,EACd,KAAK;AAAA,CAAI,EACT,QAAQ;AAAA,EACb,OAAO,GAAG,QAAQ;AAAA,CACrB;;AC7KD;;;ACcA;AAOO,IAAM,QAAQ,CAAC,SAAiB,0BAAG,KAAK,0BAAG,KAAK,IAAI,CAAC;AAarD,IAAM,UAAU,CAAC,SAAiB,GAAG,0BAAG,MAAM,GAAE,KAAK;AAGrD,IAAM,OAAO,CAAC,SAAiB,GAAG,0BAAG,OAAO,GAAE,KAAK;AAGnD,IAAM,QAAQ,CAAC,SAAiB,GAAG,0BAAG,IAAI,GAAE,KAAK;AAGjD,IAAM,OAAO,CAAC,SAAiB,GAAG,0BAAG,KAAK,GAAE,KAAK;AAOjD,IAAM,MAAM,CAAC,SAAiB,0BAAG,IAAI,IAAI;AASzC,IAAM,QAAQ,CAAC,SAAiB,0BAAG,MAAM,IAAI;AAG7C,IAAM,SAAS,CAAC,SAAiB,0BAAG,OAAO,IAAI;AAG/C,IAAM,MAAM,CAAC,SAAiB,0BAAG,IAAI,IAAI;AAGzC,IAAM,OAAO,CAAC,SAAiB,0BAAG,KAAK,IAAI;AAG3C,IAAM,UAAU,CAAC,SAAiB,0BAAG,QAAQ,IAAI;AAOjD,SAAS,MAAM,CAAC,MAAoB;AAAA,EACzC,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC;AAAA,EAC9B,QAAQ,IAAI,0BAAG,IAAI,OAAO,IAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC;AAAA;AAUhD,SAAS,UAAU,CAAC,OAAe,OAAqB;AAAA,EAC7D,QAAQ,IAAI,KAAK,0BAAG,IAAI,QAAQ,GAAG,KAAK,OAAO;AAAA;AAU1C,SAAS,UAAU,CACxB,QACA,MACA,SACA,OACQ;AAAA,EACR,MAAM,QAAQ,EAAE,IAAI,KAAI,SAAS,KAAK,OAAO,IAAI;AAAA,EACjD,MAAM,SAAS,EAAE,IAAI,0BAAG,OAAO,SAAS,0BAAG,QAAQ,OAAO,0BAAG,IAAI;AAAA,EAEjE,IAAI,OAAO,GAAG,OAAO,QAAQ,MAAM,OAAO,KAAK,SAAS;AAAA,EACxD,IAAI,OAAO;AAAA,IACT,QAAQ,IAAI,0BAAG,IAAI,IAAI,QAAQ;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAsCF,SAAS,QAAQ,CAAC,SAAmB,QAA0B;AAAA,EACpE,OAAO,QACJ,IAAI,CAAC,KAAK,MAAM;AAAA,IACf,MAAM,QAAQ,OAAO,MAAM,IAAI;AAAA,IAC/B,OAAO,IAAI,OAAO,KAAK;AAAA,GACxB,EACA,KAAK,IAAI;AAAA;AAMP,SAAS,WAAW,CAAC,SAAmB,QAAwB;AAAA,EACrE,MAAM,YAAY,SAChB,QAAQ,IAAI,CAAC,MAAM,0BAAG,KAAK,CAAC,CAAC,GAC7B,MACF;AAAA,EACA,MAAM,eAAe,OAAO,IAAI,CAAC,MAAM,IAAG,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,EAC9D,QAAQ,IAAI,SAAS;AAAA,EACrB,QAAQ,IAAI,0BAAG,IAAI,YAAY,CAAC;AAAA;AAkB3B,SAAS,GAAG,CAAC,QAAwB;AAAA,EAC1C,OAAO,0BAAG,UAAU,0BAAG,KAAK,MAAM,CAAC;AAAA;AAM9B,SAAS,GAAG,CAAC,SAAyB;AAAA,EAC3C,OAAO,0BAAG,KAAK,OAAO;AAAA;AAMjB,SAAS,IAAI,CAAC,UAA0B;AAAA,EAC7C,OAAO,0BAAG,QAAQ,QAAQ;AAAA;;;ACvL5B,eAAsB,KAAK,CAAC,MAAe,OAAqB,CAAC,GAAoB;AAAA,EACnF,MAAM,UAAU,KAAI;AAAA,EACpB,MAAM,OAAO,KAAI,MAAM,CAAC;AAAA,EAExB,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAAA,EAEA,IAAI,OAAO,QAAQ,aAAa;AAAA,IAC9B,MAAM,OAAO,IAAI,MAAM,MAAK;AAAA,MAC1B,KAAK,KAAK,OAAO,QAAQ;AAAA,MACzB,KAAK,KAAK,OAAO,QAAQ,IAAI;AAAA,MAC7B,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ,KAAK,UAAU;AAAA,MACvB,QAAQ,KAAK,UAAU;AAAA,IACzB,CAAC;AAAA,IACD,OAAO,KAAK;AAAA,EACd,EAAO;AAAA,IACL,QAAQ,OAAO,cAAc,MAAa;AAAA,IAC1C,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,MAAM,OAAO,UAAU,SAAS,MAAM;AAAA,QACpC,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,OAAO,CAAC,KAAK,SAAS,WAAW,KAAK,UAAU,WAAW,KAAK,UAAU,SAAS;AAAA,MACrF,CAAC;AAAA,MACD,KAAK,GAAG,SAAS,CAAC,SAAS,QAAQ,QAAQ,CAAC,CAAC;AAAA,KAC9C;AAAA;AAAA;AAQL,eAAsB,YAAY,CAChC,MACA,OAAgD,CAAC,GAC3B;AAAA,EACtB,MAAM,UAAU,KAAI;AAAA,EACpB,MAAM,OAAO,KAAI,MAAM,CAAC;AAAA,EAExB,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAAA,EAEA,IAAI,OAAO,QAAQ,aAAa;AAAA,IAC9B,MAAM,OAAO,IAAI,MAAM,MAAK;AAAA,MAC1B,KAAK,KAAK,OAAO,QAAQ;AAAA,MACzB,KAAK,KAAK;AAAA,MACV,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAAA,IAED,OAAO,QAAQ,QAAQ,YAAY,MAAM,QAAQ,IAAI;AAAA,MACnD,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,MAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,MAC/B,KAAK;AAAA,IACP,CAAC;AAAA,IAED,OAAO,EAAE,UAAU,QAAQ,OAAO;AAAA,EACpC,EAAO;AAAA,IACL,QAAQ,OAAO,cAAc,MAAa;AAAA,IAC1C,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,MAAM,OAAO,UAAU,SAAS,MAAM;AAAA,QACpC,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,MAClC,CAAC;AAAA,MAED,IAAI,SAAS;AAAA,MACb,IAAI,SAAS;AAAA,MAEb,KAAK,QAAQ,GAAG,QAAQ,CAAC,SAAS;AAAA,QAChC,UAAU,KAAK,SAAS;AAAA,OACzB;AAAA,MACD,KAAK,QAAQ,GAAG,QAAQ,CAAC,SAAS;AAAA,QAChC,UAAU,KAAK,SAAS;AAAA,OACzB;AAAA,MAED,KAAK,GAAG,SAAS,CAAC,SAAS;AAAA,QACzB,QAAQ,EAAE,UAAU,QAAQ,GAAG,QAAQ,OAAO,CAAC;AAAA,OAChD;AAAA,KACF;AAAA;AAAA;AAOL,eAAsB,aAAa,CAAC,MAA+B;AAAA,EACjE,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,aAAa,QAAQ,aAAa,UAAU,CAAC,SAAS,IAAG,IAAI,CAAC,SAAS,IAAG,CAAC;AAAA,IAChG,OAAO,OAAO,aAAa;AAAA,IAC3B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOX,eAAsB,iBAAiB,CAAC,MAAqC;AAAA,EAC3E,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,aAAa,CAAC,MAAK,WAAW,CAAC;AAAA,IACpD,IAAI,OAAO,aAAa,KAAK,OAAO,QAAQ;AAAA,MAC1C,OAAO,OAAO,OAAO,KAAK,EAAE,MAAM;AAAA,CAAI,EAAE,MAAM;AAAA,IAChD;AAAA,IACA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;;;AFvHX,eAAsB,iBAAiB,GAA2B;AAAA,EAChE,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,WAAW,MAAM,MAAM,GAAG,oBAAoB;AAAA,EACpD,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,IAAI,MAAM,2BAA2B,SAAS,YAAY;AAAA,EAClE;AAAA,EACA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO,KAAK,UAAU,CAAC;AAAA;AAMzB,eAAsB,kBAAkB,GAA4B;AAAA,EAClE,MAAM,YAAY,aAAa;AAAA,EAC/B,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,oBAAoB;AAAA,MAClD,QAAQ,YAAY,QAAQ,IAAI;AAAA,IAClC,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,IAClC,OAAO,KAAK,UAAU,CAAC;AAAA,IACvB,OAAO,QAAO;AAAA,IACd,OAAO,CAAC;AAAA;AAAA;AAOZ,eAAsB,aAAa,CAAC,WAAqC;AAAA,EACvE,MAAM,gBAAgB,MAAM,mBAAmB;AAAA,EAG/C,OAAO,cAAc,KACnB,CAAC,MACC,EAAE,UAAU,aACZ,EAAE,SAAS,aACX,EAAE,MAAM,WAAW,YAAY,GAAG,KAClC,UAAU,WAAW,EAAE,KAAK,CAChC;AAAA;AAOF,eAAsB,SAAS,CAAC,WAAmB,YAAoB,OAAsB;AAAA,EAC3F,MAAM,YAAY,aAAa;AAAA,EAE/B,MAAM,WAAW,MAAM,MAAM,GAAG,0BAA0B;AAAA,IACxD,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,IAAI,MAAM,yBAAyB,SAAS,YAAY;AAAA,EAChE;AAAA,EAGA,MAAM,SAAS,KAAK;AAAA;AAOtB,eAAsB,iBAAiB,CAAC,WAAkC;AAAA,EACxE,MAAM,WAAW,MAAM,cAAc,SAAS;AAAA,EAE9C,IAAI,UAAU;AAAA,IACZ,QAAQ,IAAI,IAAI,WAAW,QAAQ,SAAS,qBAAqB,CAAC;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,QAAQ,IAAI,KAAK,iBAAiB,QAAQ,SAAS,MAAM,CAAC;AAAA,EAC1D,QAAQ,IAAI,IAAI,uCAAuC,CAAC;AAAA,EAExD,IAAI;AAAA,IACF,MAAM,UAAU,WAAW,KAAK;AAAA,IAChC,QAAQ,IAAI,QAAQ,SAAS,QAAQ,SAAS,4BAA4B,CAAC;AAAA,IAC3E,OAAO,QAAO;AAAA,IACd,QAAQ,IAAI,KAAK,uDAAuD,CAAC;AAAA,IACzE,QAAQ,IAAI,IAAI,KAAK,kBAAiB,QAAQ,OAAM,UAAU,iBAAiB,CAAC;AAAA;AAAA;AAWpF,eAAsB,wBAAwB,GAAoB;AAAA,EAChE,MAAM,YAAY,aAAa;AAAA,EAC/B,IAAI;AAAA,EAEJ,IAAI;AAAA,IACF,SAAS,MAAM,kBAAkB;AAAA,IACjC,OAAO,QAAO;AAAA,IACd,QAAQ,IAAI,KAAK,kCAAkC,WAAW,CAAC;AAAA,IAC/D,QAAQ,IAAI,IAAI,mDAAmD,CAAC;AAAA,IACpE,QAAQ,KAAK,CAAC;AAAA;AAAA,EAGhB,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,QAAQ,IAAI,KAAK,4BAA4B,CAAC;AAAA,IAC9C,QAAQ,IAAI,IAAI,yDAAyD,CAAC;AAAA,IAC1E,QAAQ,KAAK,CAAC;AAAA,EAChB;AAAA,EAGA,MAAM,gBAAgB,MAAM,mBAAmB;AAAA,EAC/C,MAAM,mBAAmB,IAAI,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAElE,MAAM,WAAW,MAAM,cAAO;AAAA,IAC5B,SAAS;AAAA,IACT,SAAS,OAAO,IAAI,CAAC,UAAU;AAAA,MAC7B,MAAM,WAAW,iBAAiB,IAAI,MAAM,IAAI;AAAA,MAChD,MAAM,kBAAkB,WAAW,cAAc;AAAA,MACjD,OAAO;AAAA,QACL,MAAM,GAAG,MAAM,SAAS,qBAAM,MAAM,IAAI,KAAK;AAAA,QAC7C,OAAO,MAAM;AAAA,MACf;AAAA,KACD;AAAA,EACH,CAAC;AAAA,EAED,OAAO;AAAA;AAUT,eAAsB,YAAY,CAAC,OAAe,iBAA2B;AAAA,EAC3E,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,YAAY,mBAAmB;AAAA,EAErC,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,KAAK,mCAAmC,CAAC;AAAA,EACrD,QAAQ,IAAI,IAAI,YAAY,QAAQ,KAAK,GAAG,CAAC;AAAA,EAC7C,QAAQ,IAAI,IAAI,YAAY,WAAW,CAAC;AAAA,EACxC,QAAQ,IAAI,EAAE;AAAA,EAGd,MAAM,kBAAkB,KAAK;AAAA,EAC7B,QAAQ,IAAI,EAAE;AAAA,EAEd,MAAM,MAA0C;AAAA,OAC3C,QAAQ;AAAA,IACX,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB;AAAA,EAEA,MAAM,aAAa,CAAC,UAAU,WAAW,OAAO,GAAG,WAAW,GAAG,eAAe;AAAA,EAChF,MAAM,WAAW,MAAM,MAAM,YAAY,EAAE,IAAI,CAAC;AAAA,EAChD,QAAQ,KAAK,QAAQ;AAAA;;;AGtLvB,uBAAS,uDAAsC;AAC/C,iBAAS;;;ACWT,eAAe,WAAW,GAAyB;AAAA,EACjD,MAAM,SAAS,MAAM,cAAc,QAAQ;AAAA,EAC3C,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,MAAM,kBAAkB,QAAQ;AAAA,EAChD,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS,WAAW;AAAA,EACtB;AAAA;AAGF,eAAe,kBAAkB,GAAyB;AAAA,EAExD,MAAM,SAAS,MAAM,aAAa,CAAC,UAAU,WAAW,SAAS,CAAC;AAAA,EAClE,IAAI,OAAO,aAAa,GAAG;AAAA,IACzB,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,MAAM;AAAA,CAAI,EAAE;AAAA,IAClD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS,WAAW;AAAA,IACtB;AAAA,EACF;AAAA,EAGA,MAAM,WAAW,MAAM,cAAc,gBAAgB;AAAA,EACrD,IAAI,UAAU;AAAA,IACZ,MAAM,UAAU,MAAM,kBAAkB,gBAAgB;AAAA,IACxD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS,WAAW;AAAA,MACpB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA;AAGF,eAAe,cAAc,GAAyB;AAAA,EACpD,MAAM,SAAS,MAAM,cAAc,YAAY;AAAA,EAC/C,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,aAAa,CAAC,cAAc,oBAAoB,uBAAuB,CAAC;AAAA,EAC7F,IAAI,OAAO,aAAa,KAAK,OAAO,QAAQ;AAAA,IAC1C,MAAM,OAAO,OAAO,OAAO,KAAK,EAAE,MAAM;AAAA,CAAI,EAAE,OAAO,OAAO;AAAA,IAC5D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,GAAG,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA;AAGF,eAAe,2BAA2B,GAAyB;AAAA,EAEjE,MAAM,SAAS,MAAM,aAAa,CAAC,UAAU,QAAQ,YAAY,eAAe,CAAC;AAAA,EACjF,IAAI,OAAO,aAAa,KAAK,OAAO,QAAQ,SAAS,QAAQ,GAAG;AAAA,IAC9D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA;AAGF,eAAe,WAAW,GAAyB;AAAA,EACjD,MAAM,SAAS,MAAM,cAAc,QAAQ;AAAA,EAC3C,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,MAAM,kBAAkB,QAAQ;AAAA,EAChD,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS,WAAW;AAAA,EACtB;AAAA;AAGF,eAAe,qBAAqB,GAAyB;AAAA,EAC3D,MAAM,YAAY,aAAa;AAAA,EAC/B,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,sBAAsB;AAAA,MACpD,QAAQ,YAAY,QAAQ,IAAI;AAAA,IAClC,CAAC;AAAA,IAED,IAAI,SAAS,IAAI;AAAA,MACf,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,MAClC,MAAM,aAAa,KAAK,QAAQ,UAAU;AAAA,MAC1C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,cAAc,mBAAmB,eAAe,IAAI,KAAK;AAAA,QAClE,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,QAAQ,SAAS;AAAA,MAC1B,MAAM;AAAA,IACR;AAAA,IACA,OAAO,QAAO;AAAA,IACd,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,qBAAqB;AAAA,IAC7B;AAAA;AAAA;AAIJ,SAAS,WAAW,CAAC,OAA4B;AAAA,EAC/C,IAAI,OAAO,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EAE5E,IAAI,MAAM,MAAM;AAAA,IACd,QAAQ;AAAA,MAAS,IAAI,GAAE,KAAK,IAAI,MAAM,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO;AAAA;AAGT,eAAsB,MAAM,GAAkB;AAAA,EAC5C,OAAO,qBAAqB;AAAA,EAC5B,QAAQ,IAAI,EAAE;AAAA,EAEd,MAAM,SAAwB,MAAM,QAAQ,IAAI;AAAA,IAC9C,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,4BAA4B;AAAA,IAC5B,YAAY;AAAA,IACZ,sBAAsB;AAAA,EACxB,CAAC;AAAA,EAED,WAAW,SAAS,QAAQ;AAAA,IAC1B,QAAQ,IAAI,YAAY,KAAK,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,UAAS,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO;AAAA,EACxD,MAAM,WAAW,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS;AAAA,EAE5D,QAAQ,IAAI,EAAE;AAAA,EAEd,IAAI,QAAO,SAAS,GAAG;AAAA,IACrB,QAAQ,IAAI,IAAI,GAAG,QAAO,wBAAwB,IAAI,+BAA+B;AAAA,IACrF,QAAQ,KAAK,CAAC;AAAA,EAChB,EAAO,SAAI,SAAS,SAAS,GAAG;AAAA,IAC9B,QAAQ,IAAI,OAAO,GAAG,SAAS,oBAAoB,IAAI,gDAAgD;AAAA,EACzG,EAAO;AAAA,IACL,QAAQ,IAAI,MAAM,oBAAoB,IAAI,yBAAyB;AAAA;AAAA;AAOvE,eAAsB,YAAY,GAAqB;AAAA,EACrD,MAAM,SAAS,MAAM,cAAc,YAAY;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEpB,MAAM,SAAS,MAAM,aAAa,CAAC,cAAc,oBAAoB,uBAAuB,CAAC;AAAA,EAC7F,OAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA;;;AD9M/D,IAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqLpC,IAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsIpC,SAAS,iBAAiB,CAAC,KAAsB;AAAA,EAC/C,OAAO;AAAA;AAAA;AAAA,uBAGc,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA,aAIpC;AAAA;AAAA;AAAA;AAAA;AAOb,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAM3B,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsF3B,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+IxB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
53
- "debugId": "D27E5C5FE65A8CD164756E2164756E21",
54
- "names": []
55
- }