agentprofiles-cli 0.3.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../node_modules/citty/dist/_chunks/libs/scule.mjs","../node_modules/citty/dist/index.mjs","../node_modules/picocolors/picocolors.js","../node_modules/sisteransi/src/index.js","../node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../node_modules/@clack/core/src/utils/settings.ts","../node_modules/@clack/core/src/utils/string.ts","../node_modules/@clack/core/src/utils/index.ts","../node_modules/@clack/core/src/prompts/prompt.ts","../node_modules/@clack/core/src/prompts/confirm.ts","../node_modules/@clack/core/src/prompts/group-multiselect.ts","../node_modules/@clack/core/src/prompts/multi-select.ts","../node_modules/@clack/core/src/prompts/password.ts","../node_modules/@clack/core/src/prompts/select.ts","../node_modules/@clack/core/src/prompts/select-key.ts","../node_modules/@clack/core/src/prompts/text.ts","../node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../node_modules/@clack/prompts/src/index.ts","../src/lib/onboarding.ts","../src/types/index.ts","../src/lib/validation.ts","../src/lib/gitignore.ts","../src/lib/config.ts","../src/commands/list.ts","../node_modules/@criblinc/docker-names/lib/index.js","../src/lib/prompts.ts","../src/commands/add.ts","../src/lib/envrc.ts","../src/lib/direnv.ts","../src/commands/set.ts","../src/commands/unset.ts","../src/commands/edit.ts","../src/commands/remove.ts","../src/lib/main-menu.ts","../src/commands/setup.ts","../src/commands/init.ts","../src/commands/create.ts","../src/commands/rm.ts","../src/index.ts","../src/lib/banner.ts","../src/lib/update.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","//#region node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs\nconst NUMBER_CHAR_RE = /\\d/;\nconst STR_SPLITTERS = [\n\t\"-\",\n\t\"_\",\n\t\"/\",\n\t\".\"\n];\nfunction isUppercase(char = \"\") {\n\tif (NUMBER_CHAR_RE.test(char)) return;\n\treturn char !== char.toLowerCase();\n}\nfunction splitByCase(str, separators) {\n\tconst splitters = separators ?? STR_SPLITTERS;\n\tconst parts = [];\n\tif (!str || typeof str !== \"string\") return parts;\n\tlet buff = \"\";\n\tlet previousUpper;\n\tlet previousSplitter;\n\tfor (const char of str) {\n\t\tconst isSplitter = splitters.includes(char);\n\t\tif (isSplitter === true) {\n\t\t\tparts.push(buff);\n\t\t\tbuff = \"\";\n\t\t\tpreviousUpper = void 0;\n\t\t\tcontinue;\n\t\t}\n\t\tconst isUpper = isUppercase(char);\n\t\tif (previousSplitter === false) {\n\t\t\tif (previousUpper === false && isUpper === true) {\n\t\t\t\tparts.push(buff);\n\t\t\t\tbuff = char;\n\t\t\t\tpreviousUpper = isUpper;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (previousUpper === true && isUpper === false && buff.length > 1) {\n\t\t\t\tconst lastChar = buff.at(-1);\n\t\t\t\tparts.push(buff.slice(0, Math.max(0, buff.length - 1)));\n\t\t\t\tbuff = lastChar + char;\n\t\t\t\tpreviousUpper = isUpper;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tbuff += char;\n\t\tpreviousUpper = isUpper;\n\t\tpreviousSplitter = isSplitter;\n\t}\n\tparts.push(buff);\n\treturn parts;\n}\nfunction upperFirst(str) {\n\treturn str ? str[0].toUpperCase() + str.slice(1) : \"\";\n}\nfunction lowerFirst(str) {\n\treturn str ? str[0].toLowerCase() + str.slice(1) : \"\";\n}\nfunction pascalCase(str, opts) {\n\treturn str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"\") : \"\";\n}\nfunction camelCase(str, opts) {\n\treturn lowerFirst(pascalCase(str || \"\", opts));\n}\nfunction kebabCase(str, joiner) {\n\treturn str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? \"-\") : \"\";\n}\n\n//#endregion\nexport { kebabCase as n, camelCase as t };","import { n as kebabCase, t as camelCase } from \"./_chunks/libs/scule.mjs\";\nimport { parseArgs as parseArgs$1 } from \"node:util\";\n\n//#region src/_utils.ts\nfunction toArray(val) {\n\tif (Array.isArray(val)) return val;\n\treturn val === void 0 ? [] : [val];\n}\nfunction formatLineColumns(lines, linePrefix = \"\") {\n\tconst maxLength = [];\n\tfor (const line of lines) for (const [i, element] of line.entries()) maxLength[i] = Math.max(maxLength[i] || 0, element.length);\n\treturn lines.map((l) => l.map((c, i) => linePrefix + c[i === 0 ? \"padStart\" : \"padEnd\"](maxLength[i])).join(\" \")).join(\"\\n\");\n}\nfunction resolveValue(input) {\n\treturn typeof input === \"function\" ? input() : input;\n}\nvar CLIError = class extends Error {\n\tcode;\n\tconstructor(message, code) {\n\t\tsuper(message);\n\t\tthis.name = \"CLIError\";\n\t\tthis.code = code;\n\t}\n};\n\n//#endregion\n//#region src/_parser.ts\nfunction parseRawArgs(args = [], opts = {}) {\n\tconst booleans = new Set(opts.boolean || []);\n\tconst strings = new Set(opts.string || []);\n\tconst aliasMap = opts.alias || {};\n\tconst defaults = opts.default || {};\n\tconst aliasToMain = /* @__PURE__ */ new Map();\n\tconst mainToAliases = /* @__PURE__ */ new Map();\n\tfor (const [key, value] of Object.entries(aliasMap)) {\n\t\tconst targets = value;\n\t\tfor (const target of targets) {\n\t\t\taliasToMain.set(key, target);\n\t\t\tif (!mainToAliases.has(target)) mainToAliases.set(target, []);\n\t\t\tmainToAliases.get(target).push(key);\n\t\t\taliasToMain.set(target, key);\n\t\t\tif (!mainToAliases.has(key)) mainToAliases.set(key, []);\n\t\t\tmainToAliases.get(key).push(target);\n\t\t}\n\t}\n\tconst options = {};\n\tfunction getType(name) {\n\t\tif (booleans.has(name)) return \"boolean\";\n\t\tconst aliases = mainToAliases.get(name) || [];\n\t\tfor (const alias of aliases) if (booleans.has(alias)) return \"boolean\";\n\t\treturn \"string\";\n\t}\n\tconst allOptions = new Set([\n\t\t...booleans,\n\t\t...strings,\n\t\t...Object.keys(aliasMap),\n\t\t...Object.values(aliasMap).flat(),\n\t\t...Object.keys(defaults)\n\t]);\n\tfor (const name of allOptions) if (!options[name]) options[name] = {\n\t\ttype: getType(name),\n\t\tdefault: defaults[name]\n\t};\n\tfor (const [alias, main] of aliasToMain.entries()) if (alias.length === 1 && options[main] && !options[main].short) options[main].short = alias;\n\tconst processedArgs = [];\n\tconst negatedFlags = {};\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\t\tif (arg === \"--\") {\n\t\t\tprocessedArgs.push(...args.slice(i));\n\t\t\tbreak;\n\t\t}\n\t\tif (arg.startsWith(\"--no-\")) {\n\t\t\tconst flagName = arg.slice(5);\n\t\t\tnegatedFlags[flagName] = true;\n\t\t\tcontinue;\n\t\t}\n\t\tprocessedArgs.push(arg);\n\t}\n\tlet parsed;\n\ttry {\n\t\tparsed = parseArgs$1({\n\t\t\targs: processedArgs,\n\t\t\toptions: Object.keys(options).length > 0 ? options : void 0,\n\t\t\tallowPositionals: true,\n\t\t\tstrict: false\n\t\t});\n\t} catch {\n\t\tparsed = {\n\t\t\tvalues: {},\n\t\t\tpositionals: processedArgs\n\t\t};\n\t}\n\tconst out = { _: [] };\n\tout._ = parsed.positionals;\n\tfor (const [key, value] of Object.entries(parsed.values)) out[key] = value;\n\tfor (const [name] of Object.entries(negatedFlags)) out[name] = false;\n\tfor (const [alias, main] of aliasToMain.entries()) {\n\t\tif (out[alias] !== void 0 && out[main] === void 0) out[main] = out[alias];\n\t\tif (out[main] !== void 0 && out[alias] === void 0) out[alias] = out[main];\n\t}\n\treturn out;\n}\n\n//#endregion\n//#region src/_color.ts\nconst noColor = /* @__PURE__ */ (() => {\n\tconst env = globalThis.process?.env ?? {};\n\treturn env.NO_COLOR === \"1\" || env.TERM === \"dumb\" || env.TEST || env.CI;\n})();\nconst _c = (c, r = 39) => (t) => noColor ? t : `\\u001B[${c}m${t}\\u001B[${r}m`;\nconst bold = /* @__PURE__ */ _c(1, 22);\nconst cyan = /* @__PURE__ */ _c(36);\nconst gray = /* @__PURE__ */ _c(90);\nconst underline = /* @__PURE__ */ _c(4, 24);\n\n//#endregion\n//#region src/args.ts\nfunction parseArgs(rawArgs, argsDef) {\n\tconst parseOptions = {\n\t\tboolean: [],\n\t\tstring: [],\n\t\talias: {},\n\t\tdefault: {}\n\t};\n\tconst args = resolveArgs(argsDef);\n\tfor (const arg of args) {\n\t\tif (arg.type === \"positional\") continue;\n\t\tif (arg.type === \"string\" || arg.type === \"enum\") parseOptions.string.push(arg.name);\n\t\telse if (arg.type === \"boolean\") parseOptions.boolean.push(arg.name);\n\t\tif (arg.default !== void 0) parseOptions.default[arg.name] = arg.default;\n\t\tif (arg.alias) parseOptions.alias[arg.name] = arg.alias;\n\t\tconst camelName = camelCase(arg.name);\n\t\tconst kebabName = kebabCase(arg.name);\n\t\tif (camelName !== arg.name || kebabName !== arg.name) {\n\t\t\tconst existingAliases = toArray(parseOptions.alias[arg.name] || []);\n\t\t\tif (camelName !== arg.name && !existingAliases.includes(camelName)) existingAliases.push(camelName);\n\t\t\tif (kebabName !== arg.name && !existingAliases.includes(kebabName)) existingAliases.push(kebabName);\n\t\t\tif (existingAliases.length > 0) parseOptions.alias[arg.name] = existingAliases;\n\t\t}\n\t}\n\tconst parsed = parseRawArgs(rawArgs, parseOptions);\n\tconst [ ...positionalArguments] = parsed._;\n\tconst parsedArgsProxy = new Proxy(parsed, { get(target, prop) {\n\t\treturn target[prop] ?? target[camelCase(prop)] ?? target[kebabCase(prop)];\n\t} });\n\tfor (const [, arg] of args.entries()) if (arg.type === \"positional\") {\n\t\tconst nextPositionalArgument = positionalArguments.shift();\n\t\tif (nextPositionalArgument !== void 0) parsedArgsProxy[arg.name] = nextPositionalArgument;\n\t\telse if (arg.default === void 0 && arg.required !== false) throw new CLIError(`Missing required positional argument: ${arg.name.toUpperCase()}`, \"EARG\");\n\t\telse parsedArgsProxy[arg.name] = arg.default;\n\t} else if (arg.type === \"enum\") {\n\t\tconst argument = parsedArgsProxy[arg.name];\n\t\tconst options = arg.options || [];\n\t\tif (argument !== void 0 && options.length > 0 && !options.includes(argument)) throw new CLIError(`Invalid value for argument: ${cyan(`--${arg.name}`)} (${cyan(argument)}). Expected one of: ${options.map((o) => cyan(o)).join(\", \")}.`, \"EARG\");\n\t} else if (arg.required && parsedArgsProxy[arg.name] === void 0) throw new CLIError(`Missing required argument: --${arg.name}`, \"EARG\");\n\treturn parsedArgsProxy;\n}\nfunction resolveArgs(argsDef) {\n\tconst args = [];\n\tfor (const [name, argDef] of Object.entries(argsDef || {})) args.push({\n\t\t...argDef,\n\t\tname,\n\t\talias: toArray(argDef.alias)\n\t});\n\treturn args;\n}\n\n//#endregion\n//#region src/command.ts\nfunction defineCommand(def) {\n\treturn def;\n}\nasync function runCommand(cmd, opts) {\n\tconst cmdArgs = await resolveValue(cmd.args || {});\n\tconst parsedArgs = parseArgs(opts.rawArgs, cmdArgs);\n\tconst context = {\n\t\trawArgs: opts.rawArgs,\n\t\targs: parsedArgs,\n\t\tdata: opts.data,\n\t\tcmd\n\t};\n\tif (typeof cmd.setup === \"function\") await cmd.setup(context);\n\tlet result;\n\ttry {\n\t\tconst subCommands = await resolveValue(cmd.subCommands);\n\t\tif (subCommands && Object.keys(subCommands).length > 0) {\n\t\t\tconst subCommandArgIndex = opts.rawArgs.findIndex((arg) => !arg.startsWith(\"-\"));\n\t\t\tconst subCommandName = opts.rawArgs[subCommandArgIndex];\n\t\t\tif (subCommandName) {\n\t\t\t\tif (!subCommands[subCommandName]) throw new CLIError(`Unknown command ${cyan(subCommandName)}`, \"E_UNKNOWN_COMMAND\");\n\t\t\t\tconst subCommand = await resolveValue(subCommands[subCommandName]);\n\t\t\t\tif (subCommand) await runCommand(subCommand, { rawArgs: opts.rawArgs.slice(subCommandArgIndex + 1) });\n\t\t\t} else if (!cmd.run) throw new CLIError(`No command specified.`, \"E_NO_COMMAND\");\n\t\t}\n\t\tif (typeof cmd.run === \"function\") result = await cmd.run(context);\n\t} finally {\n\t\tif (typeof cmd.cleanup === \"function\") await cmd.cleanup(context);\n\t}\n\treturn { result };\n}\nasync function resolveSubCommand(cmd, rawArgs, parent) {\n\tconst subCommands = await resolveValue(cmd.subCommands);\n\tif (subCommands && Object.keys(subCommands).length > 0) {\n\t\tconst subCommandArgIndex = rawArgs.findIndex((arg) => !arg.startsWith(\"-\"));\n\t\tconst subCommandName = rawArgs[subCommandArgIndex];\n\t\tconst subCommand = await resolveValue(subCommands[subCommandName]);\n\t\tif (subCommand) return resolveSubCommand(subCommand, rawArgs.slice(subCommandArgIndex + 1), cmd);\n\t}\n\treturn [cmd, parent];\n}\n\n//#endregion\n//#region src/usage.ts\nasync function showUsage(cmd, parent) {\n\ttry {\n\t\tconsole.log(await renderUsage(cmd, parent) + \"\\n\");\n\t} catch (error) {\n\t\tconsole.error(error);\n\t}\n}\nconst negativePrefixRe = /^no[-A-Z]/;\nasync function renderUsage(cmd, parent) {\n\tconst cmdMeta = await resolveValue(cmd.meta || {});\n\tconst cmdArgs = resolveArgs(await resolveValue(cmd.args || {}));\n\tconst parentMeta = await resolveValue(parent?.meta || {});\n\tconst commandName = `${parentMeta.name ? `${parentMeta.name} ` : \"\"}` + (cmdMeta.name || process.argv[1]);\n\tconst argLines = [];\n\tconst posLines = [];\n\tconst commandsLines = [];\n\tconst usageLine = [];\n\tfor (const arg of cmdArgs) if (arg.type === \"positional\") {\n\t\tconst name = arg.name.toUpperCase();\n\t\tconst isRequired = arg.required !== false && arg.default === void 0;\n\t\tconst defaultHint = arg.default ? `=\"${arg.default}\"` : \"\";\n\t\tposLines.push([\n\t\t\tcyan(name + defaultHint),\n\t\t\targ.description || \"\",\n\t\t\targ.valueHint ? `<${arg.valueHint}>` : \"\"\n\t\t]);\n\t\tusageLine.push(isRequired ? `<${name}>` : `[${name}]`);\n\t} else {\n\t\tconst isRequired = arg.required === true && arg.default === void 0;\n\t\tconst argStr = [...(arg.alias || []).map((a) => `-${a}`), `--${arg.name}`].join(\", \") + (arg.type === \"string\" && (arg.valueHint || arg.default) ? `=${arg.valueHint ? `<${arg.valueHint}>` : `\"${arg.default || \"\"}\"`}` : \"\") + (arg.type === \"enum\" && arg.options ? `=<${arg.options.join(\"|\")}>` : \"\");\n\t\targLines.push([cyan(argStr + (isRequired ? \" (required)\" : \"\")), arg.description || \"\"]);\n\t\t/**\n\t\t* print negative boolean arg variant usage when\n\t\t* - enabled by default or has `negativeDescription`\n\t\t* - not prefixed with `no-` or `no[A-Z]`\n\t\t*/\n\t\tif (arg.type === \"boolean\" && (arg.default === true || arg.negativeDescription) && !negativePrefixRe.test(arg.name)) {\n\t\t\tconst negativeArgStr = [...(arg.alias || []).map((a) => `--no-${a}`), `--no-${arg.name}`].join(\", \");\n\t\t\targLines.push([cyan(negativeArgStr + (isRequired ? \" (required)\" : \"\")), arg.negativeDescription || \"\"]);\n\t\t}\n\t\tif (isRequired) usageLine.push(argStr);\n\t}\n\tif (cmd.subCommands) {\n\t\tconst commandNames = [];\n\t\tconst subCommands = await resolveValue(cmd.subCommands);\n\t\tfor (const [name, sub] of Object.entries(subCommands)) {\n\t\t\tconst meta = await resolveValue((await resolveValue(sub))?.meta);\n\t\t\tif (meta?.hidden) continue;\n\t\t\tcommandsLines.push([cyan(name), meta?.description || \"\"]);\n\t\t\tcommandNames.push(name);\n\t\t}\n\t\tusageLine.push(commandNames.join(\"|\"));\n\t}\n\tconst usageLines = [];\n\tconst version = cmdMeta.version || parentMeta.version;\n\tusageLines.push(gray(`${cmdMeta.description} (${commandName + (version ? ` v${version}` : \"\")})`), \"\");\n\tconst hasOptions = argLines.length > 0 || posLines.length > 0;\n\tusageLines.push(`${underline(bold(\"USAGE\"))} ${cyan(`${commandName}${hasOptions ? \" [OPTIONS]\" : \"\"} ${usageLine.join(\" \")}`)}`, \"\");\n\tif (posLines.length > 0) {\n\t\tusageLines.push(underline(bold(\"ARGUMENTS\")), \"\");\n\t\tusageLines.push(formatLineColumns(posLines, \" \"));\n\t\tusageLines.push(\"\");\n\t}\n\tif (argLines.length > 0) {\n\t\tusageLines.push(underline(bold(\"OPTIONS\")), \"\");\n\t\tusageLines.push(formatLineColumns(argLines, \" \"));\n\t\tusageLines.push(\"\");\n\t}\n\tif (commandsLines.length > 0) {\n\t\tusageLines.push(underline(bold(\"COMMANDS\")), \"\");\n\t\tusageLines.push(formatLineColumns(commandsLines, \" \"));\n\t\tusageLines.push(\"\", `Use ${cyan(`${commandName} <command> --help`)} for more information about a command.`);\n\t}\n\treturn usageLines.filter((l) => typeof l === \"string\").join(\"\\n\");\n}\n\n//#endregion\n//#region src/main.ts\nasync function runMain(cmd, opts = {}) {\n\tconst rawArgs = opts.rawArgs || process.argv.slice(2);\n\tconst showUsage$1 = opts.showUsage || showUsage;\n\ttry {\n\t\tif (rawArgs.includes(\"--help\") || rawArgs.includes(\"-h\")) {\n\t\t\tawait showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n\t\t\tprocess.exit(0);\n\t\t} else if (rawArgs.length === 1 && rawArgs[0] === \"--version\") {\n\t\t\tconst meta = typeof cmd.meta === \"function\" ? await cmd.meta() : await cmd.meta;\n\t\t\tif (!meta?.version) throw new CLIError(\"No version specified\", \"E_NO_VERSION\");\n\t\t\tconsole.log(meta.version);\n\t\t} else await runCommand(cmd, { rawArgs });\n\t} catch (error) {\n\t\tif (error instanceof CLIError) {\n\t\t\tawait showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n\t\t\tconsole.error(error.message);\n\t\t} else console.error(error, \"\\n\");\n\t\tprocess.exit(1);\n\t}\n}\nfunction createMain(cmd) {\n\treturn (opts = {}) => runMain(cmd, opts);\n}\n\n//#endregion\nexport { createMain, defineCommand, parseArgs, renderUsage, runCommand, runMain, showUsage };","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","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","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\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","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","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\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|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\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]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\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-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of 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 combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n","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","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 = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${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[rows.length - 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\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(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[rows.length - 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[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 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 pre = [...rows.join('\\n')];\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(pre.slice(index).join('')) || {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\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.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tget valueWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.value;\n\t\t}\n\t\tif (this.cursor >= this.value.length) {\n\t\t\treturn `${this.value}█`;\n\t\t}\n\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = this.value.slice(this.cursor);\n\t\treturn `${s1}${color.inverse(s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport os from 'node:os';\nimport * as p from '@clack/prompts';\nimport color from 'picocolors';\n\nfunction getXdgConfigHome(): string {\n return process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');\n}\n\nfunction getDefaultConfigDir(): string {\n if (process.env.AGENTPROFILES_CONFIG_DIR) {\n return process.env.AGENTPROFILES_CONFIG_DIR;\n }\n return path.join(getXdgConfigHome(), 'agentprofiles');\n}\n\nfunction getConfigPath(): string {\n return path.join(getDefaultConfigDir(), 'config.json');\n}\n\nexport async function isInitialized(): Promise<boolean> {\n try {\n await fs.access(getConfigPath());\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function runOnboarding(options: { isRerun?: boolean } = {}): Promise<boolean> {\n const configDir = getDefaultConfigDir();\n const configPath = getConfigPath();\n\n if (options.isRerun) {\n p.intro(color.cyan('Re-running agentprofiles setup'));\n } else {\n p.intro(color.cyan('Welcome to agentprofiles!'));\n p.note(\n `This tool manages configuration profiles for LLM agent tools.\\n` +\n `Profiles are stored as directories that can be activated per-project using direnv.`,\n 'About'\n );\n }\n\n p.log.info(`Config directory: ${color.dim(configDir)}`);\n\n const defaultContentDir = configDir;\n\n const contentDirChoice = await p.text({\n message: 'Where should profile contents be stored?',\n placeholder: defaultContentDir,\n defaultValue: defaultContentDir,\n validate: (value) => {\n if (!value) return 'Please enter a directory path';\n if (!path.isAbsolute(value) && !value.startsWith('~')) {\n return 'Please enter an absolute path';\n }\n return undefined;\n },\n });\n\n if (p.isCancel(contentDirChoice)) {\n p.cancel('Setup cancelled.');\n return false;\n }\n\n let contentDir = contentDirChoice as string;\n if (contentDir.startsWith('~')) {\n contentDir = path.join(os.homedir(), contentDir.slice(1));\n }\n\n const spinner = p.spinner();\n spinner.start('Creating directories...');\n\n try {\n await fs.mkdir(configDir, { recursive: true });\n await fs.mkdir(contentDir, { recursive: true });\n\n const config = {\n contentDir: contentDir === configDir ? undefined : contentDir,\n createdAt: new Date().toISOString(),\n version: 1,\n };\n await fs.writeFile(configPath, JSON.stringify(config, null, 2));\n\n for (const tool of ['claude', 'opencode']) {\n await fs.mkdir(path.join(contentDir, tool), { recursive: true });\n }\n\n spinner.stop('Directories created');\n } catch (error) {\n spinner.stop('Failed to create directories');\n p.log.error(`Error: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n\n p.outro(\n color.green('Setup complete! Run `agentprofiles add <agent>` to create your first profile.')\n );\n return true;\n}\n\nexport async function ensureInitialized(): Promise<boolean> {\n if (await isInitialized()) {\n return true;\n }\n\n if (!process.stdout.isTTY) {\n console.error(color.red('agentprofiles is not initialized.'));\n console.error(`Run ${color.cyan('agentprofiles init')} to set up.`);\n process.exit(1);\n }\n\n return runOnboarding();\n}\n","export interface Meta {\n name: string;\n slug: string;\n agent: string;\n description?: string;\n created_at?: string;\n}\n\nexport interface ToolDefinition {\n envVar: string;\n xdgCompliant: boolean;\n description: string;\n}\n\nexport interface Config {\n tools: Record<string, ToolDefinition>;\n}\n\nexport interface CliConfig {\n contentDir?: string; // Path to content directory (relative to configDir or absolute)\n}\n\nexport const SUPPORTED_TOOLS: Record<string, ToolDefinition> = {\n claude: {\n envVar: 'CLAUDE_CONFIG_DIR',\n xdgCompliant: false,\n description: 'Claude Code',\n },\n opencode: {\n envVar: 'OPENCODE_CONFIG_DIR',\n xdgCompliant: true,\n description: 'OpenCode',\n },\n};\n","const SLUG_REGEX = /^[a-z0-9][a-z0-9._-]*$/;\n\nexport function slugify(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/[^a-z0-9._-]/g, '')\n .replace(/-+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport function validateProfileName(name: string): string | null {\n const trimmed = name.trim();\n if (trimmed.length === 0) return 'Profile name is required.';\n if (trimmed !== name) return 'Profile name must not include surrounding whitespace.';\n const slug = slugify(name);\n if (slug.length === 0) return 'Profile name must contain at least one letter or number.';\n if (slug.includes('..')) return 'Profile name must not include \"..\".';\n return null;\n}\n\nexport function validateSlug(slug: string): string | null {\n if (slug.length === 0) return 'Slug is required.';\n if (!SLUG_REGEX.test(slug)) {\n return 'Slug must be lowercase letters, numbers, \".\", \"-\", \"_\".';\n }\n if (slug.includes('..')) return 'Slug must not include \"..\".';\n return null;\n}\n","const CLAUDE_GITIGNORE = `# Generated by agentprofiles\ncache/\ndebug/\ndownloads/\nfile-history/\nhistory.jsonl\nide/\nplugins/cache/\nplugins/marketplaces/\nprojects/\nsession-env/\nshell-snapshots/\nstats-cache.json\nstatsig/\ntodos/\n.DS_Store\n.claude.json\n.claude.json.backup\n`;\n\nconst OPENCODE_GITIGNORE = `# Generated by agentprofiles\ncache/\nlogs/\nhistory*\ntmp/\n.DS_Store\n`;\n\nexport function getAgentGitignore(agent: string) {\n switch (agent) {\n case 'claude':\n return CLAUDE_GITIGNORE;\n case 'opencode':\n return OPENCODE_GITIGNORE;\n default:\n return '';\n }\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport os from 'node:os';\nimport { CliConfig, Meta, SUPPORTED_TOOLS } from '../types/index.js';\nimport { validateProfileName, slugify, validateSlug } from './validation.js';\nimport { getAgentGitignore } from './gitignore.js';\n\n// Resolution order for contentDir:\n// 1. AGENTPROFILES_CONTENT_DIR environment variable\n// 2. config.json contentDir setting\n// 3. Default: same as configDir\n\nfunction getXdgConfigHome(): string {\n return process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');\n}\n\nfunction getDefaultConfigDir(): string {\n // AGENTPROFILES_CONFIG_DIR overrides everything\n if (process.env.AGENTPROFILES_CONFIG_DIR) {\n return process.env.AGENTPROFILES_CONFIG_DIR;\n }\n return path.join(getXdgConfigHome(), 'agentprofiles');\n}\n\nexport class ConfigManager {\n private configDir: string;\n private contentDir: string;\n private tools: typeof SUPPORTED_TOOLS;\n private cliConfig: CliConfig | null = null;\n\n constructor() {\n this.configDir = getDefaultConfigDir();\n this.tools = SUPPORTED_TOOLS;\n // contentDir will be resolved lazily or after loading config\n this.contentDir = this.resolveContentDir();\n }\n\n private resolveContentDir(): string {\n // 1. Environment variable takes precedence\n if (process.env.AGENTPROFILES_CONTENT_DIR) {\n return process.env.AGENTPROFILES_CONTENT_DIR;\n }\n // 2. Config file setting (if loaded)\n if (this.cliConfig?.contentDir) {\n const configuredDir = this.cliConfig.contentDir;\n // If relative path, resolve relative to configDir\n if (!path.isAbsolute(configuredDir)) {\n return path.join(this.configDir, configuredDir);\n }\n return configuredDir;\n }\n // 3. Default: same as configDir\n return this.configDir;\n }\n\n private async loadCliConfig(): Promise<CliConfig> {\n const configPath = path.join(this.configDir, 'config.json');\n try {\n const content = await fs.readFile(configPath, 'utf-8');\n return JSON.parse(content) as CliConfig;\n } catch {\n return {};\n }\n }\n\n async init(): Promise<void> {\n this.cliConfig = await this.loadCliConfig();\n this.contentDir = this.resolveContentDir();\n }\n\n getConfigDir(): string {\n return this.configDir;\n }\n\n getContentDir(): string {\n return this.contentDir;\n }\n\n async ensureConfigDir(): Promise<void> {\n // Create base config directory\n await fs.mkdir(this.configDir, { recursive: true });\n\n // Create config.json if not exists\n const configPath = path.join(this.configDir, 'config.json');\n try {\n await fs.access(configPath);\n // If config already exists, load it so contentDir reflects config.json.\n this.cliConfig = await this.loadCliConfig();\n } catch {\n const defaultConfig: CliConfig = {};\n await fs.writeFile(configPath, JSON.stringify(defaultConfig, null, 2));\n this.cliConfig = defaultConfig;\n }\n\n // Re-resolve content dir after loading/creating config.json.\n this.contentDir = this.resolveContentDir();\n\n // Create content directory (may be same as configDir)\n await fs.mkdir(this.contentDir, { recursive: true });\n\n // Create tool directories inside content dir\n for (const tool of Object.keys(this.tools)) {\n const toolDir = path.join(this.contentDir, tool);\n await fs.mkdir(toolDir, { recursive: true });\n await this.ensureAgentGitignore(toolDir, tool);\n }\n }\n\n private async ensureAgentGitignore(agentDir: string, agent: string) {\n const gitignorePath = path.join(agentDir, '.gitignore');\n try {\n await fs.access(gitignorePath);\n return;\n } catch {\n // continue\n }\n const content = getAgentGitignore(agent);\n if (!content) return;\n await fs.writeFile(gitignorePath, content);\n }\n\n async getProfiles(agent: string): Promise<Meta[]> {\n const agentDir = path.join(this.contentDir, agent);\n try {\n const entries = await fs.readdir(agentDir, { withFileTypes: true });\n const profiles: Meta[] = [];\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n const dirName = entry.name;\n if (validateSlug(dirName) !== null) continue;\n\n const metaPath = path.join(agentDir, dirName, 'meta.json');\n let meta: Partial<Meta> = {};\n try {\n const content = await fs.readFile(metaPath, 'utf-8');\n meta = JSON.parse(content);\n } catch {\n // No meta.json or invalid JSON - use defaults\n }\n\n profiles.push({\n name: meta.name || dirName,\n slug: dirName,\n agent,\n description: meta.description,\n created_at: meta.created_at,\n });\n }\n return profiles;\n } catch {\n return [];\n }\n }\n\n async createProfile(agent: string, name: string, description?: string): Promise<string> {\n if (!this.tools[agent]) {\n throw new Error(`Unsupported agent: ${agent}`);\n }\n const validationError = validateProfileName(name);\n if (validationError) {\n throw new Error(validationError);\n }\n\n const slug = slugify(name);\n const profileDir = path.join(this.contentDir, agent, slug);\n\n try {\n await fs.access(profileDir);\n throw new Error(`Profile '${slug}' already exists for agent '${agent}'`);\n } catch (err) {\n if (err instanceof Error && 'code' in err && err.code !== 'ENOENT') {\n throw err;\n }\n if (err instanceof Error && !('code' in err)) {\n throw err;\n }\n }\n\n await fs.mkdir(profileDir, { recursive: true });\n\n const meta: Meta = {\n name,\n slug,\n agent,\n description,\n created_at: new Date().toISOString(),\n };\n\n await fs.writeFile(path.join(profileDir, 'meta.json'), JSON.stringify(meta, null, 2));\n\n return profileDir;\n }\n}\n","import { defineCommand } from 'citty';\nimport { ConfigManager } from '../lib/config.js';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\n\nexport async function listCommand(agent?: string) {\n const config = new ConfigManager();\n await config.init();\n\n if (agent && !SUPPORTED_TOOLS[agent]) {\n console.error(color.red(`Unsupported agent: ${agent}`));\n process.exit(1);\n }\n\n const configDir = config.getConfigDir();\n const contentDir = config.getContentDir();\n\n console.log(color.bold('Configuration:'));\n console.log(` Config: ${color.dim(configDir)}`);\n if (contentDir !== configDir) {\n console.log(` Content: ${color.dim(contentDir)}`);\n }\n\n const agents = agent ? [agent] : Object.keys(SUPPORTED_TOOLS);\n\n for (const a of agents) {\n const profiles = await config.getProfiles(a);\n const tool = SUPPORTED_TOOLS[a];\n if (!tool) continue;\n console.log(color.bold(`\\n${tool.description} Profiles:`));\n if (profiles.length === 0) {\n console.log(color.dim(' No profiles found'));\n } else {\n for (const p of profiles) {\n const label = p.name !== p.slug ? `${p.name} (${p.slug})` : p.name;\n console.log(` ${color.cyan(label)} - ${p.description || 'No description'}`);\n }\n }\n }\n}\n\nexport default defineCommand({\n meta: {\n name: 'list',\n description: 'List available profiles',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Filter by agent name',\n required: false,\n },\n },\n async run({ args }) {\n await listCommand(args.agent);\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateNameWithNumber = exports.generateName = exports.right = exports.left = void 0;\nexports.left = [\n \"admiring\",\n \"adoring\",\n \"affectionate\",\n \"amazing\",\n \"authentic\",\n \"awesome\",\n \"beautiful\",\n \"beloved\",\n \"blissful\",\n \"bold\",\n \"brave\",\n \"caprine\",\n \"charming\",\n \"clever\",\n \"cool\",\n \"compassionate\",\n \"competent\",\n \"confident\",\n \"curious\",\n \"dazzling\",\n \"determined\",\n \"dreamy\",\n \"eager\",\n \"ecstatic\",\n \"elastic\",\n \"elated\",\n \"elegant\",\n \"eloquent\",\n \"epic\",\n \"exciting\",\n \"fervent\",\n \"festive\",\n \"flamboyant\",\n \"focused\",\n \"friendly\",\n \"frosty\",\n \"funny\",\n \"gallant\",\n \"gifted\",\n \"goofy\",\n \"gracious\",\n \"great\",\n \"happy\",\n \"heuristic\",\n \"hopeful\",\n \"infallible\",\n \"inspiring\",\n \"interesting\",\n \"intelligent\",\n \"jolly\",\n \"jovial\",\n \"keen\",\n \"kind\",\n \"laughing\",\n \"lucid\",\n \"magical\",\n \"mystifying\",\n \"modest\",\n \"musing\",\n \"nice\",\n \"nifty\",\n \"nostalgic\",\n \"objective\",\n \"optimistic\",\n \"peaceful\",\n \"practical\",\n \"priceless\",\n \"problematic\",\n \"quirky\",\n \"quizzical\",\n \"recursing\",\n \"relaxed\",\n \"retentive\",\n \"reverent\",\n \"ruminant\",\n \"serene\",\n \"sharp\",\n \"stoic\",\n \"sweet\",\n \"tender\",\n \"trusting\",\n \"unruffled\",\n \"upbeat\",\n \"vibrant\",\n \"vigilant\",\n \"vigorous\",\n \"wizardly\",\n \"wonderful\",\n \"xenodochial\",\n \"youthful\",\n \"zealous\",\n \"zen\",\n];\nexports.right = [\n // Muhammad ibn Jābir al-Ḥarrānī al-Battānī was a founding father of astronomy. https://en.wikipedia.org/wiki/Mu%E1%B8%A5ammad_ibn_J%C4%81bir_al-%E1%B8%A4arr%C4%81n%C4%AB_al-Batt%C4%81n%C4%AB\n \"albattani\",\n // Frances E. Allen, became the first female IBM Fellow in 1989. In 2006, she became the first female recipient of the ACM's Turing Award. https://en.wikipedia.org/wiki/Frances_E._Allen\n \"allen\",\n // June Almeida - Scottish virologist who took the first pictures of the rubella virus - https://en.wikipedia.org/wiki/June_Almeida\n \"almeida\",\n // Kathleen Antonelli, American computer programmer and one of the six original programmers of the ENIAC - https://en.wikipedia.org/wiki/Kathleen_Antonelli\n \"antonelli\",\n // Maria Gaetana Agnesi - Italian mathematician, philosopher, theologian and humanitarian. She was the first woman to write a mathematics handbook and the first woman appointed as a Mathematics Professor at a University. https://en.wikipedia.org/wiki/Maria_Gaetana_Agnesi\n \"agnesi\",\n // Archimedes was a physicist, engineer and mathematician who invented too many things to list them here. https://en.wikipedia.org/wiki/Archimedes\n \"archimedes\",\n // Maria Ardinghelli - Italian translator, mathematician and physicist - https://en.wikipedia.org/wiki/Maria_Ardinghelli\n \"ardinghelli\",\n // Aryabhata - Ancient Indian mathematician-astronomer during 476-550 CE https://en.wikipedia.org/wiki/Aryabhata\n \"aryabhata\",\n // Wanda Austin - Wanda Austin is the President and CEO of The Aerospace Corporation, a leading architect for the US security space programs. https://en.wikipedia.org/wiki/Wanda_Austin\n \"austin\",\n // Charles Babbage invented the concept of a programmable computer. https://en.wikipedia.org/wiki/Charles_Babbage.\n \"babbage\",\n // Stefan Banach - Polish mathematician, was one of the founders of modern functional analysis. https://en.wikipedia.org/wiki/Stefan_Banach\n \"banach\",\n // Buckaroo Banzai and his mentor Dr. Hikita perfected the \"oscillation overthruster\", a device that allows one to pass through solid matter. - https://en.wikipedia.org/wiki/The_Adventures_of_Buckaroo_Banzai_Across_the_8th_Dimension\n \"banzai\",\n // John Bardeen co-invented the transistor - https://en.wikipedia.org/wiki/John_Bardeen\n \"bardeen\",\n // Jean Bartik, born Betty Jean Jennings, was one of the original programmers for the ENIAC computer. https://en.wikipedia.org/wiki/Jean_Bartik\n \"bartik\",\n // Laura Bassi, the world's first female professor https://en.wikipedia.org/wiki/Laura_Bassi\n \"bassi\",\n // Alexander Graham Bell - an eminent Scottish-born scientist, inventor, engineer and innovator who is credited with inventing the first practical telephone - https://en.wikipedia.org/wiki/Alexander_Graham_Bell\n \"bell\",\n // Karl Friedrich Benz - a German automobile engineer. Inventor of the first practical motorcar. https://en.wikipedia.org/wiki/Karl_Benz\n \"benz\",\n // Homi J Bhabha - was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research. Colloquially known as \"father of Indian nuclear programme\"- https://en.wikipedia.org/wiki/Homi_J._Bhabha\n \"bhabha\",\n // Bhaskara II - Ancient Indian mathematician-astronomer whose work on calculus predates Newton and Leibniz by over half a millennium - https://en.wikipedia.org/wiki/Bh%C4%81skara_II#Calculus\n \"bhaskara\",\n // Elizabeth Helen Blackburn - Australian-American Nobel laureate; best known for co-discovering telomerase. https://en.wikipedia.org/wiki/Elizabeth_Blackburn\n \"blackburn\",\n // Elizabeth Blackwell - American doctor and first American woman to receive a medical degree - https://en.wikipedia.org/wiki/Elizabeth_Blackwell\n \"blackwell\",\n // Niels Bohr is the father of quantum theory. https://en.wikipedia.org/wiki/Niels_Bohr.\n \"bohr\",\n // Kathleen Booth, she's credited with writing the first assembly language. https://en.wikipedia.org/wiki/Kathleen_Booth\n \"booth\",\n // Anita Borg - Anita Borg was the founding director of the Institute for Women and Technology (IWT). https://en.wikipedia.org/wiki/Anita_Borg\n \"borg\",\n // Satyendra Nath Bose - He provided the foundation for Bose–Einstein statistics and the theory of the Bose–Einstein condensate. - https://en.wikipedia.org/wiki/Satyendra_Nath_Bose\n \"bose\",\n // Katherine Louise Bouman is an imaging scientist and Assistant Professor of Computer Science at the California Institute of Technology. She researches computational methods for imaging, and developed an algorithm that made possible the picture first visualization of a black hole using the Event Horizon Telescope. - https://en.wikipedia.org/wiki/Katie_Bouman\n \"bouman\",\n // Evelyn Boyd Granville - She was one of the first African-American woman to receive a Ph.D. in mathematics; she earned it in 1949 from Yale University. https://en.wikipedia.org/wiki/Evelyn_Boyd_Granville\n \"boyd\",\n // Brahmagupta - Ancient Indian mathematician during 598-670 CE who gave rules to compute with zero - https://en.wikipedia.org/wiki/Brahmagupta#Zero\n \"brahmagupta\",\n // Walter Houser Brattain co-invented the transistor - https://en.wikipedia.org/wiki/Walter_Houser_Brattain\n \"brattain\",\n // Emmett Brown invented time travel. https://en.wikipedia.org/wiki/Emmett_Brown (thanks Brian Goff)\n \"brown\",\n // Linda Brown Buck - American biologist and Nobel laureate best known for her genetic and molecular analyses of the mechanisms of smell. https://en.wikipedia.org/wiki/Linda_B._Buck\n \"buck\",\n // Dame Susan Jocelyn Bell Burnell - Northern Irish astrophysicist who discovered radio pulsars and was the first to analyse them. https://en.wikipedia.org/wiki/Jocelyn_Bell_Burnell\n \"burnell\",\n // Annie Jump Cannon - pioneering female astronomer who classified hundreds of thousands of stars and created the system we use to understand stars today. https://en.wikipedia.org/wiki/Annie_Jump_Cannon\n \"cannon\",\n // Rachel Carson - American marine biologist and conservationist, her book Silent Spring and other writings are credited with advancing the global environmental movement. https://en.wikipedia.org/wiki/Rachel_Carson\n \"carson\",\n // Dame Mary Lucy Cartwright - British mathematician who was one of the first to study what is now known as chaos theory. Also known for Cartwright's theorem which finds applications in signal processing. https://en.wikipedia.org/wiki/Mary_Cartwright\n \"cartwright\",\n // George Washington Carver - American agricultural scientist and inventor. He was the most prominent black scientist of the early 20th century. https://en.wikipedia.org/wiki/George_Washington_Carver\n \"carver\",\n // Vinton Gray Cerf - American Internet pioneer, recognised as one of \"the fathers of the Internet\". With Robert Elliot Kahn, he designed TCP and IP, the primary data communication protocols of the Internet and other computer networks. https://en.wikipedia.org/wiki/Vint_Cerf\n \"cerf\",\n // Subrahmanyan Chandrasekhar - Astrophysicist known for his mathematical theory on different stages and evolution in structures of the stars. He has won nobel prize for physics - https://en.wikipedia.org/wiki/Subrahmanyan_Chandrasekhar\n \"chandrasekhar\",\n // Sergey Alexeyevich Chaplygin (Russian: Серге́й Алексе́евич Чаплы́гин; April 5, 1869 – October 8, 1942) was a Russian and Soviet physicist, mathematician, and mechanical engineer. He is known for mathematical formulas such as Chaplygin's equation and for a hypothetical substance in cosmology called Chaplygin gas, named after him. https://en.wikipedia.org/wiki/Sergey_Chaplygin\n \"chaplygin\",\n // Émilie du Châtelet - French natural philosopher, mathematician, physicist, and author during the early 1730s, known for her translation of and commentary on Isaac Newton's book Principia containing basic laws of physics. https://en.wikipedia.org/wiki/%C3%89milie_du_Ch%C3%A2telet\n \"chatelet\",\n // Asima Chatterjee was an Indian organic chemist noted for her research on vinca alkaloids, development of drugs for treatment of epilepsy and malaria - https://en.wikipedia.org/wiki/Asima_Chatterjee\n \"chatterjee\",\n // Pafnuty Chebyshev - Russian mathematician. He is known fo his works on probability, statistics, mechanics, analytical geometry and number theory https://en.wikipedia.org/wiki/Pafnuty_Chebyshev\n \"chebyshev\",\n // Bram Cohen - American computer programmer and author of the BitTorrent peer-to-peer protocol. https://en.wikipedia.org/wiki/Bram_Cohen\n \"cohen\",\n // David Lee Chaum - American computer scientist and cryptographer. Known for his seminal contributions in the field of anonymous communication. https://en.wikipedia.org/wiki/David_Chaum\n \"chaum\",\n // Joan Clarke - Bletchley Park code breaker during the Second World War who pioneered techniques that remained top secret for decades. Also an accomplished numismatist https://en.wikipedia.org/wiki/Joan_Clarke\n \"clarke\",\n // Jane Colden - American botanist widely considered the first female American botanist - https://en.wikipedia.org/wiki/Jane_Colden\n \"colden\",\n // Gerty Theresa Cori - American biochemist who became the third woman—and first American woman—to win a Nobel Prize in science, and the first woman to be awarded the Nobel Prize in Physiology or Medicine. Cori was born in Prague. https://en.wikipedia.org/wiki/Gerty_Cori\n \"cori\",\n // Seymour Roger Cray was an American electrical engineer and supercomputer architect who designed a series of computers that were the fastest in the world for decades. https://en.wikipedia.org/wiki/Seymour_Cray\n \"cray\",\n // This entry reflects a husband and wife team who worked together:\n // Joan Curran was a Welsh scientist who developed radar and invented chaff, a radar countermeasure. https://en.wikipedia.org/wiki/Joan_Curran\n // Samuel Curran was an Irish physicist who worked alongside his wife during WWII and invented the proximity fuse. https://en.wikipedia.org/wiki/Samuel_Curran\n \"curran\",\n // Marie Skłodowska-Curie discovered radioactivity. https://en.wikipedia.org/wiki/Marie_Curie.\n \"curie\",\n // Charles Darwin established the principles of natural evolution. https://en.wikipedia.org/wiki/Charles_Darwin.\n \"darwin\",\n // Leonardo Da Vinci invented too many things to list here. https://en.wikipedia.org/wiki/Leonardo_da_Vinci.\n \"davinci\",\n // A. K. (Alexander Keewatin) Dewdney, Canadian mathematician, computer scientist, author and filmmaker. Contributor to Scientific American's \"Computer Recreations\" from 1984 to 1991. Author of Core War (program), The Planiverse, The Armchair Universe, The Magic Machine, The New Turing Omnibus, and more. https://en.wikipedia.org/wiki/Alexander_Dewdney\n \"dewdney\",\n // Satish Dhawan - Indian mathematician and aerospace engineer, known for leading the successful and indigenous development of the Indian space programme. https://en.wikipedia.org/wiki/Satish_Dhawan\n \"dhawan\",\n // Bailey Whitfield Diffie - American cryptographer and one of the pioneers of public-key cryptography. https://en.wikipedia.org/wiki/Whitfield_Diffie\n \"diffie\",\n // Edsger Wybe Dijkstra was a Dutch computer scientist and mathematical scientist. https://en.wikipedia.org/wiki/Edsger_W._Dijkstra.\n \"dijkstra\",\n // Paul Adrien Maurice Dirac - English theoretical physicist who made fundamental contributions to the early development of both quantum mechanics and quantum electrodynamics. https://en.wikipedia.org/wiki/Paul_Dirac\n \"dirac\",\n // Agnes Meyer Driscoll - American cryptanalyst during World Wars I and II who successfully cryptanalysed a number of Japanese ciphers. She was also the co-developer of one of the cipher machines of the US Navy, the CM. https://en.wikipedia.org/wiki/Agnes_Meyer_Driscoll\n \"driscoll\",\n // Donna Dubinsky - played an integral role in the development of personal digital assistants (PDAs) serving as CEO of Palm, Inc. and co-founding Handspring. https://en.wikipedia.org/wiki/Donna_Dubinsky\n \"dubinsky\",\n // Thomas Alva Edison, prolific inventor https://en.wikipedia.org/wiki/Thomas_Edison\n \"edison\",\n // Albert Einstein invented the general theory of relativity. https://en.wikipedia.org/wiki/Albert_Einstein\n \"einstein\",\n // Alexandra Asanovna Elbakyan (Russian: Алекса́ндра Аса́новна Элбакя́н) is a Kazakhstani graduate student, computer programmer, internet pirate in hiding, and the creator of the site Sci-Hub. Nature has listed her in 2016 in the top ten people that mattered in science, and Ars Technica has compared her to Aaron Swartz. - https://en.wikipedia.org/wiki/Alexandra_Elbakyan\n \"elbakyan\",\n // Taher A. ElGamal - Egyptian cryptographer best known for the ElGamal discrete log cryptosystem and the ElGamal digital signature scheme. https://en.wikipedia.org/wiki/Taher_Elgamal\n \"elgamal\",\n // Gertrude Elion - American biochemist, pharmacologist and the 1988 recipient of the Nobel Prize in Medicine - https://en.wikipedia.org/wiki/Gertrude_Elion\n \"elion\",\n // James Henry Ellis - British engineer and cryptographer employed by the GCHQ. Best known for conceiving for the first time, the idea of public-key cryptography. https://en.wikipedia.org/wiki/James_H._Ellis\n \"ellis\",\n // Douglas Engelbart gave the mother of all demos: https://en.wikipedia.org/wiki/Douglas_Engelbart\n \"engelbart\",\n // Euclid invented geometry. https://en.wikipedia.org/wiki/Euclid\n \"euclid\",\n // Leonhard Euler invented large parts of modern mathematics. https://de.wikipedia.org/wiki/Leonhard_Euler\n \"euler\",\n // Michael Faraday - British scientist who contributed to the study of electromagnetism and electrochemistry. https://en.wikipedia.org/wiki/Michael_Faraday\n \"faraday\",\n // Horst Feistel - German-born American cryptographer who was one of the earliest non-government researchers to study the design and theory of block ciphers. Co-developer of DES and Lucifer. Feistel networks, a symmetric structure used in the construction of block ciphers are named after him. https://en.wikipedia.org/wiki/Horst_Feistel\n \"feistel\",\n // Pierre de Fermat pioneered several aspects of modern mathematics. https://en.wikipedia.org/wiki/Pierre_de_Fermat\n \"fermat\",\n // Enrico Fermi invented the first nuclear reactor. https://en.wikipedia.org/wiki/Enrico_Fermi.\n \"fermi\",\n // Richard Feynman was a key contributor to quantum mechanics and particle physics. https://en.wikipedia.org/wiki/Richard_Feynman\n \"feynman\",\n // Benjamin Franklin is famous for his experiments in electricity and the invention of the lightning rod.\n \"franklin\",\n // Yuri Alekseyevich Gagarin - Soviet pilot and cosmonaut, best known as the first human to journey into outer space. https://en.wikipedia.org/wiki/Yuri_Gagarin\n \"gagarin\",\n // Galileo was a founding father of modern astronomy, and faced politics and obscurantism to establish scientific truth. https://en.wikipedia.org/wiki/Galileo_Galilei\n \"galileo\",\n // Évariste Galois - French mathematician whose work laid the foundations of Galois theory and group theory, two major branches of abstract algebra, and the subfield of Galois connections, all while still in his late teens. https://en.wikipedia.org/wiki/%C3%89variste_Galois\n \"galois\",\n // Kadambini Ganguly - Indian physician, known for being the first South Asian female physician, trained in western medicine, to graduate in South Asia. https://en.wikipedia.org/wiki/Kadambini_Ganguly\n \"ganguly\",\n // William Henry \"Bill\" Gates III is an American business magnate, philanthropist, investor, computer programmer, and inventor. https://en.wikipedia.org/wiki/Bill_Gates\n \"gates\",\n // Johann Carl Friedrich Gauss - German mathematician who made significant contributions to many fields, including number theory, algebra, statistics, analysis, differential geometry, geodesy, geophysics, mechanics, electrostatics, magnetic fields, astronomy, matrix theory, and optics. https://en.wikipedia.org/wiki/Carl_Friedrich_Gauss\n \"gauss\",\n // Marie-Sophie Germain - French mathematician, physicist and philosopher. Known for her work on elasticity theory, number theory and philosophy. https://en.wikipedia.org/wiki/Sophie_Germain\n \"germain\",\n // Adele Goldberg, was one of the designers and developers of the Smalltalk language. https://en.wikipedia.org/wiki/Adele_Goldberg_(computer_scientist)\n \"goldberg\",\n // Adele Goldstine, born Adele Katz, wrote the complete technical description for the first electronic digital computer, ENIAC. https://en.wikipedia.org/wiki/Adele_Goldstine\n \"goldstine\",\n // Shafi Goldwasser is a computer scientist known for creating theoretical foundations of modern cryptography. Winner of 2012 ACM Turing Award. https://en.wikipedia.org/wiki/Shafi_Goldwasser\n \"goldwasser\",\n // James Golick, all around gangster.\n \"golick\",\n // Jane Goodall - British primatologist, ethologist, and anthropologist who is considered to be the world's foremost expert on chimpanzees - https://en.wikipedia.org/wiki/Jane_Goodall\n \"goodall\",\n // Stephen Jay Gould was was an American paleontologist, evolutionary biologist, and historian of science. He is most famous for the theory of punctuated equilibrium - https://en.wikipedia.org/wiki/Stephen_Jay_Gould\n \"gould\",\n // Carolyn Widney Greider - American molecular biologist and joint winner of the 2009 Nobel Prize for Physiology or Medicine for the discovery of telomerase. https://en.wikipedia.org/wiki/Carol_W._Greider\n \"greider\",\n // Alexander Grothendieck - German-born French mathematician who became a leading figure in the creation of modern algebraic geometry. https://en.wikipedia.org/wiki/Alexander_Grothendieck\n \"grothendieck\",\n // Lois Haibt - American computer scientist, part of the team at IBM that developed FORTRAN - https://en.wikipedia.org/wiki/Lois_Haibt\n \"haibt\",\n // Margaret Hamilton - Director of the Software Engineering Division of the MIT Instrumentation Laboratory, which developed on-board flight software for the Apollo space program. https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)\n \"hamilton\",\n // Caroline Harriet Haslett - English electrical engineer, electricity industry administrator and champion of women's rights. Co-author of British Standard 1363 that specifies AC power plugs and sockets used across the United Kingdom (which is widely considered as one of the safest designs). https://en.wikipedia.org/wiki/Caroline_Haslett\n \"haslett\",\n // Stephen Hawking pioneered the field of cosmology by combining general relativity and quantum mechanics. https://en.wikipedia.org/wiki/Stephen_Hawking\n \"hawking\",\n // Martin Edward Hellman - American cryptologist, best known for his invention of public-key cryptography in co-operation with Whitfield Diffie and Ralph Merkle. https://en.wikipedia.org/wiki/Martin_Hellman\n \"hellman\",\n // Werner Heisenberg was a founding father of quantum mechanics. https://en.wikipedia.org/wiki/Werner_Heisenberg\n \"heisenberg\",\n // Grete Hermann was a German philosopher noted for her philosophical work on the foundations of quantum mechanics. https://en.wikipedia.org/wiki/Grete_Hermann\n \"hermann\",\n // Caroline Lucretia Herschel - German astronomer and discoverer of several comets. https://en.wikipedia.org/wiki/Caroline_Herschel\n \"herschel\",\n // Heinrich Rudolf Hertz - German physicist who first conclusively proved the existence of the electromagnetic waves. https://en.wikipedia.org/wiki/Heinrich_Hertz\n \"hertz\",\n // Jaroslav Heyrovský was the inventor of the polarographic method, father of the electroanalytical method, and recipient of the Nobel Prize in 1959. His main field of work was polarography. https://en.wikipedia.org/wiki/Jaroslav_Heyrovsk%C3%BD\n \"heyrovsky\",\n // Dorothy Hodgkin was a British biochemist, credited with the development of protein crystallography. She was awarded the Nobel Prize in Chemistry in 1964. https://en.wikipedia.org/wiki/Dorothy_Hodgkin\n \"hodgkin\",\n // Douglas R. Hofstadter is an American professor of cognitive science and author of the Pulitzer Prize and American Book Award-winning work Goedel, Escher, Bach: An Eternal Golden Braid in 1979. A mind-bending work which coined Hofstadter's Law: \"It always takes longer than you expect, even when you take into account Hofstadter's Law.\" https://en.wikipedia.org/wiki/Douglas_Hofstadter\n \"hofstadter\",\n // Erna Schneider Hoover revolutionized modern communication by inventing a computerized telephone switching method. https://en.wikipedia.org/wiki/Erna_Schneider_Hoover\n \"hoover\",\n // Grace Hopper developed the first compiler for a computer programming language and is credited with popularizing the term \"debugging\" for fixing computer glitches. https://en.wikipedia.org/wiki/Grace_Hopper\n \"hopper\",\n // Frances Hugle, she was an American scientist, engineer, and inventor who contributed to the understanding of semiconductors, integrated circuitry, and the unique electrical principles of microscopic materials. https://en.wikipedia.org/wiki/Frances_Hugle\n \"hugle\",\n // Hypatia - Greek Alexandrine Neoplatonist philosopher in Egypt who was one of the earliest mothers of mathematics - https://en.wikipedia.org/wiki/Hypatia\n \"hypatia\",\n // Teruko Ishizaka - Japanese scientist and immunologist who co-discovered the antibody class Immunoglobulin E. https://en.wikipedia.org/wiki/Teruko_Ishizaka\n \"ishizaka\",\n // Mary Jackson, American mathematician and aerospace engineer who earned the highest title within NASA's engineering department - https://en.wikipedia.org/wiki/Mary_Jackson_(engineer)\n \"jackson\",\n // Mae Carol Jemison - is an American engineer, physician, and former NASA astronaut. She became the first black woman to travel in space when she served as a mission specialist aboard the Space Shuttle Endeavour - https://en.wikipedia.org/wiki/Mae_Jemison\n \"jemison\",\n // Betty Jennings - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Jean_Bartik\n \"jennings\",\n // Mary Lou Jepsen, was the founder and chief technology officer of One Laptop Per Child (OLPC), and the founder of Pixel Qi. https://en.wikipedia.org/wiki/Mary_Lou_Jepsen\n \"jepsen\",\n // Irène Joliot-Curie - French scientist who was awarded the Nobel Prize for Chemistry in 1935. Daughter of Marie and Pierre Curie. https://en.wikipedia.org/wiki/Ir%C3%A8ne_Joliot-Curie\n \"joliot\",\n // Karen Spärck Jones came up with the concept of inverse document frequency, which is used in most search engines today. https://en.wikipedia.org/wiki/Karen_Sp%C3%A4rck_Jones\n \"jones\",\n // A. P. J. Abdul Kalam - is an Indian scientist aka Missile Man of India for his work on the development of ballistic missile and launch vehicle technology - https://en.wikipedia.org/wiki/A._P._J._Abdul_Kalam\n \"kalam\",\n // Dan Kaminsky - (Feb. 7, 1979 - April 23, 2021) cybersecurity hero known for his study on DNS cache poisoning and his investingations into the Sony Rootkit attacks.\n \"kaminsky\",\n // Sergey Petrovich Kapitsa (Russian: Серге́й Петро́вич Капи́ца; 14 February 1928 – 14 August 2012) was a Russian physicist and demographer. He was best known as host of the popular and long-running Russian scientific TV show, Evident, but Incredible. His father was the Nobel laureate Soviet-era physicist Pyotr Kapitsa, and his brother was the geographer and Antarctic explorer Andrey Kapitsa. - https://en.wikipedia.org/wiki/Sergey_Kapitsa\n \"kapitsa\",\n // Susan Kare, created the icons and many of the interface elements for the original Apple Macintosh in the 1980s, and was an original employee of NeXT, working as the Creative Director. https://en.wikipedia.org/wiki/Susan_Kare\n \"kare\",\n // Mstislav Keldysh - a Soviet scientist in the field of mathematics and mechanics, academician of the USSR Academy of Sciences (1946), President of the USSR Academy of Sciences (1961–1975), three times Hero of Socialist Labor (1956, 1961, 1971), fellow of the Royal Society of Edinburgh (1968). https://en.wikipedia.org/wiki/Mstislav_Keldysh\n \"keldysh\",\n // Mary Kenneth Keller, Sister Mary Kenneth Keller became the first American woman to earn a PhD in Computer Science in 1965. https://en.wikipedia.org/wiki/Mary_Kenneth_Keller\n \"keller\",\n // Johannes Kepler, German astronomer known for his three laws of planetary motion - https://en.wikipedia.org/wiki/Johannes_Kepler\n \"kepler\",\n // Omar Khayyam - Persian mathematician, astronomer and poet. Known for his work on the classification and solution of cubic equations, for his contribution to the understanding of Euclid's fifth postulate and for computing the length of a year very accurately. https://en.wikipedia.org/wiki/Omar_Khayyam\n \"khayyam\",\n // Har Gobind Khorana - Indian-American biochemist who shared the 1968 Nobel Prize for Physiology - https://en.wikipedia.org/wiki/Har_Gobind_Khorana\n \"khorana\",\n // Jack Kilby invented silicon integrated circuits and gave Silicon Valley its name. - https://en.wikipedia.org/wiki/Jack_Kilby\n \"kilby\",\n // Maria Kirch - German astronomer and first woman to discover a comet - https://en.wikipedia.org/wiki/Maria_Margarethe_Kirch\n \"kirch\",\n // Donald Knuth - American computer scientist, author of \"The Art of Computer Programming\" and creator of the TeX typesetting system. https://en.wikipedia.org/wiki/Donald_Knuth\n \"knuth\",\n // Sophie Kowalevski - Russian mathematician responsible for important original contributions to analysis, differential equations and mechanics - https://en.wikipedia.org/wiki/Sofia_Kovalevskaya\n \"kowalevski\",\n // Marie-Jeanne de Lalande - French astronomer, mathematician and cataloguer of stars - https://en.wikipedia.org/wiki/Marie-Jeanne_de_Lalande\n \"lalande\",\n // Hedy Lamarr - Actress and inventor. The principles of her work are now incorporated into modern Wi-Fi, CDMA and Bluetooth technology. https://en.wikipedia.org/wiki/Hedy_Lamarr\n \"lamarr\",\n // Leslie B. Lamport - American computer scientist. Lamport is best known for his seminal work in distributed systems and was the winner of the 2013 Turing Award. https://en.wikipedia.org/wiki/Leslie_Lamport\n \"lamport\",\n // Mary Leakey - British paleoanthropologist who discovered the first fossilized Proconsul skull - https://en.wikipedia.org/wiki/Mary_Leakey\n \"leakey\",\n // Henrietta Swan Leavitt - she was an American astronomer who discovered the relation between the luminosity and the period of Cepheid variable stars. https://en.wikipedia.org/wiki/Henrietta_Swan_Leavitt\n \"leavitt\",\n // Esther Miriam Zimmer Lederberg - American microbiologist and a pioneer of bacterial genetics. https://en.wikipedia.org/wiki/Esther_Lederberg\n \"lederberg\",\n // Inge Lehmann - Danish seismologist and geophysicist. Known for discovering in 1936 that the Earth has a solid inner core inside a molten outer core. https://en.wikipedia.org/wiki/Inge_Lehmann\n \"lehmann\",\n // Daniel Lewin - Mathematician, Akamai co-founder, soldier, 9/11 victim-- Developed optimization techniques for routing traffic on the internet. Died attempting to stop the 9-11 hijackers. https://en.wikipedia.org/wiki/Daniel_Lewin\n \"lewin\",\n // Ruth Lichterman - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Ruth_Teitelbaum\n \"lichterman\",\n // Barbara Liskov - co-developed the Liskov substitution principle. Liskov was also the winner of the Turing Prize in 2008. - https://en.wikipedia.org/wiki/Barbara_Liskov\n \"liskov\",\n // Ada Lovelace invented the first algorithm. https://en.wikipedia.org/wiki/Ada_Lovelace (thanks James Turnbull)\n \"lovelace\",\n // Auguste and Louis Lumière - the first filmmakers in history - https://en.wikipedia.org/wiki/Auguste_and_Louis_Lumi%C3%A8re\n \"lumiere\",\n // Mahavira - Ancient Indian mathematician during 9th century AD who discovered basic algebraic identities - https://en.wikipedia.org/wiki/Mah%C4%81v%C4%ABra_(mathematician)\n \"mahavira\",\n // Lynn Margulis (b. Lynn Petra Alexander) - an American evolutionary theorist and biologist, science author, educator, and popularizer, and was the primary modern proponent for the significance of symbiosis in evolution. - https://en.wikipedia.org/wiki/Lynn_Margulis\n \"margulis\",\n // Yukihiro Matsumoto - Japanese computer scientist and software programmer best known as the chief designer of the Ruby programming language. https://en.wikipedia.org/wiki/Yukihiro_Matsumoto\n \"matsumoto\",\n // James Clerk Maxwell - Scottish physicist, best known for his formulation of electromagnetic theory. https://en.wikipedia.org/wiki/James_Clerk_Maxwell\n \"maxwell\",\n // Maria Mayer - American theoretical physicist and Nobel laureate in Physics for proposing the nuclear shell model of the atomic nucleus - https://en.wikipedia.org/wiki/Maria_Mayer\n \"mayer\",\n // John McCarthy invented LISP: https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)\n \"mccarthy\",\n // Barbara McClintock - a distinguished American cytogeneticist, 1983 Nobel Laureate in Physiology or Medicine for discovering transposons. https://en.wikipedia.org/wiki/Barbara_McClintock\n \"mcclintock\",\n // Anne Laura Dorinthea McLaren - British developmental biologist whose work helped lead to human in-vitro fertilisation. https://en.wikipedia.org/wiki/Anne_McLaren\n \"mclaren\",\n // Malcolm McLean invented the modern shipping container: https://en.wikipedia.org/wiki/Malcom_McLean\n \"mclean\",\n // Kay McNulty - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Kathleen_Antonelli\n \"mcnulty\",\n // Gregor Johann Mendel - Czech scientist and founder of genetics. https://en.wikipedia.org/wiki/Gregor_Mendel\n \"mendel\",\n // Dmitri Mendeleev - a chemist and inventor. He formulated the Periodic Law, created a farsighted version of the periodic table of elements, and used it to correct the properties of some already discovered elements and also to predict the properties of eight elements yet to be discovered. https://en.wikipedia.org/wiki/Dmitri_Mendeleev\n \"mendeleev\",\n // Lise Meitner - Austrian/Swedish physicist who was involved in the discovery of nuclear fission. The element meitnerium is named after her - https://en.wikipedia.org/wiki/Lise_Meitner\n \"meitner\",\n // Carla Meninsky, was the game designer and programmer for Atari 2600 games Dodge 'Em and Warlords. https://en.wikipedia.org/wiki/Carla_Meninsky\n \"meninsky\",\n // Ralph C. Merkle - American computer scientist, known for devising Merkle's puzzles - one of the very first schemes for public-key cryptography. Also, inventor of Merkle trees and co-inventor of the Merkle-Damgård construction for building collision-resistant cryptographic hash functions and the Merkle-Hellman knapsack cryptosystem. https://en.wikipedia.org/wiki/Ralph_Merkle\n \"merkle\",\n // Johanna Mestorf - German prehistoric archaeologist and first female museum director in Germany - https://en.wikipedia.org/wiki/Johanna_Mestorf\n \"mestorf\",\n // Maryam Mirzakhani - an Iranian mathematician and the first woman to win the Fields Medal. https://en.wikipedia.org/wiki/Maryam_Mirzakhani\n \"mirzakhani\",\n // Rita Levi-Montalcini - Won Nobel Prize in Physiology or Medicine jointly with colleague Stanley Cohen for the discovery of nerve growth factor (https://en.wikipedia.org/wiki/Rita_Levi-Montalcini)\n \"montalcini\",\n // Gordon Earle Moore - American engineer, Silicon Valley founding father, author of Moore's law. https://en.wikipedia.org/wiki/Gordon_Moore\n \"moore\",\n // Samuel Morse - contributed to the invention of a single-wire telegraph system based on European telegraphs and was a co-developer of the Morse code - https://en.wikipedia.org/wiki/Samuel_Morse\n \"morse\",\n // Ian Murdock - founder of the Debian project - https://en.wikipedia.org/wiki/Ian_Murdock\n \"murdock\",\n // May-Britt Moser - Nobel prize winner neuroscientist who contributed to the discovery of grid cells in the brain. https://en.wikipedia.org/wiki/May-Britt_Moser\n \"moser\",\n // John Napier of Merchiston - Scottish landowner known as an astronomer, mathematician and physicist. Best known for his discovery of logarithms. https://en.wikipedia.org/wiki/John_Napier\n \"napier\",\n // John Forbes Nash, Jr. - American mathematician who made fundamental contributions to game theory, differential geometry, and the study of partial differential equations. https://en.wikipedia.org/wiki/John_Forbes_Nash_Jr.\n \"nash\",\n // John von Neumann - todays computer architectures are based on the von Neumann architecture. https://en.wikipedia.org/wiki/Von_Neumann_architecture\n \"neumann\",\n // Isaac Newton invented classic mechanics and modern optics. https://en.wikipedia.org/wiki/Isaac_Newton\n \"newton\",\n // Florence Nightingale, more prominently known as a nurse, was also the first female member of the Royal Statistical Society and a pioneer in statistical graphics https://en.wikipedia.org/wiki/Florence_Nightingale#Statistics_and_sanitary_reform\n \"nightingale\",\n // Alfred Nobel - a Swedish chemist, engineer, innovator, and armaments manufacturer (inventor of dynamite) - https://en.wikipedia.org/wiki/Alfred_Nobel\n \"nobel\",\n // Emmy Noether, German mathematician. Noether's Theorem is named after her. https://en.wikipedia.org/wiki/Emmy_Noether\n \"noether\",\n // Poppy Northcutt. Poppy Northcutt was the first woman to work as part of NASA’s Mission Control. http://www.businessinsider.com/poppy-northcutt-helped-apollo-astronauts-2014-12?op=1\n \"northcutt\",\n // Robert Noyce invented silicon integrated circuits and gave Silicon Valley its name. - https://en.wikipedia.org/wiki/Robert_Noyce\n \"noyce\",\n // Panini - Ancient Indian linguist and grammarian from 4th century CE who worked on the world's first formal system - https://en.wikipedia.org/wiki/P%C4%81%E1%B9%87ini#Comparison_with_modern_formal_systems\n \"panini\",\n // Ambroise Pare invented modern surgery. https://en.wikipedia.org/wiki/Ambroise_Par%C3%A9\n \"pare\",\n // Blaise Pascal, French mathematician, physicist, and inventor - https://en.wikipedia.org/wiki/Blaise_Pascal\n \"pascal\",\n // Louis Pasteur discovered vaccination, fermentation and pasteurization. https://en.wikipedia.org/wiki/Louis_Pasteur.\n \"pasteur\",\n // Cecilia Payne-Gaposchkin was an astronomer and astrophysicist who, in 1925, proposed in her Ph.D. thesis an explanation for the composition of stars in terms of the relative abundances of hydrogen and helium. https://en.wikipedia.org/wiki/Cecilia_Payne-Gaposchkin\n \"payne\",\n // Radia Perlman is a software designer and network engineer and most famous for her invention of the spanning-tree protocol (STP). https://en.wikipedia.org/wiki/Radia_Perlman\n \"perlman\",\n // Rob Pike was a key contributor to Unix, Plan 9, the X graphic system, utf-8, and the Go programming language. https://en.wikipedia.org/wiki/Rob_Pike\n \"pike\",\n // Henri Poincaré made fundamental contributions in several fields of mathematics. https://en.wikipedia.org/wiki/Henri_Poincar%C3%A9\n \"poincare\",\n // Laura Poitras is a director and producer whose work, made possible by open source crypto tools, advances the causes of truth and freedom of information by reporting disclosures by whistleblowers such as Edward Snowden. https://en.wikipedia.org/wiki/Laura_Poitras\n \"poitras\",\n // Tat’yana Avenirovna Proskuriakova (Russian: Татья́на Авени́ровна Проскуряко́ва) (January 23 [O.S. January 10] 1909 – August 30, 1985) was a Russian-American Mayanist scholar and archaeologist who contributed significantly to the deciphering of Maya hieroglyphs, the writing system of the pre-Columbian Maya civilization of Mesoamerica. https://en.wikipedia.org/wiki/Tatiana_Proskouriakoff\n \"proskuriakova\",\n // Claudius Ptolemy - a Greco-Egyptian writer of Alexandria, known as a mathematician, astronomer, geographer, astrologer, and poet of a single epigram in the Greek Anthology - https://en.wikipedia.org/wiki/Ptolemy\n \"ptolemy\",\n // C. V. Raman - Indian physicist who won the Nobel Prize in 1930 for proposing the Raman effect. - https://en.wikipedia.org/wiki/C._V._Raman\n \"raman\",\n // Srinivasa Ramanujan - Indian mathematician and autodidact who made extraordinary contributions to mathematical analysis, number theory, infinite series, and continued fractions. - https://en.wikipedia.org/wiki/Srinivasa_Ramanujan\n \"ramanujan\",\n // Dennis Ritchie - co-creator of UNIX and the C programming language. - https://en.wikipedia.org/wiki/Dennis_Ritchie\n \"ritchie\",\n // Ida Rhodes - American pioneer in computer programming, designed the first computer used for Social Security. https://en.wikipedia.org/wiki/Ida_Rhodes\n \"rhodes\",\n // Julia Hall Bowman Robinson - American mathematician renowned for her contributions to the fields of computability theory and computational complexity theory. https://en.wikipedia.org/wiki/Julia_Robinson\n \"robinson\",\n // Wilhelm Conrad Röntgen - German physicist who was awarded the first Nobel Prize in Physics in 1901 for the discovery of X-rays (Röntgen rays). https://en.wikipedia.org/wiki/Wilhelm_R%C3%B6ntgen\n \"roentgen\",\n // Rosalind Franklin - British biophysicist and X-ray crystallographer whose research was critical to the understanding of DNA - https://en.wikipedia.org/wiki/Rosalind_Franklin\n \"rosalind\",\n // Vera Rubin - American astronomer who pioneered work on galaxy rotation rates. https://en.wikipedia.org/wiki/Vera_Rubin\n \"rubin\",\n // Meghnad Saha - Indian astrophysicist best known for his development of the Saha equation, used to describe chemical and physical conditions in stars - https://en.wikipedia.org/wiki/Meghnad_Saha\n \"saha\",\n // Jean E. Sammet developed FORMAC, the first widely used computer language for symbolic manipulation of mathematical formulas. https://en.wikipedia.org/wiki/Jean_E._Sammet\n \"sammet\",\n // Mildred Sanderson - American mathematician best known for Sanderson's theorem concerning modular invariants. https://en.wikipedia.org/wiki/Mildred_Sanderson\n \"sanderson\",\n // Satoshi Nakamoto is the name used by the unknown person or group of people who developed bitcoin, authored the bitcoin white paper, and created and deployed bitcoin's original reference implementation. https://en.wikipedia.org/wiki/Satoshi_Nakamoto\n \"satoshi\",\n // Adi Shamir - Israeli cryptographer whose numerous inventions and contributions to cryptography include the Ferge Fiat Shamir identification scheme, the Rivest Shamir Adleman (RSA) public-key cryptosystem, the Shamir's secret sharing scheme, the breaking of the Merkle-Hellman cryptosystem, the TWINKLE and TWIRL factoring devices and the discovery of differential cryptanalysis (with Eli Biham). https://en.wikipedia.org/wiki/Adi_Shamir\n \"shamir\",\n // Claude Shannon - The father of information theory and founder of digital circuit design theory. (https://en.wikipedia.org/wiki/Claude_Shannon)\n \"shannon\",\n // Carol Shaw - Originally an Atari employee, Carol Shaw is said to be the first female video game designer. https://en.wikipedia.org/wiki/Carol_Shaw_(video_game_designer)\n \"shaw\",\n // Dame Stephanie \"Steve\" Shirley - Founded a software company in 1962 employing women working from home. https://en.wikipedia.org/wiki/Steve_Shirley\n \"shirley\",\n // William Shockley co-invented the transistor - https://en.wikipedia.org/wiki/William_Shockley\n \"shockley\",\n // Lina Solomonovna Stern (or Shtern; Russian: Лина Соломоновна Штерн; 26 August 1878 – 7 March 1968) was a Soviet biochemist, physiologist and humanist whose medical discoveries saved thousands of lives at the fronts of World War II. She is best known for her pioneering work on blood–brain barrier, which she described as hemato-encephalic barrier in 1921. https://en.wikipedia.org/wiki/Lina_Stern\n \"shtern\",\n // Françoise Barré-Sinoussi - French virologist and Nobel Prize Laureate in Physiology or Medicine; her work was fundamental in identifying HIV as the cause of AIDS. https://en.wikipedia.org/wiki/Fran%C3%A7oise_Barr%C3%A9-Sinoussi\n \"sinoussi\",\n // Betty Snyder - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Betty_Holberton\n \"snyder\",\n // Cynthia Solomon - Pioneer in the fields of artificial intelligence, computer science and educational computing. Known for creation of Logo, an educational programming language. https://en.wikipedia.org/wiki/Cynthia_Solomon\n \"solomon\",\n // Frances Spence - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Frances_Spence\n \"spence\",\n // Michael Stonebraker is a database research pioneer and architect of Ingres, Postgres, VoltDB and SciDB. Winner of 2014 ACM Turing Award. https://en.wikipedia.org/wiki/Michael_Stonebraker\n \"stonebraker\",\n // Ivan Edward Sutherland - American computer scientist and Internet pioneer, widely regarded as the father of computer graphics. https://en.wikipedia.org/wiki/Ivan_Sutherland\n \"sutherland\",\n // Janese Swanson (with others) developed the first of the Carmen Sandiego games. She went on to found Girl Tech. https://en.wikipedia.org/wiki/Janese_Swanson\n \"swanson\",\n // Aaron Swartz was influential in creating RSS, Markdown, Creative Commons, Reddit, and much of the internet as we know it today. He was devoted to freedom of information on the web. https://en.wikiquote.org/wiki/Aaron_Swartz\n \"swartz\",\n // Bertha Swirles was a theoretical physicist who made a number of contributions to early quantum theory. https://en.wikipedia.org/wiki/Bertha_Swirles\n \"swirles\",\n // Helen Brooke Taussig - American cardiologist and founder of the field of paediatric cardiology. https://en.wikipedia.org/wiki/Helen_B._Taussig\n \"taussig\",\n // Valentina Tereshkova is a Russian engineer, cosmonaut and politician. She was the first woman to fly to space in 1963. In 2013, at the age of 76, she offered to go on a one-way mission to Mars. https://en.wikipedia.org/wiki/Valentina_Tereshkova\n \"tereshkova\",\n // Nikola Tesla invented the AC electric system and every gadget ever used by a James Bond villain. https://en.wikipedia.org/wiki/Nikola_Tesla\n \"tesla\",\n // Marie Tharp - American geologist and oceanic cartographer who co-created the first scientific map of the Atlantic Ocean floor. Her work led to the acceptance of the theories of plate tectonics and continental drift. https://en.wikipedia.org/wiki/Marie_Tharp\n \"tharp\",\n // Ken Thompson - co-creator of UNIX and the C programming language - https://en.wikipedia.org/wiki/Ken_Thompson\n \"thompson\",\n // Linus Torvalds invented Linux and Git. https://en.wikipedia.org/wiki/Linus_Torvalds\n \"torvalds\",\n // Youyou Tu - Chinese pharmaceutical chemist and educator known for discovering artemisinin and dihydroartemisinin, used to treat malaria, which has saved millions of lives. Joint winner of the 2015 Nobel Prize in Physiology or Medicine. https://en.wikipedia.org/wiki/Tu_Youyou\n \"tu\",\n // Alan Turing was a founding father of computer science. https://en.wikipedia.org/wiki/Alan_Turing.\n \"turing\",\n // Varahamihira - Ancient Indian mathematician who discovered trigonometric formulae during 505-587 CE - https://en.wikipedia.org/wiki/Var%C4%81hamihira#Contributions\n \"varahamihira\",\n // Dorothy Vaughan was a NASA mathematician and computer programmer on the SCOUT launch vehicle program that put America's first satellites into space - https://en.wikipedia.org/wiki/Dorothy_Vaughan\n \"vaughan\",\n // Sir Mokshagundam Visvesvaraya - is a notable Indian engineer. He is a recipient of the Indian Republic's highest honour, the Bharat Ratna, in 1955. On his birthday, 15 September is celebrated as Engineer's Day in India in his memory - https://en.wikipedia.org/wiki/Visvesvaraya\n \"visvesvaraya\",\n // Christiane Nüsslein-Volhard - German biologist, won Nobel Prize in Physiology or Medicine in 1995 for research on the genetic control of embryonic development. https://en.wikipedia.org/wiki/Christiane_N%C3%BCsslein-Volhard\n \"volhard\",\n // Cédric Villani - French mathematician, won Fields Medal, Fermat Prize and Poincaré Price for his work in differential geometry and statistical mechanics. https://en.wikipedia.org/wiki/C%C3%A9dric_Villani\n \"villani\",\n // Marlyn Wescoff - one of the original programmers of the ENIAC. https://en.wikipedia.org/wiki/ENIAC - https://en.wikipedia.org/wiki/Marlyn_Meltzer\n \"wescoff\",\n // Sylvia B. Wilbur - British computer scientist who helped develop the ARPANET, was one of the first to exchange email in the UK and a leading researcher in computer-supported collaborative work. https://en.wikipedia.org/wiki/Sylvia_Wilbur\n \"wilbur\",\n // Andrew Wiles - Notable British mathematician who proved the enigmatic Fermat's Last Theorem - https://en.wikipedia.org/wiki/Andrew_Wiles\n \"wiles\",\n // Roberta Williams, did pioneering work in graphical adventure games for personal computers, particularly the King's Quest series. https://en.wikipedia.org/wiki/Roberta_Williams\n \"williams\",\n // Malcolm John Williamson - British mathematician and cryptographer employed by the GCHQ. Developed in 1974 what is now known as Diffie-Hellman key exchange (Diffie and Hellman first published the scheme in 1976). https://en.wikipedia.org/wiki/Malcolm_J._Williamson\n \"williamson\",\n // Sophie Wilson designed the first Acorn Micro-Computer and the instruction set for ARM processors. https://en.wikipedia.org/wiki/Sophie_Wilson\n \"wilson\",\n // Jeannette Wing - co-developed the Liskov substitution principle. - https://en.wikipedia.org/wiki/Jeannette_Wing\n \"wing\",\n // Steve Wozniak invented the Apple I and Apple II. https://en.wikipedia.org/wiki/Steve_Wozniak\n \"wozniak\",\n // The Wright brothers, Orville and Wilbur - credited with inventing and building the world's first successful airplane and making the first controlled, powered and sustained heavier-than-air human flight - https://en.wikipedia.org/wiki/Wright_brothers\n \"wright\",\n // Chien-Shiung Wu - Chinese-American experimental physicist who made significant contributions to nuclear physics. https://en.wikipedia.org/wiki/Chien-Shiung_Wu\n \"wu\",\n // Rosalyn Sussman Yalow - Rosalyn Sussman Yalow was an American medical physicist, and a co-winner of the 1977 Nobel Prize in Physiology or Medicine for development of the radioimmunoassay technique. https://en.wikipedia.org/wiki/Rosalyn_Sussman_Yalow\n \"yalow\",\n // Ada Yonath - an Israeli crystallographer, the first woman from the Middle East to win a Nobel prize in the sciences. https://en.wikipedia.org/wiki/Ada_Yonath\n \"yonath\",\n // Nikolay Yegorovich Zhukovsky (Russian: Никола́й Его́рович Жуко́вский, January 17 1847 – March 17, 1921) was a Russian scientist, mathematician and engineer, and a founding father of modern aero- and hydrodynamics. Whereas contemporary scientists scoffed at the idea of human flight, Zhukovsky was the first to undertake the study of airflow. He is often called the Father of Russian Aviation. https://en.wikipedia.org/wiki/Nikolay_Yegorovich_Zhukovsky\n \"zhukovsky\",\n // Cribl Employees - Add your family name (or nickname) to this list in alphabetical order\n \"adebajo\",\n \"ago\",\n \"amir\",\n \"ansell\",\n \"balala\",\n \"barrett\",\n \"bhaskar\",\n \"bieron\",\n \"bitincka\",\n // Ledion Bitincka - Co-founder and Chief Technology Officer\n \"bondo\",\n \"bourbie\",\n \"bradford\",\n \"brunette\",\n \"bryant\",\n \"bui\",\n \"buzzard\",\n \"cavuto\",\n \"chakka\",\n \"checkoway\",\n \"chelikowsky\",\n \"chiorean\",\n \"choi\",\n \"chung\",\n \"collins\",\n \"conway\",\n \"correll\",\n \"cullen\",\n \"dagan\",\n \"dalpe\",\n \"dar\",\n \"davis\",\n \"dewadiga\",\n \"disha\",\n \"draese\",\n \"dryden\",\n \"duca\",\n \"dugas\",\n \"duke\",\n \"dzhumakaliev\",\n \"easley\",\n \"edens\",\n \"eltahir\",\n \"emmy\",\n \"fones\",\n \"fritze\",\n \"gardner\",\n \"gian\",\n \"gifford\",\n \"gilbert\",\n \"gleich\",\n \"gomes\",\n \"goolya\",\n \"goozy\",\n \"gorney\",\n \"halastra\",\n \"hall\",\n \"hayes\",\n \"heady\",\n \"hink\",\n \"hoffman\",\n \"janssen\",\n \"jarzyna\",\n \"jayaram\",\n \"jeebus\",\n \"kaczynski\",\n \"kanson\",\n \"katz\",\n // Eugene Katz - Sr Professional Services Consultant\n \"kellogg\",\n \"krueger\",\n \"kulkarni\",\n \"laarits\",\n \"lang\",\n \"laughlin\",\n \"lee\",\n \"lewis\",\n \"litras\",\n \"maislin\",\n \"mana\",\n \"marandola\",\n \"marcus\",\n \"marko\",\n \"martins\",\n \"mccombs\",\n \"mccririe\",\n \"mcgovern\",\n \"mersin\",\n \"miatselski\",\n \"mikhailov\",\n \"mikkleson\",\n \"mitchell\",\n \"mohammed\",\n \"molla\",\n \"monroy\",\n \"mortazavi\",\n \"mullins\",\n \"mullins\",\n \"mungel\",\n \"muni\",\n \"murad\",\n \"nguyen\",\n \"nurkulov\",\n \"owen\",\n \"padilla\",\n \"paplinski\",\n \"perumal\",\n \"pilarczyk\",\n \"polychronis\",\n \"pondrom\",\n \"prodan\",\n \"purfield\",\n \"quick\",\n \"quintero\",\n \"radecki\",\n \"raher\",\n \"ramanathan\",\n \"rattana\",\n \"reed\",\n \"rivendell\",\n \"rochette\",\n \"romano\",\n // Mariano Romano - Sr Technical Customer Training Mgr\n \"romero\",\n \"romito\",\n \"ross\",\n \"russell\",\n \"rust\",\n \"salerno\",\n \"santos\",\n \"searle\",\n \"semple\",\n \"shah\",\n \"shahbaz\",\n \"shanaghy\",\n // Mick Shanaghy - Head of Customer Support & Professional Services\n \"sharp\",\n \"shtylla\",\n \"singh\",\n \"smoczynska\",\n \"sobolewski\",\n \"souza\",\n \"strong\",\n \"suara\",\n \"sundaravarathan\",\n \"szmajnta\",\n \"tankersley\",\n \"trusov\",\n \"turcic\",\n \"uppuluri\",\n \"valeo\",\n \"vandoren\",\n // Tim VanDoren - Sr Software Engineer\n // Trevor VanDoren - Software Engineer\n \"wali\",\n \"wallace\",\n \"walters\",\n \"wilk\",\n \"wilkins\",\n \"woger\",\n \"wolfe\",\n \"zahid\",\n \"zamora\",\n \"zastawny\", // Bartek Zastawny - Sr Software Engineer\n];\n/**\n * Generates a name just like in docker\n * @returns {string}\n */\nfunction generateName() {\n var leftElement = exports.left[Math.floor(Math.random() * exports.left.length)];\n var rightElement = exports.right[Math.floor(Math.random() * exports.right.length)];\n return leftElement + \"-\" + rightElement;\n}\nexports.generateName = generateName;\n/**\n * Generates a name like in docker but also appends a number\n * @returns {string}\n */\nfunction generateNameWithNumber() {\n return generateName() + \"-\" + (Math.floor(Math.random() * 6) + 1);\n}\nexports.generateNameWithNumber = generateNameWithNumber;\n","import { select, isCancel, cancel } from '@clack/prompts';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport { ConfigManager } from './config.js';\n\nexport async function promptForAgent(message = 'Select an agent:'): Promise<string> {\n const options = Object.entries(SUPPORTED_TOOLS).map(([key, tool]) => ({\n value: key,\n label: tool.description,\n hint: key,\n }));\n\n const response = await select({\n message,\n options,\n });\n\n if (isCancel(response)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return response as string;\n}\n\nexport async function promptForProfile(\n config: ConfigManager,\n agent: string,\n message = 'Select a profile:'\n): Promise<string | null> {\n const profiles = await config.getProfiles(agent);\n\n if (profiles.length === 0) {\n return null;\n }\n\n const response = await select({\n message,\n options: profiles.map((p) => ({\n value: p.slug,\n label: p.name,\n hint: p.description,\n })),\n });\n\n if (isCancel(response)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n return response as string;\n}\n","import { defineCommand } from 'citty';\nimport { outro, text, isCancel, cancel } from '@clack/prompts';\nimport { ConfigManager } from '../lib/config.js';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\nimport { validateProfileName } from '../lib/validation.js';\nimport { generateName } from '@criblinc/docker-names';\nimport { promptForAgent } from '../lib/prompts.js';\n\nexport async function addCommand(agent?: string, name?: string) {\n let resolvedAgent = agent;\n\n if (!resolvedAgent) {\n resolvedAgent = await promptForAgent('Select agent to create profile for:');\n }\n\n if (!SUPPORTED_TOOLS[resolvedAgent]) {\n console.error(color.red(`Unsupported agent: ${resolvedAgent}`));\n process.exit(1);\n }\n\n if (!name) {\n const suggestedName = generateName();\n const response = await text({\n message: 'Enter profile name:',\n placeholder: suggestedName,\n initialValue: suggestedName,\n validate(value) {\n return validateProfileName(value) || undefined;\n },\n });\n\n if (isCancel(response)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n name = response;\n }\n const validationError = validateProfileName(name);\n if (validationError) {\n console.error(color.red(validationError));\n process.exit(1);\n }\n\n const config = new ConfigManager();\n await config.init();\n try {\n const path = await config.createProfile(resolvedAgent, name);\n outro(`Profile created at ${color.cyan(path)}`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(color.red(message));\n process.exit(1);\n }\n}\n\nexport default defineCommand({\n meta: {\n name: 'add',\n description: 'Create a new profile (alias: create)',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name (claude/opencode)',\n required: false,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n },\n async run({ args }) {\n await addCommand(args.agent, args.name);\n },\n});\n","const BOOTSTRAP_BEGIN = '### agentprofiles:begin';\nconst BOOTSTRAP_END = '### agentprofiles:end';\nconst HEADER = '# tool-generated; do not edit';\n\nexport const MANAGED_ENVRC_FILENAME = '.envrc.agentprofiles';\nexport const LEGACY_MANAGED_ENVRC_FILENAME = '.envrc.agent';\n\nfunction escapeRegExp(value: string) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction ensureEndsWithNewline(content: string) {\n return content.endsWith('\\n') ? content : `${content}\\n`;\n}\n\nexport function ensureBootstrapBlock(content: string) {\n const block = `${BOOTSTRAP_BEGIN}\n\twatch_file ${MANAGED_ENVRC_FILENAME}\n\tsource_env_if_exists ${MANAGED_ENVRC_FILENAME}\n${BOOTSTRAP_END}`;\n const blockRegex = new RegExp(\n `${escapeRegExp(BOOTSTRAP_BEGIN)}[\\\\s\\\\S]*?${escapeRegExp(BOOTSTRAP_END)}`\n );\n\n if (blockRegex.test(content)) {\n return ensureEndsWithNewline(content.replace(blockRegex, block));\n }\n\n const prefix = content.length && !content.endsWith('\\n') ? `${content}\\n` : content;\n return ensureEndsWithNewline(`${prefix}${block}`);\n}\n\nfunction normalizeHeader(content: string) {\n const trimmedStart = content.trimStart();\n const next = trimmedStart.startsWith(HEADER)\n ? trimmedStart\n : `${HEADER}\\n${trimmedStart ? `\\n${trimmedStart}` : ''}`;\n return ensureEndsWithNewline(next);\n}\n\nexport function updateAgentBlock(\n content: string,\n agent: string,\n envVar: string,\n profilePath: string\n) {\n const begin = `### agentprofiles:begin ${agent}`;\n const end = `### agentprofiles:end ${agent}`;\n const block = `${begin}\nexport ${envVar}=\"${profilePath}\"\n${end}`;\n const blockRegex = new RegExp(`${escapeRegExp(begin)}[\\\\s\\\\S]*?${escapeRegExp(end)}`);\n let next = content;\n\n if (blockRegex.test(next)) {\n next = next.replace(blockRegex, block);\n } else {\n const prefix = next.length && !next.endsWith('\\n') ? `${next}\\n` : next;\n next = `${prefix}${block}\\n`;\n }\n\n return normalizeHeader(next);\n}\n\nexport function removeAgentBlock(content: string, agent: string) {\n const begin = `### agentprofiles:begin ${agent}`;\n const end = `### agentprofiles:end ${agent}`;\n const blockRegex = new RegExp(`${escapeRegExp(begin)}[\\\\s\\\\S]*?${escapeRegExp(end)}\\\\n?`, 'g');\n let next = content.replace(blockRegex, '');\n next = next.replace(/\\n{3,}/g, '\\n\\n').trim();\n return normalizeHeader(next);\n}\n\nexport function getActiveProfile(content: string, agent: string): string | null {\n const begin = `### agentprofiles:begin ${agent}`;\n const end = `### agentprofiles:end ${agent}`;\n const blockRegex = new RegExp(`${escapeRegExp(begin)}[\\\\s\\\\S]*?${escapeRegExp(end)}`);\n const match = content.match(blockRegex);\n if (!match) return null;\n\n const exportMatch = match[0].match(/export\\s+\\w+=\"([^\"]+)\"/);\n if (!exportMatch || !exportMatch[1]) return null;\n\n const profilePath = exportMatch[1];\n const parts = profilePath.replace('$HOME', '').split('/');\n return parts[parts.length - 1] ?? null;\n}\n\nexport function hasAnyAgentBlocks(content: string): boolean {\n const agentBlockRegex = /### agentprofiles:begin \\w+[\\s\\S]*?### agentprofiles:end \\w+/;\n return agentBlockRegex.test(content);\n}\n\nexport function removeBootstrapBlock(content: string): string {\n const blockRegex = new RegExp(\n `${escapeRegExp(BOOTSTRAP_BEGIN)}[\\\\s\\\\S]*?${escapeRegExp(BOOTSTRAP_END)}\\\\n?`\n );\n let next = content.replace(blockRegex, '');\n next = next.replace(/\\n{3,}/g, '\\n\\n').trim();\n return next;\n}\n\nexport function isEffectivelyEmpty(content: string): boolean {\n const stripped = content\n .split('\\n')\n .filter((line) => {\n const trimmed = line.trim();\n return trimmed.length > 0 && !trimmed.startsWith('#');\n })\n .join('');\n return stripped.length === 0;\n}\n","import path from 'node:path';\n\nexport function isDirenvHookLoaded(env: NodeJS.ProcessEnv) {\n return Boolean(env.DIRENV_DIR || env.DIRENV_FILE || env.DIRENV_WATCHES);\n}\n\nexport function getDirenvHookHint(shellPath?: string | null) {\n const shellName = shellPath ? path.basename(shellPath) : '';\n switch (shellName) {\n case 'bash':\n case 'zsh':\n return `eval \"$(direnv hook ${shellName})\"`;\n case 'fish':\n return 'direnv hook fish | source';\n case 'tcsh':\n return 'eval `direnv hook tcsh`';\n case 'elvish':\n return 'eval (direnv hook elvish)';\n default:\n return 'direnv hook <your-shell>';\n }\n}\n","import { defineCommand } from 'citty';\nimport { outro, select, text, isCancel, cancel, note } from '@clack/prompts';\nimport { ConfigManager } from '../lib/config.js';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport {\n ensureBootstrapBlock,\n updateAgentBlock,\n MANAGED_ENVRC_FILENAME,\n LEGACY_MANAGED_ENVRC_FILENAME,\n} from '../lib/envrc.js';\nimport { validateProfileName, slugify } from '../lib/validation.js';\nimport { spawn } from 'node:child_process';\nimport { getDirenvHookHint, isDirenvHookLoaded } from '../lib/direnv.js';\nimport { generateName } from '@criblinc/docker-names';\nimport { promptForAgent } from '../lib/prompts.js';\n\ntype SetOptions = {\n allow?: boolean;\n};\n\nfunction toShellPath(absolutePath: string): string {\n const home = os.homedir();\n if (absolutePath.startsWith(home)) {\n return absolutePath.replace(home, '$HOME');\n }\n return absolutePath;\n}\n\nfunction runDirenvAllow() {\n return new Promise<void>((resolve, reject) => {\n const child = spawn('direnv', ['allow'], { stdio: 'inherit' });\n child.on('error', reject);\n child.on('exit', (code) => {\n if (code === 0) return resolve();\n reject(new Error(`direnv allow failed with exit code ${code ?? 'unknown'}`));\n });\n });\n}\n\nasync function resolveManagedEnvrcPath(cwd: string) {\n const nextPath = path.join(cwd, MANAGED_ENVRC_FILENAME);\n const legacyPath = path.join(cwd, LEGACY_MANAGED_ENVRC_FILENAME);\n\n try {\n await fs.access(nextPath);\n return nextPath;\n } catch {\n // Continue\n }\n\n try {\n await fs.access(legacyPath);\n try {\n await fs.rename(legacyPath, nextPath);\n } catch {\n try {\n const legacyContent = await fs.readFile(legacyPath, 'utf-8');\n await fs.writeFile(nextPath, legacyContent);\n await fs.unlink(legacyPath);\n } catch {\n // If migration fails, we'll fall back to an empty file.\n }\n }\n } catch {\n // No legacy file\n }\n\n return nextPath;\n}\n\nexport async function setCommand(agent?: string, name?: string | SetOptions, options?: SetOptions) {\n const resolvedAgent: string = agent ?? (await promptForAgent('Select agent to set profile for:'));\n let resolvedName: string | undefined = typeof name === 'string' ? name : undefined;\n const resolvedOptions = typeof name === 'object' ? name : options;\n\n if (!SUPPORTED_TOOLS[resolvedAgent]) {\n console.error(color.red(`Unsupported agent: ${resolvedAgent}`));\n process.exit(1);\n }\n\n const config = new ConfigManager();\n await config.init();\n\n if (!resolvedName) {\n const profiles = await config.getProfiles(resolvedAgent);\n if (profiles.length === 0) {\n note(`No profiles found for ${resolvedAgent}. Let's create one.`, 'New Profile');\n\n const suggestedName = generateName();\n const nameResponse = await text({\n message: 'Enter a name for this profile:',\n placeholder: suggestedName,\n initialValue: suggestedName,\n validate(value) {\n return validateProfileName(value) || undefined;\n },\n });\n\n if (isCancel(nameResponse)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const newName = nameResponse as string;\n await config.createProfile(resolvedAgent, newName);\n note(`Created profile ${color.cyan(newName)}`, 'Profile Created');\n resolvedName = slugify(newName);\n } else {\n const response = await select({\n message: 'Select a profile to activate:',\n options: profiles.map((p) => ({\n value: p.slug,\n label: p.name,\n hint: p.description,\n })),\n });\n\n if (isCancel(response)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n resolvedName = response as string;\n }\n } else {\n const validationError = validateProfileName(resolvedName);\n if (validationError) {\n console.error(color.red(validationError));\n process.exit(1);\n }\n resolvedName = slugify(resolvedName);\n }\n if (!resolvedName) {\n console.error(color.red('Profile name is required.'));\n process.exit(1);\n }\n\n const cwd = process.cwd();\n const envrcPath = path.join(cwd, '.envrc');\n const managedEnvrcPath = await resolveManagedEnvrcPath(cwd);\n const profileDir = path.join(config.getContentDir(), resolvedAgent, resolvedName);\n\n try {\n await fs.access(profileDir);\n } catch {\n console.error(color.red(`Profile '${resolvedName}' not found for agent '${resolvedAgent}'`));\n process.exit(1);\n }\n\n let envrcContent = '';\n try {\n envrcContent = await fs.readFile(envrcPath, 'utf-8');\n } catch {\n envrcContent = '';\n }\n\n const nextEnvrc = ensureBootstrapBlock(envrcContent);\n await fs.writeFile(envrcPath, nextEnvrc);\n\n let managedContent = '';\n try {\n managedContent = await fs.readFile(managedEnvrcPath, 'utf-8');\n } catch {\n managedContent = '';\n }\n\n const envVar = SUPPORTED_TOOLS[resolvedAgent].envVar;\n const profilePath = toShellPath(profileDir);\n const nextManaged = updateAgentBlock(managedContent, resolvedAgent, envVar, profilePath);\n await fs.writeFile(managedEnvrcPath, nextManaged);\n\n if (resolvedOptions?.allow) {\n try {\n await runDirenvAllow();\n outro(`Activated ${color.cyan(resolvedName)} profile for ${resolvedAgent} (direnv allowed).`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(color.red(message));\n process.exit(1);\n }\n } else {\n outro(`Activated ${color.cyan(resolvedName)} profile for ${resolvedAgent}.`);\n console.log(color.dim(\"Run 'direnv allow' to apply changes.\"));\n }\n\n if (!isDirenvHookLoaded(process.env)) {\n const hint = getDirenvHookHint(process.env.SHELL);\n console.log(color.yellow('direnv hook not detected in this shell.'));\n console.log(color.dim(`Add this to your shell rc and restart: ${hint}`));\n }\n}\n\nexport default defineCommand({\n meta: {\n name: 'set',\n description: 'Set the active profile for the current directory',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name',\n required: false,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n allow: {\n type: 'boolean',\n alias: 'y',\n description: 'Run direnv allow after updating files',\n },\n },\n async run({ args }) {\n await setCommand(args.agent, args.name, { allow: args.allow });\n },\n});\n","import { defineCommand } from 'citty';\nimport { outro } from '@clack/prompts';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n removeAgentBlock,\n removeBootstrapBlock,\n hasAnyAgentBlocks,\n isEffectivelyEmpty,\n MANAGED_ENVRC_FILENAME,\n LEGACY_MANAGED_ENVRC_FILENAME,\n} from '../lib/envrc.js';\nimport { spawn } from 'node:child_process';\nimport { promptForAgent } from '../lib/prompts.js';\n\ntype UnsetOptions = {\n allow?: boolean;\n};\n\nfunction runDirenvAllow() {\n return new Promise<void>((resolve, reject) => {\n const child = spawn('direnv', ['allow'], { stdio: 'inherit' });\n child.on('error', reject);\n child.on('exit', (code) => {\n if (code === 0) return resolve();\n reject(new Error(`direnv allow failed with exit code ${code ?? 'unknown'}`));\n });\n });\n}\n\nasync function resolveManagedEnvrcPath(cwd: string) {\n const nextPath = path.join(cwd, MANAGED_ENVRC_FILENAME);\n const legacyPath = path.join(cwd, LEGACY_MANAGED_ENVRC_FILENAME);\n\n try {\n await fs.access(nextPath);\n return nextPath;\n } catch {\n // Continue\n }\n\n try {\n await fs.access(legacyPath);\n try {\n await fs.rename(legacyPath, nextPath);\n } catch {\n try {\n const legacyContent = await fs.readFile(legacyPath, 'utf-8');\n await fs.writeFile(nextPath, legacyContent);\n await fs.unlink(legacyPath);\n } catch {\n // If migration fails, we'll fall back to an empty file.\n }\n }\n } catch {\n // No legacy file\n }\n\n return nextPath;\n}\n\nexport async function unsetCommand(agent?: string, options?: UnsetOptions) {\n const resolvedAgent: string = agent ?? (await promptForAgent('Select agent to unset:'));\n\n if (!SUPPORTED_TOOLS[resolvedAgent]) {\n console.error(color.red(`Unsupported agent: ${resolvedAgent}`));\n process.exit(1);\n }\n\n const cwd = process.cwd();\n const envrcPath = path.join(cwd, '.envrc');\n const managedEnvrcPath = await resolveManagedEnvrcPath(cwd);\n\n let managedContent = '';\n try {\n managedContent = await fs.readFile(managedEnvrcPath, 'utf-8');\n } catch {\n managedContent = '';\n }\n\n const nextManaged = removeAgentBlock(managedContent, resolvedAgent);\n\n if (!hasAnyAgentBlocks(nextManaged)) {\n try {\n await fs.unlink(managedEnvrcPath);\n } catch {\n // File may not exist\n }\n\n try {\n const envrcContent = await fs.readFile(envrcPath, 'utf-8');\n const withoutBootstrap = removeBootstrapBlock(envrcContent);\n\n if (isEffectivelyEmpty(withoutBootstrap)) {\n await fs.unlink(envrcPath);\n } else {\n await fs.writeFile(envrcPath, withoutBootstrap + '\\n');\n }\n } catch {\n // No .envrc to update\n }\n } else {\n await fs.writeFile(managedEnvrcPath, nextManaged);\n }\n\n if (options?.allow) {\n try {\n await runDirenvAllow();\n outro(`Unset ${resolvedAgent} profile (direnv allowed).`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(color.red(message));\n process.exit(1);\n }\n } else {\n outro(`Unset ${resolvedAgent} profile.`);\n console.log(color.dim(\"Run 'direnv allow' to apply changes.\"));\n }\n}\n\nexport default defineCommand({\n meta: {\n name: 'unset',\n description: 'Unset the active profile for the current directory',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name',\n required: false,\n },\n allow: {\n type: 'boolean',\n alias: 'y',\n description: 'Run direnv allow after updating files',\n },\n },\n async run({ args }) {\n await unsetCommand(args.agent, { allow: args.allow });\n },\n});\n","import { defineCommand } from 'citty';\nimport { outro, note } from '@clack/prompts';\nimport { ConfigManager } from '../lib/config.js';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\nimport { spawn } from 'node:child_process';\nimport path from 'node:path';\nimport { promptForAgent, promptForProfile } from '../lib/prompts.js';\n\nexport async function editCommand(agent?: string, name?: string) {\n const resolvedAgent: string = agent ?? (await promptForAgent('Select agent:'));\n\n if (!SUPPORTED_TOOLS[resolvedAgent]) {\n console.error(color.red(`Unsupported agent: ${resolvedAgent}`));\n process.exit(1);\n }\n\n const config = new ConfigManager();\n await config.init();\n\n let resolvedName: string;\n if (name) {\n resolvedName = name;\n } else {\n const selected = await promptForProfile(config, resolvedAgent, 'Select profile to edit:');\n if (!selected) {\n note(\n `No profiles found for ${resolvedAgent}. Create one first with: agentprofiles add ${resolvedAgent}`,\n 'No Profiles'\n );\n process.exit(0);\n }\n resolvedName = selected;\n }\n\n const profileDir = path.join(config.getContentDir(), resolvedAgent, resolvedName);\n\n const editor = process.env.EDITOR;\n if (editor) {\n const child = spawn(editor, [profileDir], { stdio: 'inherit' });\n child.on('exit', () => {\n outro('Editor closed');\n });\n return;\n }\n\n const platform = process.platform;\n const openCommand = platform === 'darwin' ? 'open' : platform === 'linux' ? 'xdg-open' : null;\n\n if (!openCommand) {\n console.log(profileDir);\n return;\n }\n\n const child = spawn(openCommand, [profileDir], { stdio: 'inherit' });\n child.on('error', () => {\n console.log(profileDir);\n });\n}\n\nexport default defineCommand({\n meta: {\n name: 'edit',\n description: 'Edit a profile configuration',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name',\n required: false,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n },\n async run({ args }) {\n await editCommand(args.agent, args.name);\n },\n});\n","import { defineCommand } from 'citty';\nimport { outro, confirm, isCancel, cancel, note } from '@clack/prompts';\nimport { ConfigManager } from '../lib/config.js';\nimport { SUPPORTED_TOOLS } from '../types/index.js';\nimport color from 'picocolors';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { promptForAgent, promptForProfile } from '../lib/prompts.js';\nimport {\n MANAGED_ENVRC_FILENAME,\n getActiveProfile,\n removeAgentBlock,\n hasAnyAgentBlocks,\n removeBootstrapBlock,\n isEffectivelyEmpty,\n} from '../lib/envrc.js';\n\nexport async function removeCommand(agent?: string, name?: string) {\n const resolvedAgent: string = agent ?? (await promptForAgent('Select agent:'));\n\n if (!SUPPORTED_TOOLS[resolvedAgent]) {\n console.error(color.red(`Unsupported agent: ${resolvedAgent}`));\n process.exit(1);\n }\n\n const config = new ConfigManager();\n await config.init();\n const profiles = await config.getProfiles(resolvedAgent);\n\n if (profiles.length === 0) {\n note(`No profiles found for ${resolvedAgent}. Nothing to remove.`, 'No Profiles');\n process.exit(0);\n }\n\n let resolvedName: string;\n if (name) {\n resolvedName = name;\n } else {\n const selected = await promptForProfile(config, resolvedAgent, 'Select a profile to remove:');\n if (!selected) {\n note(`No profiles found for ${resolvedAgent}.`, 'No Profiles');\n process.exit(0);\n }\n resolvedName = selected;\n }\n\n const profileDir = path.join(config.getContentDir(), resolvedAgent, resolvedName);\n try {\n await fs.access(profileDir);\n } catch {\n console.error(color.red(`Profile '${resolvedName}' not found for agent '${resolvedAgent}'`));\n process.exit(1);\n }\n\n const shouldDelete = await confirm({\n message: `Are you sure you want to delete the profile ${color.cyan(resolvedName)}? This cannot be undone.`,\n initialValue: false,\n });\n\n if (isCancel(shouldDelete) || !shouldDelete) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const cwd = process.cwd();\n const envrcPath = path.join(cwd, '.envrc');\n const managedEnvrcPath = path.join(cwd, MANAGED_ENVRC_FILENAME);\n try {\n const managedContent = await fs.readFile(managedEnvrcPath, 'utf-8');\n const activeProfile = getActiveProfile(managedContent, resolvedAgent);\n if (activeProfile === resolvedName) {\n const nextManaged = removeAgentBlock(managedContent, resolvedAgent);\n\n if (!hasAnyAgentBlocks(nextManaged)) {\n await fs.unlink(managedEnvrcPath);\n\n try {\n const envrcContent = await fs.readFile(envrcPath, 'utf-8');\n const withoutBootstrap = removeBootstrapBlock(envrcContent);\n\n if (isEffectivelyEmpty(withoutBootstrap)) {\n await fs.unlink(envrcPath);\n } else {\n await fs.writeFile(envrcPath, withoutBootstrap + '\\n');\n }\n } catch {\n // No .envrc to update\n }\n } else {\n await fs.writeFile(managedEnvrcPath, nextManaged);\n }\n\n note(\n `Profile was active in this directory. Unset automatically.\\nRun 'direnv allow' to apply changes.`,\n 'Auto-unset'\n );\n }\n } catch {\n // No managed envrc file in current directory, nothing to unset\n }\n\n await fs.rm(profileDir, { recursive: true, force: true });\n\n outro(`Deleted profile ${color.cyan(resolvedName)} for ${resolvedAgent}.`);\n}\n\nexport default defineCommand({\n meta: {\n name: 'remove',\n description: 'Remove a profile (alias: rm)',\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name (claude/opencode)',\n required: false,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n },\n async run({ args }) {\n await removeCommand(args.agent, args.name);\n },\n});\n","import { select, isCancel, cancel } from '@clack/prompts';\n\ntype MenuAction = 'list' | 'add' | 'set' | 'unset' | 'edit' | 'remove';\n\nconst menuOptions: Array<{ value: MenuAction; label: string; hint: string }> = [\n { value: 'list', label: 'List profiles', hint: 'Show all profiles' },\n { value: 'add', label: 'Add profile', hint: 'Create a new profile' },\n { value: 'set', label: 'Set profile', hint: 'Activate a profile for this directory' },\n { value: 'unset', label: 'Unset profile', hint: 'Deactivate a profile for this directory' },\n { value: 'edit', label: 'Edit profile', hint: 'Open a profile in your editor' },\n { value: 'remove', label: 'Remove profile', hint: 'Delete a profile' },\n];\n\nexport async function showMainMenu(): Promise<void> {\n const response = await select({\n message: 'What would you like to do?',\n options: menuOptions,\n });\n\n if (isCancel(response)) {\n cancel('Goodbye!');\n process.exit(0);\n }\n\n const action = response as MenuAction;\n\n switch (action) {\n case 'list': {\n const { listCommand } = await import('../commands/list.js');\n await listCommand();\n break;\n }\n case 'add': {\n const { addCommand } = await import('../commands/add.js');\n await addCommand();\n break;\n }\n case 'set': {\n const { setCommand } = await import('../commands/set.js');\n await setCommand();\n break;\n }\n case 'unset': {\n const { unsetCommand } = await import('../commands/unset.js');\n await unsetCommand();\n break;\n }\n case 'edit': {\n const { editCommand } = await import('../commands/edit.js');\n await editCommand();\n break;\n }\n case 'remove': {\n const { removeCommand } = await import('../commands/remove.js');\n await removeCommand();\n break;\n }\n }\n}\n","import { defineCommand } from 'citty';\nimport { runOnboarding } from '../lib/onboarding.js';\n\nexport async function setupCommand(): Promise<void> {\n await runOnboarding({ isRerun: true });\n}\n\nexport default defineCommand({\n meta: {\n name: 'setup',\n description: 'Initialize the agentprofiles system (alias: init)',\n },\n async run() {\n await setupCommand();\n },\n});\n","import { defineCommand } from 'citty';\nimport { setupCommand } from './setup.js';\n\nexport default defineCommand({\n meta: {\n name: 'init',\n hidden: true,\n },\n async run() {\n await setupCommand();\n },\n});\n","import { defineCommand } from 'citty';\nimport { addCommand } from './add.js';\n\nexport default defineCommand({\n meta: {\n name: 'create',\n description: 'Create a new profile (alias for add)',\n hidden: true,\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name (claude/opencode)',\n required: false,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n },\n async run({ args }) {\n await addCommand(args.agent, args.name);\n },\n});\n","import { defineCommand } from 'citty';\nimport { removeCommand } from './remove.js';\n\nexport default defineCommand({\n meta: {\n name: 'rm',\n hidden: true,\n },\n args: {\n agent: {\n type: 'positional',\n description: 'Agent name (claude/opencode)',\n required: true,\n },\n name: {\n type: 'positional',\n description: 'Profile name',\n required: false,\n },\n },\n async run({ args }) {\n await removeCommand(args.agent, args.name);\n },\n});\n","import { defineCommand, runMain } from 'citty';\nimport { createRequire } from 'node:module';\nimport { renderBanner, renderInfo } from './lib/banner.js';\nimport { checkForUpdates } from './lib/update.js';\n\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json');\n\nconst isQuiet = process.argv.includes('--quiet') || process.argv.includes('-q');\n\nif (!isQuiet) {\n renderBanner();\n renderInfo(pkg);\n}\n\ncheckForUpdates(pkg).catch(() => {});\n\nconst knownSubcommands = [\n 'setup',\n 'init',\n 'list',\n 'add',\n 'create',\n 'edit',\n 'remove',\n 'rm',\n 'set',\n 'unset',\n];\n\nconst args = process.argv.slice(2);\nconst hasSubcommand = args.some(\n (arg) => knownSubcommands.includes(arg) || arg === '--help' || arg === '-h'\n);\nconst isHelpOrVersion = args.some(\n (arg) => arg === '--help' || arg === '-h' || arg === '--version' || arg === '-V'\n);\nconst isInitCommand = args.some((arg) => arg === 'init' || arg === 'setup');\n\nif (!isInitCommand && !isHelpOrVersion) {\n const { ensureInitialized } = await import('./lib/onboarding.js');\n await ensureInitialized();\n}\n\nif (!hasSubcommand && !isHelpOrVersion) {\n const { showMainMenu } = await import('./lib/main-menu.js');\n await showMainMenu();\n} else {\n const main = defineCommand({\n meta: {\n name: 'agentprofiles',\n version: pkg.version,\n description: pkg.description,\n },\n subCommands: {\n setup: () => import('./commands/setup.js').then((m) => m.default),\n init: () => import('./commands/init.js').then((m) => m.default),\n list: () => import('./commands/list.js').then((m) => m.default),\n add: () => import('./commands/add.js').then((m) => m.default),\n create: () => import('./commands/create.js').then((m) => m.default),\n edit: () => import('./commands/edit.js').then((m) => m.default),\n remove: () => import('./commands/remove.js').then((m) => m.default),\n rm: () => import('./commands/rm.js').then((m) => m.default),\n set: () => import('./commands/set.js').then((m) => m.default),\n unset: () => import('./commands/unset.js').then((m) => m.default),\n },\n });\n\n runMain(main);\n}\n","import color from 'picocolors';\n\ndeclare const __DEV__: boolean;\ndeclare const __BUILD_TIME__: string;\ndeclare const __GIT_SHA__: string;\nconst isDev = typeof __DEV__ !== 'undefined' ? __DEV__ : true;\nconst buildTime = typeof __BUILD_TIME__ !== 'undefined' ? __BUILD_TIME__ : '';\nconst gitSha = typeof __GIT_SHA__ !== 'undefined' ? __GIT_SHA__ : '';\n\n// Pre-generated banner (cfonts tiny/candy)\nconst BANNER =\n '\\n\\u001b[94m \\u001b[39m\\u001b[91m▄▀█\\u001b[39m\\u001b[31m \\u001b[39m\\u001b[91m█▀▀\\u001b[39m\\u001b[36m \\u001b[39m\\u001b[35m█▀▀\\u001b[39m\\u001b[36m \\u001b[39m\\u001b[91m█▄ █\\u001b[39m\\u001b[36m \\u001b[39m\\u001b[31m▀█▀\\u001b[39m\\u001b[33m \\u001b[39m\\u001b[32m█▀█\\u001b[39m\\u001b[95m \\u001b[39m\\u001b[94m█▀█\\u001b[39m\\u001b[33m \\u001b[39m\\u001b[31m█▀█\\u001b[39m\\u001b[95m \\u001b[39m\\u001b[36m█▀▀\\u001b[39m\\u001b[91m \\u001b[39m\\u001b[31m█\\u001b[39m\\u001b[91m \\u001b[39m\\u001b[36m█ \\u001b[39m\\u001b[35m \\u001b[39m\\u001b[96m█▀▀\\u001b[39m\\n\\u001b[31m \\u001b[39m\\u001b[94m█▀█\\u001b[39m\\u001b[95m \\u001b[39m\\u001b[93m█▄█\\u001b[39m\\u001b[32m \\u001b[39m\\u001b[36m██▄\\u001b[39m\\u001b[94m \\u001b[39m\\u001b[32m█ ▀█\\u001b[39m\\u001b[95m \\u001b[39m\\u001b[92m █ \\u001b[39m\\u001b[31m \\u001b[39m\\u001b[93m█▀▀\\u001b[39m\\u001b[94m \\u001b[39m\\u001b[33m█▀▄\\u001b[39m\\u001b[33m \\u001b[39m\\u001b[31m█▄█\\u001b[39m\\u001b[92m \\u001b[39m\\u001b[36m█▀ \\u001b[39m\\u001b[93m \\u001b[39m\\u001b[31m█\\u001b[39m\\u001b[93m \\u001b[39m\\u001b[94m█▄▄\\u001b[39m\\u001b[94m \\u001b[39m\\u001b[92m██▄\\u001b[39m\\n';\n\nexport function renderBanner(): void {\n console.log(BANNER);\n}\n\nexport function renderInfo(pkg: { name: string; version: string; description?: string }): void {\n const devMetaParts: string[] = [];\n if (gitSha) devMetaParts.push(gitSha);\n if (buildTime) devMetaParts.push(`@ ${buildTime}`);\n const devLabel = devMetaParts.length > 0 ? `dev ${devMetaParts.join(' ')}` : 'dev';\n const devTag = isDev ? color.yellow(` (${devLabel})`) : '';\n const info = `${color.dim(pkg.name)} ${color.cyan(`v${pkg.version}`)}${devTag}`;\n const desc = pkg.description ? color.dim(` — ${pkg.description}`) : '';\n console.log(`${info}${desc}\\n`);\n}\n","import { execSync } from 'node:child_process';\nimport fs from 'node:fs';\n\ntype PackageManager = 'npm' | 'pnpm' | 'yarn' | 'volta' | 'unknown';\n\ninterface DetectionResult {\n manager: PackageManager;\n updateCommand: string;\n}\n\nfunction getInstallLocation(binName: string): string | null {\n try {\n const whichResult = execSync(`which ${binName}`, { encoding: 'utf-8' }).trim();\n return fs.realpathSync(whichResult);\n } catch {\n return null;\n }\n}\n\nfunction detectPackageManager(installPath: string | null, pkgName: string): DetectionResult {\n if (!installPath) {\n return { manager: 'unknown', updateCommand: `npm i -g ${pkgName}` };\n }\n\n const path = installPath.toLowerCase();\n\n if (path.includes('pnpm/global') || path.includes('.local/share/pnpm')) {\n return { manager: 'pnpm', updateCommand: `pnpm add -g ${pkgName}` };\n }\n\n if (path.includes('yarn/global') || path.includes('.yarn')) {\n return { manager: 'yarn', updateCommand: `yarn global add ${pkgName}` };\n }\n\n if (path.includes('.volta/')) {\n return { manager: 'volta', updateCommand: `volta install ${pkgName}` };\n }\n\n return { manager: 'npm', updateCommand: `npm i -g ${pkgName}` };\n}\n\nexport async function checkForUpdates(pkg: { name: string; version: string }): Promise<void> {\n const { default: updateNotifier } = await import('update-notifier');\n\n const installPath = getInstallLocation('agentprofiles');\n const { updateCommand } = detectPackageManager(installPath, pkg.name);\n\n const notifier = updateNotifier({\n pkg,\n updateCheckInterval: 1000 * 60 * 60 * 24,\n });\n\n notifier.notify({\n message: `Update available {currentVersion} → {latestVersion}\\nRun ${updateCommand} to update`,\n defer: true,\n });\n}\n"],"mappings":"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MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,Q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CA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,YAAQ,QAAQ;AAAA;AAAA,MAEZ;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA;AAAA;AAAA,MAIA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MA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","names":["p","l","args","o","r","p","x","y","ansiRegex","onlyFirst","pattern","stripAnsi","string","regex","e","stringWidth","options","emojiRegex","ambiguousCharacterWidth","width","character","codePoint","eastAsianWidth","assembleStyles","codes","groupName","group","styles","styleName","style","wrapAnsi16","wrapAnsi256","wrapAnsi16m","ANSI_BACKGROUND_OFFSET","red","green","blue","hex","matches","colorString","integer","code","remainder","value","result","wrapAnsi","columns","line","exec","isActionKey","key","action","settings","diffLines","a","b","aLines","bLines","diff","i","isCancel","CANCEL_SYMBOL","setRawMode","input","block","stdin","output","stdout","overwrite","hideCursor","rl","readline","clear","data","name","sequence","str","cursor","dx","dy","isWindows","foregroundColorNames","backgroundColorNames","ansiStyles","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","wordLengths","wrapWord","stringVisibleTrimSpacesRight","actions","v","s","Prompt","ConfirmPrompt","_selectableGroups","SelectPrompt","TextPrompt","eaw","module","x","y","stringToArray","characters","len","text","start","end","eawLen","chars","char","charLen","offset","uri","rows","word","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","words","last","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","pre","groups","t","trackValue","__publicField","render","signal","opts","event","params","cb","cbs","cleanup","subscriber","resolve","reject","sink","Writable","chunk","encoding","done","problem","lines","wrap","frame","diffLine","erase","newLines","confirm","u","s1","s2","s3","color","isUnicodeSupported","process","unicode","s","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","limitOptions","text","confirm","select","note","cancel","intro","outro","log","prefix","spinner","c","fallback","state","color","params","cursor","options","style","paramMaxItems","outputMaxItems","maxItems","slidingWindowLocation","shouldRenderTopEllipsis","shouldRenderBottomEllipsis","option","i","arr","isTopLimit","isBottomLimit","opts","TextPrompt","title","placeholder","value","active","inactive","ConfirmPrompt","opt","label","SelectPrompt","item","message","lines","titleLen","strip","len","sum","ln","line","msg","parts","firstLine","indicator","frames","delay","isCI","unblock","loop","isSpinnerActive","_message","_prevMessage","_origin","handleExit","code","stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","erase","parseMessage","formatTimer","origin","duration","min","secs","start","block","frameIndex","indicatorTimer","frame","loadingDots","step","fs","path","color","M","Y","import_picocolors","init_dist","fs","path","os","getXdgConfigHome","getDefaultConfigDir","color","p","import_picocolors","args","generateName","p","init_dist","color","path","import_picocolors","init_dist","args","path","fs","os","path","color","p","import_picocolors","import_docker_names","init_dist","args","fs","path","spawn","runDirenvAllow","resolveManagedEnvrcPath","color","import_picocolors","init_dist","args","spawn","path","color","child","import_picocolors","init_dist","args","fs","path","color","import_picocolors","init_dist","args","listCommand","addCommand","setCommand","unsetCommand","editCommand","removeCommand","init_dist","args","args","pkg","color","path","pkg","require","ensureInitialized","showMainMenu","m"]}