{"version":3,"sources":["../node_modules/.pnpm/tsup@8.5.1_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","../src/cli.ts","../src/utils/branding.ts","../src/commands/init.ts","../src/utils/fs.ts","../src/utils/templates.ts","../src/utils/constants.ts","../src/utils/copilot.ts","../src/commands/add.ts","../src/utils/target.ts","../src/commands/pull.ts","../src/commands/list.ts","../src/commands/remove.ts","../src/commands/instance.ts","../src/utils/alias.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n  typeof document === \"undefined\" \n    ? new URL(`file:${__filename}`).href \n    : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n      ? document.currentScript.src \n      : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { defineCommand, runMain } from \"citty\";\nimport { createRequire } from \"node:module\";\nimport { printBanner, printVersion } from \"./utils/branding\";\nimport { initCommand } from \"./commands/init\";\nimport { addCommand } from \"./commands/add\";\nimport { pullCommand } from \"./commands/pull\";\nimport { listCommand } from \"./commands/list\";\nimport { removeCommand } from \"./commands/remove\";\nimport { instanceCommand } from \"./commands/instance\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\") as { version: string };\n\nconst main = defineCommand({\n  meta: {\n    name: \"cursor-kit\",\n    version: pkg.version,\n    description: \"CLI toolkit to manage Cursor IDE rules and commands\",\n  },\n  setup() {\n    printBanner();\n    printVersion(pkg.version);\n  },\n  subCommands: {\n    init: initCommand,\n    add: addCommand,\n    pull: pullCommand,\n    list: listCommand,\n    remove: removeCommand,\n    instance: instanceCommand,\n  },\n});\n\nrunMain(main);\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n  const banner = figlet.textSync(\"Cursor Kit\", {\n    font: \"ANSI Shadow\",\n    horizontalLayout: \"fitted\",\n  });\n\n  console.log(cursorGradient.multiline(banner));\n  console.log();\n  console.log(\n    pc.dim(\"  \") +\n      pc.bold(pc.cyan(\"✦\")) +\n      pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n  );\n  console.log();\n}\n\nexport function printSuccess(message: string): void {\n  console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n  console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n  console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n  console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n  console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n  console.log(\n    pc.dim(\"  \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n  );\n  console.log();\n}\n\nexport function highlight(text: string): string {\n  return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n  return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n  return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n  return cursorGradient(text);\n}\n\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { join } from \"node:path\";\nimport {\n  ensureDir,\n  getCursorDir,\n  getCommandsDir,\n  getRulesDir,\n  getSkillsDir,\n  getConflictingFiles,\n  getConflictingDirs,\n  writeFile,\n  getAgentDir,\n  getAgentRulesDir,\n  getAgentWorkflowsDir,\n  getAgentSkillsDir,\n} from \"../utils/fs\";\nimport { highlight, printDivider, printSuccess } from \"../utils/branding\";\nimport {\n  fetchTemplateManifest,\n  fetchMultipleTemplates,\n  getTemplateLabel,\n  getSkillLabel,\n  copyLocalSkill,\n  convertMdToMdc,\n  transformTocContentForCursor,\n  transformRuleForAntiGravity,\n  transformCommandToWorkflow,\n  copyLocalSkillForAntiGravity,\n  type TemplateManifest,\n  type TemplateType,\n} from \"../utils/templates\";\nimport { type InstructionTarget } from \"../types/init\";\nimport {\n  checkCopilotConflicts,\n  installCopilotInstructions,\n} from \"../utils/copilot\";\n\ntype ConflictStrategy = \"overwrite\" | \"merge\" | \"cancel\";\n\ninterface InitResult {\n  added: string[];\n  skipped: string[];\n}\n\nasync function promptTargetSelection(): Promise<InstructionTarget | symbol> {\n  return await p.select({\n    message: \"Which AI IDE are you using?\",\n    options: [\n      {\n        value: \"cursor\" as const,\n        label: \"Cursor\",\n        hint: \"Generate .cursor/ directory structure\",\n      },\n      {\n        value: \"github-copilot\" as const,\n        label: \"GitHub Copilot\",\n        hint: \"Generate .github/copilot-instructions.md\",\n      },\n      {\n        value: \"google-antigravity\" as const,\n        label: \"Google AntiGravity\",\n        hint: \"Generate .agent/ directory with rules and workflows\",\n      },\n    ],\n    initialValue: \"cursor\",\n  });\n}\n\nasync function handleCopilotInstallation(\n  cwd: string,\n  manifest: TemplateManifest,\n  args: {\n    all?: boolean;\n    commands?: boolean;\n    rules?: boolean;\n    skills?: boolean;\n    force?: boolean;\n  },\n  shouldInitCommands: boolean,\n  shouldInitRules: boolean,\n  shouldInitSkills: boolean\n): Promise<void> {\n  const s = p.spinner();\n\n  const canProceed = await checkCopilotConflicts(cwd, args.force ?? false);\n  if (!canProceed) {\n    p.cancel(\"Operation cancelled\");\n    process.exit(0);\n  }\n\n  let selectedCommands: string[] = [];\n  let selectedRules: string[] = [];\n  let selectedSkills: string[] = [];\n\n  if (shouldInitCommands) {\n    if (args.all) {\n      selectedCommands = manifest.commands;\n    } else {\n      const selection = await selectTemplates(\"commands\", manifest.commands);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedCommands = selection;\n    }\n  }\n\n  if (shouldInitRules) {\n    if (args.all) {\n      selectedRules = manifest.rules;\n    } else {\n      const selection = await selectTemplates(\"rules\", manifest.rules);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedRules = selection;\n    }\n  }\n\n  if (shouldInitSkills) {\n    if (args.all) {\n      selectedSkills = manifest.skills;\n    } else {\n      const selection = await selectTemplates(\"skills\", manifest.skills);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedSkills = selection;\n    }\n  }\n\n  if (\n    selectedCommands.length === 0 &&\n    selectedRules.length === 0 &&\n    selectedSkills.length === 0\n  ) {\n    p.cancel(\"No templates selected\");\n    process.exit(0);\n  }\n\n  try {\n    s.start(\"Installing GitHub Copilot instructions...\");\n    const result = await installCopilotInstructions(\n      cwd,\n      selectedCommands,\n      selectedRules,\n      selectedSkills\n    );\n    s.stop(\"GitHub Copilot instructions installed\");\n\n    printDivider();\n    console.log();\n\n    if (result.commands.length > 0) {\n      printSuccess(`Commands: ${highlight(result.commands.length.toString())} added`);\n      for (const cmd of result.commands) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${cmd}`));\n      }\n    }\n\n    if (result.rules.length > 0) {\n      printSuccess(`Rules: ${highlight(result.rules.length.toString())} added`);\n      for (const rule of result.rules) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${rule}`));\n      }\n    }\n\n    if (result.skills.length > 0) {\n      printSuccess(`Skills: ${highlight(result.skills.length.toString())} added`);\n      for (const skill of result.skills) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${skill}`));\n      }\n    }\n\n    console.log();\n    p.outro(pc.green(\"✨ GitHub Copilot instructions created successfully!\"));\n  } catch (error) {\n    s.stop(\"Failed\");\n    p.cancel(\n      `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n    );\n    process.exit(1);\n  }\n}\n\nasync function handleAntiGravityInstallation(\n  cwd: string,\n  manifest: TemplateManifest,\n  args: {\n    all?: boolean;\n    commands?: boolean;\n    rules?: boolean;\n    skills?: boolean;\n    force?: boolean;\n  },\n  shouldInitCommands: boolean,\n  shouldInitRules: boolean,\n  shouldInitSkills: boolean\n): Promise<void> {\n  const s = p.spinner();\n  const agentDir = getAgentDir(cwd);\n  const rulesDir = getAgentRulesDir(cwd);\n  const workflowsDir = getAgentWorkflowsDir(cwd);\n  const skillsDir = getAgentSkillsDir(cwd);\n\n  // Check for existing conflicts\n  const existingRules = getConflictingFiles(rulesDir, manifest.rules);\n  const existingWorkflows = getConflictingFiles(workflowsDir, manifest.commands);\n  const existingSkills = getConflictingDirs(skillsDir, manifest.skills);\n\n  if ((existingRules.length > 0 || existingWorkflows.length > 0 || existingSkills.length > 0) && !args.force) {\n    console.log();\n    console.log(pc.yellow(\"⚠ Existing files found:\"));\n    for (const file of [...existingRules, ...existingWorkflows, ...existingSkills]) {\n      console.log(pc.dim(`   └─ ${file}`));\n    }\n    console.log();\n\n    const proceed = await p.confirm({\n      message: \"Overwrite existing files?\",\n      initialValue: false,\n    });\n\n    if (p.isCancel(proceed) || !proceed) {\n      p.cancel(\"Operation cancelled\");\n      process.exit(0);\n    }\n  }\n\n  let selectedCommands: string[] = [];\n  let selectedRules: string[] = [];\n  let selectedSkills: string[] = [];\n\n  // Commands become workflows in AntiGravity\n  if (shouldInitCommands) {\n    if (args.all) {\n      selectedCommands = manifest.commands;\n    } else {\n      const selection = await selectTemplates(\"commands\", manifest.commands);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedCommands = selection;\n    }\n  }\n\n  if (shouldInitRules) {\n    if (args.all) {\n      selectedRules = manifest.rules;\n    } else {\n      const selection = await selectTemplates(\"rules\", manifest.rules);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedRules = selection;\n    }\n  }\n\n  if (shouldInitSkills) {\n    if (args.all) {\n      selectedSkills = manifest.skills;\n    } else {\n      const selection = await selectTemplates(\"skills\", manifest.skills);\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      selectedSkills = selection;\n    }\n  }\n\n  if (selectedCommands.length === 0 && selectedRules.length === 0 && selectedSkills.length === 0) {\n    p.cancel(\"No templates selected\");\n    process.exit(0);\n  }\n\n  const results = {\n    workflows: [] as string[],\n    rules: [] as string[],\n    skills: [] as string[],\n  };\n\n  try {\n    ensureDir(agentDir);\n    ensureDir(rulesDir);\n    ensureDir(workflowsDir);\n    ensureDir(skillsDir);\n\n    // Install commands as workflows\n    if (selectedCommands.length > 0) {\n      s.start(\"Installing workflows...\");\n      const templates = await fetchMultipleTemplates(\"commands\", selectedCommands);\n      \n      for (const [filename, content] of templates) {\n        const transformedContent = transformCommandToWorkflow(content, filename);\n        const filePath = join(workflowsDir, filename);\n        writeFile(filePath, transformedContent);\n        results.workflows.push(filename);\n      }\n      s.stop(\"Workflows installed\");\n    }\n\n    // Install rules with AntiGravity format\n    if (selectedRules.length > 0) {\n      s.start(\"Installing rules...\");\n      const templates = await fetchMultipleTemplates(\"rules\", selectedRules);\n      \n      for (const [filename, content] of templates) {\n        const transformedContent = transformRuleForAntiGravity(content, filename);\n        const filePath = join(rulesDir, filename);\n        writeFile(filePath, transformedContent);\n        results.rules.push(filename);\n      }\n      s.stop(\"Rules installed\");\n    }\n\n    // Install skills with AntiGravity format\n    if (selectedSkills.length > 0) {\n      s.start(\"Installing skills...\");\n      for (const skillName of selectedSkills) {\n        const success = copyLocalSkillForAntiGravity(skillName, skillsDir);\n        if (success) {\n          results.skills.push(skillName);\n        }\n      }\n      s.stop(\"Skills installed\");\n    }\n\n    printDivider();\n    console.log();\n\n    if (results.workflows.length > 0) {\n      printSuccess(`Workflows: ${highlight(results.workflows.length.toString())} added`);\n      for (const wf of results.workflows) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${wf}`));\n      }\n    }\n\n    if (results.rules.length > 0) {\n      printSuccess(`Rules: ${highlight(results.rules.length.toString())} added`);\n      for (const rule of results.rules) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${rule}`));\n      }\n    }\n\n    if (results.skills.length > 0) {\n      printSuccess(`Skills: ${highlight(results.skills.length.toString())} added`);\n      for (const skill of results.skills) {\n        console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${skill}`));\n      }\n    }\n\n    console.log();\n    p.outro(pc.green(\"✨ Google AntiGravity configuration created successfully!\"));\n  } catch (error) {\n    s.stop(\"Failed\");\n    p.cancel(\n      `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n    );\n    process.exit(1);\n  }\n}\n\nasync function selectTemplates(\n  type: TemplateType,\n  availableTemplates: string[]\n): Promise<string[] | symbol> {\n  const labelFn = type === \"skills\" ? getSkillLabel : getTemplateLabel;\n\n  const selectionMode = await p.select({\n    message: `How would you like to add ${type}?`,\n    options: [\n      {\n        value: \"all\",\n        label: `Add all ${availableTemplates.length} ${type}`,\n        hint: \"Install everything\",\n      },\n      {\n        value: \"select\",\n        label: \"Select specific items\",\n        hint: \"Choose which ones to install\",\n      },\n    ],\n  });\n\n  if (p.isCancel(selectionMode)) return selectionMode;\n\n  if (selectionMode === \"all\") {\n    return availableTemplates;\n  }\n\n  const selectedTemplates = await p.multiselect({\n    message: `Select ${type} to add:`,\n    options: availableTemplates.map((template) => ({\n      value: template,\n      label: labelFn(template),\n      hint: template,\n    })),\n    required: true,\n  });\n\n  return selectedTemplates as string[] | symbol;\n}\n\nasync function handleConflicts(\n  type: TemplateType,\n  conflictingFiles: string[]\n): Promise<ConflictStrategy | symbol> {\n  console.log();\n  console.log(\n    pc.yellow(`⚠ ${conflictingFiles.length} existing ${type} found:`)\n  );\n  for (const file of conflictingFiles) {\n    console.log(pc.dim(`   └─ ${file}`));\n  }\n  console.log();\n\n  const strategy = await p.select({\n    message: \"How would you like to handle conflicts?\",\n    options: [\n      {\n        value: \"overwrite\" as ConflictStrategy,\n        label: \"Overwrite existing files\",\n        hint: \"Replace all conflicting files\",\n      },\n      {\n        value: \"merge\" as ConflictStrategy,\n        label: \"Merge (keep existing, add new only)\",\n        hint: \"Skip files that already exist\",\n      },\n      {\n        value: \"cancel\" as ConflictStrategy,\n        label: \"Cancel\",\n        hint: \"Abort the operation\",\n      },\n    ],\n  });\n\n  return strategy as ConflictStrategy | symbol;\n}\n\nasync function installTemplates(\n  type: TemplateType,\n  targetDir: string,\n  selectedTemplates: string[],\n  conflictStrategy: ConflictStrategy,\n  target: InstructionTarget\n): Promise<InitResult> {\n  const result: InitResult = { added: [], skipped: [] };\n  \n  // For Cursor target, rules need .mdc extension, commands stay .md\n  // For GitHub Copilot, everything stays .md\n  const expectedFilenames = selectedTemplates.map((filename) => {\n    if (target === \"cursor\" && type === \"rules\" && filename.endsWith(\".md\")) {\n      return convertMdToMdc(filename);\n    }\n    return filename;\n  });\n  \n  const conflictingFiles = getConflictingFiles(targetDir, expectedFilenames);\n\n  let templatesToInstall: string[];\n\n  if (conflictStrategy === \"merge\") {\n    templatesToInstall = selectedTemplates.filter(\n      (t) => {\n        const expectedName = target === \"cursor\" && type === \"rules\" && t.endsWith(\".md\")\n          ? convertMdToMdc(t)\n          : t;\n        return !conflictingFiles.includes(expectedName);\n      }\n    );\n    result.skipped = conflictingFiles.filter((f) =>\n      expectedFilenames.includes(f)\n    );\n  } else {\n    templatesToInstall = selectedTemplates;\n  }\n\n  if (templatesToInstall.length === 0) {\n    return result;\n  }\n\n  const templates = await fetchMultipleTemplates(type, templatesToInstall);\n\n  ensureDir(targetDir);\n\n  for (const [filename, content] of templates) {\n    // Convert .md to .mdc for rules when target is cursor\n    const outputFilename = target === \"cursor\" && type === \"rules\" && filename.endsWith(\".md\")\n      ? convertMdToMdc(filename)\n      : filename;\n    \n    // Transform toc.md content for Cursor to fix links\n    let transformedContent = content;\n    if (target === \"cursor\" && type === \"rules\" && filename === \"toc.md\") {\n      transformedContent = transformTocContentForCursor(content);\n    }\n    \n    const filePath = join(targetDir, outputFilename);\n    writeFile(filePath, transformedContent);\n    result.added.push(outputFilename);\n  }\n\n  return result;\n}\n\nasync function installSkills(\n  targetDir: string,\n  selectedSkills: string[],\n  conflictStrategy: ConflictStrategy,\n  target: InstructionTarget\n): Promise<InitResult> {\n  const result: InitResult = { added: [], skipped: [] };\n  const conflictingDirs = getConflictingDirs(targetDir, selectedSkills);\n\n  let skillsToInstall: string[];\n\n  if (conflictStrategy === \"merge\") {\n    skillsToInstall = selectedSkills.filter(\n      (s) => !conflictingDirs.includes(s)\n    );\n    result.skipped = conflictingDirs.filter((d) =>\n      selectedSkills.includes(d)\n    );\n  } else {\n    skillsToInstall = selectedSkills;\n  }\n\n  if (skillsToInstall.length === 0) {\n    return result;\n  }\n\n  ensureDir(targetDir);\n\n  // Convert SKILL.md to SKILL.mdc for Cursor target\n  const convertToMdc = target === \"cursor\";\n\n  for (const skillName of skillsToInstall) {\n    const success = copyLocalSkill(skillName, targetDir, convertToMdc);\n    if (success) {\n      result.added.push(skillName);\n    }\n  }\n\n  return result;\n}\n\nexport const initCommand = defineCommand({\n  meta: {\n    name: \"init\",\n    description:\n      \"Initialize .cursor/commands, .cursor/rules, and .cursor/skills in your project\",\n  },\n  args: {\n    force: {\n      type: \"boolean\",\n      alias: \"f\",\n      description: \"Overwrite existing files without prompting\",\n      default: false,\n    },\n    commands: {\n      type: \"boolean\",\n      alias: \"c\",\n      description: \"Only initialize commands\",\n      default: false,\n    },\n    rules: {\n      type: \"boolean\",\n      alias: \"r\",\n      description: \"Only initialize rules\",\n      default: false,\n    },\n    skills: {\n      type: \"boolean\",\n      alias: \"s\",\n      description: \"Only initialize skills\",\n      default: false,\n    },\n    all: {\n      type: \"boolean\",\n      alias: \"a\",\n      description: \"Install all templates without selection prompts\",\n      default: false,\n    },\n    target: {\n      type: \"string\",\n      alias: \"t\",\n      description: \"Target AI IDE: 'cursor', 'github-copilot', or 'google-antigravity'\",\n      default: undefined,\n    },\n  },\n  async run({ args }) {\n    const cwd = process.cwd();\n    const cursorDir = getCursorDir(cwd);\n    const commandsDir = getCommandsDir(cwd);\n    const rulesDir = getRulesDir(cwd);\n    const skillsDir = getSkillsDir(cwd);\n\n    const initAll = !args.commands && !args.rules && !args.skills;\n    const shouldInitCommands = initAll || args.commands;\n    const shouldInitRules = initAll || args.rules;\n    const shouldInitSkills = initAll || args.skills;\n\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit init \")));\n\n    let target: InstructionTarget;\n    if (args.target === \"github-copilot\" || args.target === \"cursor\" || args.target === \"google-antigravity\") {\n      target = args.target;\n    } else {\n      const selection = await promptTargetSelection();\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      target = selection;\n    }\n\n    const s = p.spinner();\n\n    let manifest: TemplateManifest;\n\n    try {\n      s.start(\"Fetching template manifest...\");\n      manifest = await fetchTemplateManifest();\n      s.stop(\"Template manifest loaded\");\n    } catch (error) {\n      s.stop(\"Failed to fetch manifest\");\n      p.cancel(\n        `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n      );\n      process.exit(1);\n    }\n\n    if (target === \"github-copilot\") {\n      await handleCopilotInstallation(\n        cwd,\n        manifest,\n        args,\n        shouldInitCommands,\n        shouldInitRules,\n        shouldInitSkills\n      );\n      return;\n    }\n\n    if (target === \"google-antigravity\") {\n      await handleAntiGravityInstallation(\n        cwd,\n        manifest,\n        args,\n        shouldInitCommands,\n        shouldInitRules,\n        shouldInitSkills\n      );\n      return;\n    }\n\n    const results: {\n      commands?: InitResult;\n      rules?: InitResult;\n      skills?: InitResult;\n    } = {};\n\n    try {\n      ensureDir(cursorDir);\n\n      if (shouldInitCommands) {\n        let selectedCommands: string[];\n\n        if (args.all) {\n          selectedCommands = manifest.commands;\n        } else {\n          const selection = await selectTemplates(\"commands\", manifest.commands);\n          if (p.isCancel(selection)) {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          selectedCommands = selection;\n        }\n\n        const conflictingCommands = getConflictingFiles(\n          commandsDir,\n          selectedCommands\n        );\n        let commandStrategy: ConflictStrategy = \"overwrite\";\n\n        if (conflictingCommands.length > 0 && !args.force) {\n          const strategy = await handleConflicts(\"commands\", conflictingCommands);\n          if (p.isCancel(strategy) || strategy === \"cancel\") {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          commandStrategy = strategy;\n        }\n\n        s.start(\"Installing commands...\");\n        results.commands = await installTemplates(\n          \"commands\",\n          commandsDir,\n          selectedCommands,\n          commandStrategy,\n          target\n        );\n        s.stop(\"Commands installed\");\n      }\n\n      if (shouldInitRules) {\n        let selectedRules: string[];\n\n        if (args.all) {\n          selectedRules = manifest.rules;\n        } else {\n          const selection = await selectTemplates(\"rules\", manifest.rules);\n          if (p.isCancel(selection)) {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          selectedRules = selection;\n        }\n\n        // For Cursor, rules need .mdc extension, so check for .mdc files\n        const expectedRuleFilenames = selectedRules.map((filename) => {\n          return target === \"cursor\" && filename.endsWith(\".md\")\n            ? convertMdToMdc(filename)\n            : filename;\n        });\n        const conflictingRules = getConflictingFiles(rulesDir, expectedRuleFilenames);\n        let ruleStrategy: ConflictStrategy = \"overwrite\";\n\n        if (conflictingRules.length > 0 && !args.force) {\n          const strategy = await handleConflicts(\"rules\", conflictingRules);\n          if (p.isCancel(strategy) || strategy === \"cancel\") {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          ruleStrategy = strategy;\n        }\n\n        s.start(\"Installing rules...\");\n        results.rules = await installTemplates(\n          \"rules\",\n          rulesDir,\n          selectedRules,\n          ruleStrategy,\n          target\n        );\n        s.stop(\"Rules installed\");\n      }\n\n      if (shouldInitSkills) {\n        let selectedSkills: string[];\n\n        if (args.all) {\n          selectedSkills = manifest.skills;\n        } else {\n          const selection = await selectTemplates(\"skills\", manifest.skills);\n          if (p.isCancel(selection)) {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          selectedSkills = selection;\n        }\n\n        const conflictingSkills = getConflictingDirs(skillsDir, selectedSkills);\n        let skillStrategy: ConflictStrategy = \"overwrite\";\n\n        if (conflictingSkills.length > 0 && !args.force) {\n          const strategy = await handleConflicts(\"skills\", conflictingSkills);\n          if (p.isCancel(strategy) || strategy === \"cancel\") {\n            p.cancel(\"Operation cancelled\");\n            process.exit(0);\n          }\n          skillStrategy = strategy;\n        }\n\n        s.start(\"Installing skills...\");\n        results.skills = await installSkills(\n          skillsDir,\n          selectedSkills,\n          skillStrategy,\n          target\n        );\n        s.stop(\"Skills installed\");\n      }\n\n      printDivider();\n      console.log();\n\n      if (results.commands) {\n        const { added, skipped } = results.commands;\n        if (added.length > 0 || skipped.length > 0) {\n          printSuccess(\n            `Commands: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n          );\n          for (const f of added) {\n            console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${f}`));\n          }\n          for (const f of skipped) {\n            console.log(pc.dim(`   └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n          }\n        }\n      }\n\n      if (results.rules) {\n        const { added, skipped } = results.rules;\n        if (added.length > 0 || skipped.length > 0) {\n          printSuccess(\n            `Rules: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n          );\n          for (const f of added) {\n            console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${f}`));\n          }\n          for (const f of skipped) {\n            console.log(pc.dim(`   └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n          }\n        }\n      }\n\n      if (results.skills) {\n        const { added, skipped } = results.skills;\n        if (added.length > 0 || skipped.length > 0) {\n          printSuccess(\n            `Skills: ${highlight(added.length.toString())} added${skipped.length > 0 ? `, ${pc.yellow(skipped.length.toString())} skipped` : \"\"}`\n          );\n          for (const f of added) {\n            console.log(pc.dim(`   └─ ${pc.green(\"+\")} ${f}`));\n          }\n          for (const f of skipped) {\n            console.log(pc.dim(`   └─ ${pc.yellow(\"○\")} ${f} (kept existing)`));\n          }\n        }\n      }\n\n      const totalAdded =\n        (results.commands?.added.length ?? 0) +\n        (results.rules?.added.length ?? 0) +\n        (results.skills?.added.length ?? 0);\n      const totalSkipped =\n        (results.commands?.skipped.length ?? 0) +\n        (results.rules?.skipped.length ?? 0) +\n        (results.skills?.skipped.length ?? 0);\n\n      if (totalAdded === 0 && totalSkipped > 0) {\n        console.log();\n        p.outro(pc.yellow(\"No new templates added (all selected files already exist)\"));\n      } else {\n        console.log();\n        p.outro(pc.green(\"✨ Cursor Kit initialized successfully!\"));\n      }\n    } catch (error) {\n      s.stop(\"Failed\");\n      p.cancel(\n        `Error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n      );\n      process.exit(1);\n    }\n  },\n});\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n  if (!existsSync(path)) {\n    mkdirSync(path, { recursive: true });\n  }\n}\n\nexport function fileExists(path: string): boolean {\n  return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n  return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n  return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n  ensureDir(dirname(path));\n  writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n  if (existsSync(path)) {\n    rmSync(path, { recursive: true });\n  }\n}\n\nexport function copyDir(src: string, dest: string): void {\n  cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n  if (!dirExists(dir)) return [];\n  \n  const files = readdirSync(dir);\n  if (extension) {\n    return files.filter((f) => f.endsWith(extension));\n  }\n  return files;\n}\n\nexport function listDirs(dir: string): string[] {\n  if (!dirExists(dir)) return [];\n  \n  return readdirSync(dir).filter((item) => {\n    const itemPath = join(dir, item);\n    return statSync(itemPath).isDirectory();\n  });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n  return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n  return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n  const pkgPath = join(cwd, \"package.json\");\n  if (!fileExists(pkgPath)) return null;\n  \n  try {\n    return JSON.parse(readFile(pkgPath));\n  } catch {\n    return null;\n  }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n  if (!dirExists(dir)) return [];\n  return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n  if (!dirExists(dir)) return [];\n  return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n  if (!dirExists(dir)) return files;\n  return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n  if (!dirExists(dir)) return dirs;\n  return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n  return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n  return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n  return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n  if (fileExists(path)) {\n    rmSync(path);\n  }\n}\n\n// Google AntiGravity directory utilities\nexport function getAgentDir(cwd: string = process.cwd()): string {\n  return join(cwd, \".agent\");\n}\n\nexport function getAgentRulesDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"rules\");\n}\n\nexport function getAgentWorkflowsDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"workflows\");\n}\n\nexport function getAgentSkillsDir(cwd: string = process.cwd()): string {\n  return join(getAgentDir(cwd), \"skills\");\n}\n","import { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { REPO_RAW_URL, TEMPLATE_PATHS } from \"./constants\";\nimport { fileExists, readFile, dirExists, listFiles, listDirs, copyDir, ensureDir, writeFile, deleteFile } from \"./fs\";\n\nexport interface TemplateManifest {\n  commands: string[];\n  rules: string[];\n  skills: string[];\n}\n\nexport type TemplateType = \"commands\" | \"rules\" | \"skills\";\n\nexport interface TemplateItem {\n  name: string;\n  type: TemplateType;\n}\n\nfunction getLocalTemplatesDir(): string {\n  const currentDir = dirname(fileURLToPath(import.meta.url));\n  return join(currentDir, \"..\", \"templates\");\n}\n\nfunction getLocalManifest(): TemplateManifest | null {\n  const templatesDir = getLocalTemplatesDir();\n  const manifestPath = join(templatesDir, \"manifest.json\");\n\n  if (fileExists(manifestPath)) {\n    try {\n      return JSON.parse(readFile(manifestPath)) as TemplateManifest;\n    } catch {\n      return null;\n    }\n  }\n\n  const commandsDir = join(templatesDir, \"commands\");\n  const rulesDir = join(templatesDir, \"rules\");\n  const skillsDir = join(templatesDir, \"skills\");\n\n  if (!dirExists(commandsDir) && !dirExists(rulesDir) && !dirExists(skillsDir)) {\n    return null;\n  }\n\n  return {\n    commands: dirExists(commandsDir) ? listFiles(commandsDir, \".md\") : [],\n    rules: dirExists(rulesDir) ? listFiles(rulesDir, \".md\") : [],\n    skills: dirExists(skillsDir) ? listDirs(skillsDir) : [],\n  };\n}\n\nfunction getLocalTemplateContent(type: TemplateType, filename: string): string | null {\n  const templatesDir = getLocalTemplatesDir();\n  const filePath = join(templatesDir, type, filename);\n\n  if (fileExists(filePath)) {\n    return readFile(filePath);\n  }\n\n  // Backward compatibility: try .mdc if .md not found (for rules)\n  if (type === \"rules\" && filename.endsWith(\".md\")) {\n    const mdcPath = filePath.replace(/\\.md$/, \".mdc\");\n    if (fileExists(mdcPath)) {\n      return readFile(mdcPath);\n    }\n  }\n\n  return null;\n}\n\nexport function getLocalSkillDir(skillName: string): string | null {\n  const templatesDir = getLocalTemplatesDir();\n  const skillPath = join(templatesDir, \"skills\", skillName);\n\n  if (dirExists(skillPath)) {\n    return skillPath;\n  }\n\n  return null;\n}\n\nexport function convertMdToMdc(filename: string): string {\n  return filename.replace(/\\.md$/, \".mdc\");\n}\n\nexport function transformTocContentForCursor(content: string): string {\n  // Transform skill links: SKILL.md -> SKILL.mdc\n  content = content.replace(/\\]\\(\\.\\.\\/skills\\/([^/]+)\\/SKILL\\.md\\)/g, '](../skills/$1/SKILL.mdc)');\n  \n  // Transform rule links: .md -> .mdc (for rules in the same directory)\n  content = content.replace(/\\]\\(\\.\\/([^)]+)\\.md\\)/g, '](./$1.mdc)');\n  \n  return content;\n}\n\nexport function copyLocalSkill(\n  skillName: string,\n  targetDir: string,\n  convertToMdc: boolean = false\n): boolean {\n  const sourcePath = getLocalSkillDir(skillName);\n  if (!sourcePath) return false;\n\n  const destPath = join(targetDir, skillName);\n  ensureDir(destPath);\n  copyDir(sourcePath, destPath);\n\n  // Convert SKILL.md to SKILL.mdc if needed (for Cursor)\n  if (convertToMdc) {\n    const skillMdPath = join(destPath, \"SKILL.md\");\n    const skillMdcPath = join(destPath, \"SKILL.mdc\");\n    if (fileExists(skillMdPath)) {\n      const content = readFile(skillMdPath);\n      writeFile(skillMdcPath, content);\n      // Delete SKILL.md since Cursor only uses SKILL.mdc\n      deleteFile(skillMdPath);\n    }\n  }\n\n  return true;\n}\n\nexport async function fetchTemplateManifest(): Promise<TemplateManifest> {\n  const localManifest = getLocalManifest();\n  if (localManifest) {\n    return localManifest;\n  }\n\n  const url = `${REPO_RAW_URL}/templates/manifest.json`;\n  const response = await fetch(url);\n\n  if (!response.ok) {\n    throw new Error(`Failed to fetch template manifest: ${response.statusText}`);\n  }\n\n  return response.json() as Promise<TemplateManifest>;\n}\n\nexport async function fetchTemplateContent(\n  type: TemplateType,\n  filename: string\n): Promise<string> {\n  const localContent = getLocalTemplateContent(type, filename);\n  if (localContent !== null) {\n    return localContent;\n  }\n\n  const templatePath = TEMPLATE_PATHS[type];\n  const url = `${REPO_RAW_URL}/${templatePath}/${filename}`;\n\n  const response = await fetch(url);\n\n  if (!response.ok) {\n    throw new Error(`Failed to fetch template ${filename}: ${response.statusText}`);\n  }\n\n  return response.text();\n}\n\nexport async function fetchMultipleTemplates(\n  type: TemplateType,\n  filenames: string[]\n): Promise<Map<string, string>> {\n  const results = new Map<string, string>();\n\n  const fetchPromises = filenames.map(async (filename) => {\n    const content = await fetchTemplateContent(type, filename);\n    return { filename, content };\n  });\n\n  const settled = await Promise.allSettled(fetchPromises);\n\n  for (const result of settled) {\n    if (result.status === \"fulfilled\") {\n      results.set(result.value.filename, result.value.content);\n    }\n  }\n\n  return results;\n}\n\nexport function getTemplateLabel(filename: string): string {\n  const nameWithoutExt = filename.replace(/\\.(md|mdc)$/, \"\");\n  return nameWithoutExt\n    .split(\"-\")\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(\" \");\n}\n\nexport function getSkillLabel(skillName: string): string {\n  return skillName\n    .split(\"-\")\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(\" \");\n}\n\nexport function stripFrontmatter(content: string): string {\n  const frontmatterRegex = /^---\\n[\\s\\S]*?\\n---\\n/;\n  return content.replace(frontmatterRegex, \"\").trim();\n}\n\nexport function extractFrontmatter(content: string): {\n  alwaysApply?: boolean;\n  name?: string;\n  description?: string;\n  [key: string]: unknown;\n} {\n  const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n/);\n  if (!frontmatterMatch) return {};\n\n  const frontmatter = frontmatterMatch[1];\n  const result: Record<string, unknown> = {};\n\n  for (const line of frontmatter.split(\"\\n\")) {\n    const match = line.match(/^(\\w+):\\s*(.+)$/);\n    if (match) {\n      const [, key, value] = match;\n      result[key] =\n        value === \"true\" ? true : value === \"false\" ? false : value;\n    }\n  }\n\n  return result;\n}\n/**\n * Get semantic description keywords for a rule based on filename.\n * Helps the IDE understand when to apply the rule.\n */\nfunction getSemanticDescriptionForRule(filename: string): string {\n  const baseName = filename.replace(/\\.(md|mdc)$/, \"\").toLowerCase();\n  \n  const semanticMap: Record<string, string> = {\n    \"toc\": \"Table of contents, skill routing, rule selection guide, when to apply rules\",\n    \"git\": \"Git commit conventions, branching strategy, version control, commit messages\",\n    \"coding-style\": \"Code formatting, style guidelines, best practices, clean code\",\n  };\n  \n  return semanticMap[baseName] || \"\";\n}\n\n/**\n * Transform a Cursor rule to Google AntiGravity rule format.\n * Converts alwaysApply: true to trigger: always_on\n * Otherwise uses trigger: model_decision\n * Adds semantic keywords to description for better IDE understanding\n */\nexport function transformRuleForAntiGravity(content: string, filename: string = \"\"): string {\n  const frontmatter = extractFrontmatter(content);\n  const body = stripFrontmatter(content);\n  \n  // Determine trigger type based on alwaysApply flag\n  const trigger = frontmatter.alwaysApply === true ? \"always_on\" : \"model_decision\";\n  \n  // Build description with semantic keywords\n  const existingDesc = frontmatter.description || frontmatter.name || \"\";\n  const semanticDesc = getSemanticDescriptionForRule(filename);\n  const description = semanticDesc || existingDesc;\n  \n  // Create AntiGravity frontmatter\n  let newFrontmatter = `---\\ntrigger: ${trigger}\\n`;\n  if (description) {\n    newFrontmatter += `description: ${description}\\n`;\n  }\n  newFrontmatter += \"---\\n\\n\";\n  \n  return newFrontmatter + body;\n}\n\n/**\n * Transform a Cursor command to Google AntiGravity workflow format.\n * Adds description frontmatter based on the command content.\n */\nexport function transformCommandToWorkflow(content: string, filename: string): string {\n  const frontmatter = extractFrontmatter(content);\n  const body = stripFrontmatter(content);\n  \n  // Use existing description or derive from filename\n  const description = frontmatter.description || \n    filename.replace(/\\.md$/, \"\").split(\"-\").map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(\" \");\n  \n  // Create AntiGravity workflow frontmatter\n  const newFrontmatter = `---\\ndescription: ${description}\\n---\\n\\n`;\n  \n  return newFrontmatter + body;\n}\n\n/**\n * Transform SKILL.md content to AntiGravity format.\n * Uses existing description from frontmatter with trigger: manual\n */\nexport function transformSkillForAntiGravity(content: string): string {\n  const frontmatter = extractFrontmatter(content);\n  const body = stripFrontmatter(content);\n  \n  // Use existing description from SKILL.md metadata\n  const description = frontmatter.description || frontmatter.name || \"\";\n  \n  // Create AntiGravity skill frontmatter with manual trigger\n  let newFrontmatter = `---\\ntrigger: manual\\n`;\n  if (description) {\n    newFrontmatter += `description: ${description}\\n`;\n  }\n  newFrontmatter += \"---\\n\\n\";\n  \n  return newFrontmatter + body;\n}\n\n/**\n * Copy a local skill to AntiGravity format.\n * Transforms SKILL.md with proper frontmatter.\n */\nexport function copyLocalSkillForAntiGravity(\n  skillName: string,\n  targetDir: string\n): boolean {\n  const sourcePath = getLocalSkillDir(skillName);\n  if (!sourcePath) return false;\n\n  const destPath = join(targetDir, skillName);\n  ensureDir(destPath);\n  copyDir(sourcePath, destPath);\n\n  // Transform SKILL.md to AntiGravity format\n  const skillMdPath = join(destPath, \"SKILL.md\");\n  if (fileExists(skillMdPath)) {\n    const content = readFile(skillMdPath);\n    const transformedContent = transformSkillForAntiGravity(content);\n    writeFile(skillMdPath, transformedContent);\n  }\n\n  return true;\n}\n\nexport function generateCopilotIndex(\n  commands: string[],\n  rules: string[],\n  skills: string[],\n  alwaysApplyRules: string[] = []\n): string {\n  let output = \"# GitHub Copilot Custom Instructions\\n\\n\";\n  output += \"> Generated by cursor-kit-cli\\n\\n\";\n  output +=\n    \"This file provides instructions for GitHub Copilot. \";\n  output +=\n    \"When working on tasks, read the relevant files from the `copilot-instructions/` directory as needed.\\n\\n\";\n\n  if (alwaysApplyRules.length > 0) {\n    output += \"## Rules Applied Automatically\\n\\n\";\n    output +=\n      \"The following rules are always applied. Read these files for context:\\n\\n\";\n    for (const rule of alwaysApplyRules) {\n      const ruleName = rule.replace(/\\.md$/, \"\");\n      output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for guidelines\\n`;\n    }\n    output += \"\\n\";\n  }\n\n  if (commands.length > 0) {\n    output += \"## Commands\\n\\n\";\n    output +=\n      \"When the user requests a command, read the corresponding file:\\n\\n\";\n    for (const cmd of commands) {\n      const cmdName = cmd.replace(/\\.md$/, \"\");\n      output += `- **${cmdName}**: Read \\`.github/copilot-instructions/commands/${cmd}\\` when user requests \"${cmdName}\"\\n`;\n    }\n    output += \"\\n\";\n  }\n\n  if (rules.length > 0) {\n    output += \"## Rules\\n\\n\";\n    output +=\n      \"Apply these rules when relevant to the task. Read the files as needed:\\n\\n\";\n    for (const rule of rules) {\n      const ruleName = rule.replace(/\\.md$/, \"\");\n      output += `- **${ruleName}**: Read \\`.github/copilot-instructions/rules/${rule}\\` for ${ruleName} guidelines\\n`;\n    }\n    output += \"\\n\";\n  }\n\n  if (skills.length > 0) {\n    output += \"## Skills\\n\\n\";\n    output +=\n      \"These are comprehensive guides for specialized domains. Read the relevant skill when working in that domain:\\n\\n\";\n    for (const skill of skills) {\n      output += `- **${skill}**: Read \\`.github/copilot-instructions/skills/${skill}/SKILL.md\\` when working on ${skill} tasks\\n`;\n    }\n    output += \"\\n\";\n  }\n\n  output += \"## Usage Guidelines\\n\\n\";\n  output +=\n    \"- **Don't read all files at once** - Only read files relevant to the current task\\n\";\n  output +=\n    \"- **Commands**: Read command files when the user explicitly requests that command\\n\";\n  output +=\n    \"- **Rules**: Reference rules when they apply to the current coding task\\n\";\n  output +=\n    \"- **Skills**: Read skill files when working in that domain (e.g., frontend-development for React components)\\n\";\n  output +=\n    \"- **Always Apply Rules**: These are automatically considered, but you can reference them for specific guidance\\n\\n\";\n\n  return output;\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n  commands: \"templates/commands\",\n  rules: \"templates/rules\",\n  skills: \"templates/skills\",\n} as const;\n","import { join } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport {\n  ensureDir,\n  fileExists,\n  dirExists,\n  writeFile,\n  deleteFile,\n  readFile,\n  getCopilotInstructionsPath,\n  getCopilotInstructionsDir,\n  getCopilotCommandsDir,\n  getCopilotRulesDir,\n  getCopilotSkillsDir,\n} from \"./fs\";\nimport {\n  fetchMultipleTemplates,\n  copyLocalSkill,\n  stripFrontmatter,\n  extractFrontmatter,\n  generateCopilotIndex,\n} from \"./templates\";\nimport { printSuccess } from \"./branding\";\n\nexport interface CopilotInstallResult {\n  commands: string[];\n  rules: string[];\n  skills: string[];\n  alwaysApplyRules: string[];\n}\n\nasync function installCopilotCommands(\n  commandsDir: string,\n  selectedCommands: string[]\n): Promise<string[]> {\n  if (selectedCommands.length === 0) return [];\n\n  ensureDir(commandsDir);\n  const commandsMap = await fetchMultipleTemplates(\"commands\", selectedCommands);\n  const installed: string[] = [];\n\n  for (const [filename, content] of commandsMap) {\n    const cleanContent = stripFrontmatter(content);\n    const filePath = join(commandsDir, filename);\n    writeFile(filePath, cleanContent);\n    installed.push(filename);\n  }\n\n  return installed;\n}\n\nasync function installCopilotRules(\n  rulesDir: string,\n  selectedRules: string[]\n): Promise<{ installed: string[]; alwaysApply: string[] }> {\n  if (selectedRules.length === 0) return { installed: [], alwaysApply: [] };\n\n  ensureDir(rulesDir);\n  const rulesMap = await fetchMultipleTemplates(\"rules\", selectedRules);\n  const installed: string[] = [];\n  const alwaysApply: string[] = [];\n\n  for (const [filename, content] of rulesMap) {\n    const frontmatter = extractFrontmatter(content);\n    const cleanContent = stripFrontmatter(content);\n\n    // Templates are now .md, but handle .mdc for backward compatibility\n    const mdFilename = filename.endsWith(\".md\") ? filename : filename.replace(/\\.mdc$/, \".md\");\n    const filePath = join(rulesDir, mdFilename);\n    writeFile(filePath, cleanContent);\n\n    installed.push(mdFilename);\n\n    if (frontmatter.alwaysApply) {\n      alwaysApply.push(mdFilename);\n    }\n  }\n\n  return { installed, alwaysApply };\n}\n\nasync function installCopilotSkills(\n  skillsDir: string,\n  selectedSkills: string[]\n): Promise<string[]> {\n  if (selectedSkills.length === 0) return [];\n\n  ensureDir(skillsDir);\n  const installed: string[] = [];\n\n  for (const skillName of selectedSkills) {\n    const success = copyLocalSkill(skillName, skillsDir);\n    if (!success) continue;\n\n    const skillTargetDir = join(skillsDir, skillName);\n    const skillMdcPath = join(skillTargetDir, \"SKILL.mdc\");\n    const skillMdPath = join(skillTargetDir, \"SKILL.md\");\n\n    // Handle SKILL.md (new format) or SKILL.mdc (backward compatibility)\n    if (fileExists(skillMdPath)) {\n      // Already .md, just strip frontmatter if needed\n      const content = readFile(skillMdPath);\n      const cleanContent = stripFrontmatter(content);\n      writeFile(skillMdPath, cleanContent);\n    } else if (fileExists(skillMdcPath)) {\n      // Convert .mdc to .md (backward compatibility)\n      const content = readFile(skillMdcPath);\n      const cleanContent = stripFrontmatter(content);\n      writeFile(skillMdPath, cleanContent);\n      deleteFile(skillMdcPath);\n    }\n\n    installed.push(skillName);\n  }\n\n  return installed;\n}\n\nexport async function checkCopilotConflicts(\n  cwd: string,\n  force: boolean\n): Promise<boolean> {\n  const copilotDir = getCopilotInstructionsDir(cwd);\n  const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n  const hasExistingDir = dirExists(copilotDir);\n  const hasExistingIndex = fileExists(copilotIndexPath);\n\n  if ((hasExistingDir || hasExistingIndex) && !force) {\n    const overwrite = await p.confirm({\n      message: \"GitHub Copilot instructions already exist. Overwrite?\",\n      initialValue: false,\n    });\n\n    if (p.isCancel(overwrite) || !overwrite) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport async function installCopilotInstructions(\n  cwd: string,\n  selectedCommands: string[],\n  selectedRules: string[],\n  selectedSkills: string[]\n): Promise<CopilotInstallResult> {\n  const commandsDir = getCopilotCommandsDir(cwd);\n  const rulesDir = getCopilotRulesDir(cwd);\n  const skillsDir = getCopilotSkillsDir(cwd);\n  const copilotIndexPath = getCopilotInstructionsPath(cwd);\n\n  const [installedCommands, rulesResult, installedSkills] = await Promise.all([\n    installCopilotCommands(commandsDir, selectedCommands),\n    installCopilotRules(rulesDir, selectedRules),\n    installCopilotSkills(skillsDir, selectedSkills),\n  ]);\n\n  const installedRules = rulesResult.installed;\n  const alwaysApplyRules = rulesResult.alwaysApply;\n\n  const indexContent = generateCopilotIndex(\n    installedCommands,\n    installedRules,\n    installedSkills,\n    alwaysApplyRules\n  );\n\n  writeFile(copilotIndexPath, indexContent);\n\n  printSuccess(`GitHub Copilot instructions generated`);\n  console.log(pc.dim(`   └─ ${copilotIndexPath}`));\n  console.log(pc.dim(`   └─ ${getCopilotInstructionsDir(cwd)}/`));\n\n  return {\n    commands: installedCommands,\n    rules: installedRules.map((r) => r.replace(/\\.md$/, \"\")),\n    skills: installedSkills,\n    alwaysApplyRules,\n  };\n}\n\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport type { InstructionTarget } from \"../types/init\";\nimport { highlight } from \"../utils/branding\";\nimport {\n  dirExists,\n  ensureDir,\n  fileExists,\n  writeFile,\n  readFile,\n  deleteFile,\n} from \"../utils/fs\";\nimport {\n  promptTargetSelection,\n  isValidTarget,\n  getTargetDirectories,\n  getTargetConfig,\n} from \"../utils/target\";\nimport { convertMdToMdc } from \"../utils/templates\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\nconst COMMAND_TEMPLATE = `You are a helpful assistant. Describe what this command does.\n\n## Instructions\n- Step 1: ...\n- Step 2: ...\n\n## Rules\n- Be concise\n- Focus on the task\n\nSTART: Wait for user input.\n`;\n\nconst RULE_TEMPLATE = `---\ndescription: Describe when this rule should apply\nglobs: \nalwaysApply: false\n---\n\n# Rule Title\n\nDescribe the rule behavior here.\n\n## Guidelines\n- Guideline 1\n- Guideline 2\n`;\n\nconst SKILL_TEMPLATE = `---\ndescription: Describe when this skill should be activated\nglobs:\nalwaysApply: false\n---\n\n# Skill Name\n\nBrief description of what this skill enables.\n\n## Core Capabilities\n\n- Capability 1\n- Capability 2\n\n## When to Use\n\nUse this skill when:\n- Condition 1\n- Condition 2\n\n## References\n\nFor detailed guidance, see the references folder:\n- [Reference 1](./references/example.md) - Description\n`;\n\nconst SKILL_REFERENCE_TEMPLATE = `# Reference Title\n\nDetailed reference content goes here.\n\n## Section 1\n\nContent...\n\n## Section 2\n\nContent...\n`;\n\nfunction generateSlug(name: string): string {\n  return name\n    .toLowerCase()\n    .replace(/[^a-z0-9\\s-]/g, \"\")\n    .replace(/\\s+/g, \"-\")\n    .replace(/-+/g, \"-\")\n    .trim();\n}\n\nexport const addCommand = defineCommand({\n  meta: {\n    name: \"add\",\n    description: \"Add a new command, rule, or skill\",\n  },\n  args: {\n    type: {\n      type: \"string\",\n      alias: \"t\",\n      description: \"Type: 'command', 'rule', or 'skill'\",\n    },\n    name: {\n      type: \"string\",\n      alias: \"n\",\n      description: \"Name of the command, rule, or skill\",\n    },\n    target: {\n      type: \"string\",\n      description: \"Target IDE: 'cursor', 'github-copilot', or 'google-antigravity'\",\n    },\n  },\n  async run({ args }) {\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit add \")));\n\n    let target: InstructionTarget;\n    if (isValidTarget(args.target)) {\n      target = args.target;\n    } else {\n      const selection = await promptTargetSelection();\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      target = selection;\n    }\n\n    const targetConfig = getTargetConfig(target);\n    const directories = getTargetDirectories(target);\n\n    let itemType: ItemType;\n    let itemName: string;\n\n    if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n      itemType = args.type as ItemType;\n    } else {\n      const typeResult = await p.select({\n        message: \"What do you want to add?\",\n        options: [\n          {\n            value: \"command\",\n            label: target === \"google-antigravity\" ? \"Workflow\" : \"Command\",\n            hint: target === \"google-antigravity\" ? \"A workflow template\" : \"A reusable prompt template\",\n          },\n          {\n            value: \"rule\",\n            label: \"Rule\",\n            hint: \"Project-specific AI behavior rules\",\n          },\n          {\n            value: \"skill\",\n            label: \"Skill\",\n            hint: \"Comprehensive guide with references\",\n          },\n        ],\n      });\n\n      if (p.isCancel(typeResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      itemType = typeResult as ItemType;\n    }\n\n    const itemLabel = itemType === \"command\" ? targetConfig.commandsLabel : itemType;\n\n    if (args.name) {\n      itemName = args.name;\n    } else {\n      const nameResult = await p.text({\n        message: `Enter ${itemLabel} name:`,\n        placeholder: itemType === \"command\" ? \"my-command\" : itemType === \"rule\" ? \"my-rule\" : \"my-skill\",\n        validate: (value) => {\n          if (!value.trim()) return \"Name is required\";\n          if (value.length < 2) return \"Name must be at least 2 characters\";\n          return undefined;\n        },\n      });\n\n      if (p.isCancel(nameResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      itemName = nameResult;\n    }\n\n    const slug = generateSlug(itemName);\n    const isCommand = itemType === \"command\";\n    const isSkill = itemType === \"skill\";\n    const isRule = itemType === \"rule\";\n\n    let targetPath: string;\n    let displayPath: string;\n\n    if (isSkill) {\n      targetPath = join(directories.skillsDir, slug);\n      displayPath = targetPath;\n    } else {\n      const targetDir = isCommand ? directories.commandsDir : directories.rulesDir;\n      const extension = \".md\";\n      targetPath = join(targetDir, `${slug}${extension}`);\n      displayPath = targetPath;\n    }\n\n    const getExpectedExtension = (): string => {\n      if (isSkill) return \"\";\n      if (isCommand) return targetConfig.commandsExtension;\n      return targetConfig.rulesExtension;\n    };\n\n    const checkPath = isSkill\n      ? targetPath\n      : isCommand\n        ? targetPath\n        : join(directories.rulesDir, `${slug}${getExpectedExtension()}`);\n\n    const exists = isSkill\n      ? dirExists(targetPath)\n      : fileExists(targetPath) || (!isCommand && fileExists(checkPath));\n\n    if (exists) {\n      const displayName = isSkill\n        ? slug\n        : isCommand\n          ? `${slug}.md`\n          : `${slug}${getExpectedExtension()}`;\n      const shouldOverwrite = await p.confirm({\n        message: `${highlight(displayName)} already exists. Overwrite?`,\n        initialValue: false,\n      });\n\n      if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n    }\n\n    const s = p.spinner();\n    s.start(`Creating ${itemLabel}...`);\n\n    try {\n      if (isSkill) {\n        ensureDir(targetPath);\n        ensureDir(join(targetPath, \"references\"));\n        const skillMdPath = join(targetPath, \"SKILL.md\");\n        writeFile(skillMdPath, SKILL_TEMPLATE);\n        writeFile(join(targetPath, \"references\", \"example.md\"), SKILL_REFERENCE_TEMPLATE);\n\n        if (target === \"cursor\") {\n          const skillMdcPath = join(targetPath, \"SKILL.mdc\");\n          const content = readFile(skillMdPath);\n          writeFile(skillMdcPath, content);\n          deleteFile(skillMdPath);\n        }\n      } else {\n        const targetDir = isCommand ? directories.commandsDir : directories.rulesDir;\n        ensureDir(targetDir);\n        const template = isCommand ? COMMAND_TEMPLATE : RULE_TEMPLATE;\n\n        if (isCommand) {\n          writeFile(targetPath, template);\n        } else if (isRule) {\n          writeFile(targetPath, template);\n          if (target === \"cursor\") {\n            const mdcPath = join(targetDir, convertMdToMdc(`${slug}.md`));\n            const content = readFile(targetPath);\n            writeFile(mdcPath, content);\n            deleteFile(targetPath);\n          }\n        }\n      }\n\n      s.stop(`${itemLabel.charAt(0).toUpperCase() + itemLabel.slice(1)} created`);\n\n      console.log();\n      console.log(pc.dim(\"  Target: \") + highlight(targetConfig.label));\n      if (isSkill) {\n        console.log(pc.dim(\"  Directory: \") + highlight(displayPath));\n        const skillFileName = target === \"cursor\" ? \"SKILL.mdc\" : \"SKILL.md\";\n        console.log(pc.dim(\"  Main file: \") + highlight(join(displayPath, skillFileName)));\n      } else if (isCommand) {\n        console.log(pc.dim(\"  File: \") + highlight(displayPath));\n      } else {\n        const finalPath = target === \"cursor\"\n          ? join(directories.rulesDir, convertMdToMdc(`${slug}.md`))\n          : targetPath;\n        console.log(pc.dim(\"  File: \") + highlight(finalPath));\n      }\n      console.log();\n\n      p.outro(\n        pc.green(`✨ ${itemLabel.charAt(0).toUpperCase() + itemLabel.slice(1)} created! Edit the file to customize it.`)\n      );\n    } catch (error) {\n      s.stop(\"Failed\");\n      p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      process.exit(1);\n    }\n  },\n});\n","import * as p from \"@clack/prompts\";\nimport type { InstructionTarget } from \"../types/init\";\nimport {\n  getCursorDir,\n  getCommandsDir,\n  getRulesDir,\n  getSkillsDir,\n  getCopilotInstructionsDir,\n  getCopilotCommandsDir,\n  getCopilotRulesDir,\n  getCopilotSkillsDir,\n  getAgentDir,\n  getAgentRulesDir,\n  getAgentWorkflowsDir,\n  getAgentSkillsDir,\n} from \"./fs\";\n\ninterface TargetDirectories {\n  rootDir: string;\n  commandsDir: string;\n  rulesDir: string;\n  skillsDir: string;\n}\n\ninterface TargetConfig {\n  label: string;\n  hint: string;\n  commandsLabel: string;\n  rulesLabel: string;\n  rulesExtension: string;\n  commandsExtension: string;\n}\n\nexport const TARGET_CONFIGS: Record<InstructionTarget, TargetConfig> = {\n  cursor: {\n    label: \"Cursor\",\n    hint: \".cursor/ directory\",\n    commandsLabel: \"commands\",\n    rulesLabel: \"rules\",\n    rulesExtension: \".mdc\",\n    commandsExtension: \".md\",\n  },\n  \"github-copilot\": {\n    label: \"GitHub Copilot\",\n    hint: \".github/copilot-instructions/ directory\",\n    commandsLabel: \"commands\",\n    rulesLabel: \"rules\",\n    rulesExtension: \".md\",\n    commandsExtension: \".md\",\n  },\n  \"google-antigravity\": {\n    label: \"Google AntiGravity\",\n    hint: \".agent/ directory\",\n    commandsLabel: \"workflows\",\n    rulesLabel: \"rules\",\n    rulesExtension: \".md\",\n    commandsExtension: \".md\",\n  },\n};\n\nexport async function promptTargetSelection(): Promise<InstructionTarget | symbol> {\n  return await p.select({\n    message: \"Which AI IDE are you targeting?\",\n    options: [\n      {\n        value: \"cursor\" as const,\n        label: \"Cursor\",\n        hint: \"Work with .cursor/ directory\",\n      },\n      {\n        value: \"github-copilot\" as const,\n        label: \"GitHub Copilot\",\n        hint: \"Work with .github/copilot-instructions/\",\n      },\n      {\n        value: \"google-antigravity\" as const,\n        label: \"Google AntiGravity\",\n        hint: \"Work with .agent/ directory\",\n      },\n    ],\n    initialValue: \"cursor\",\n  });\n}\n\nexport function isValidTarget(value: string | undefined): value is InstructionTarget {\n  return value === \"cursor\" || value === \"github-copilot\" || value === \"google-antigravity\";\n}\n\nexport function getTargetDirectories(\n  target: InstructionTarget,\n  cwd: string = process.cwd()\n): TargetDirectories {\n  switch (target) {\n    case \"cursor\":\n      return {\n        rootDir: getCursorDir(cwd),\n        commandsDir: getCommandsDir(cwd),\n        rulesDir: getRulesDir(cwd),\n        skillsDir: getSkillsDir(cwd),\n      };\n    case \"github-copilot\":\n      return {\n        rootDir: getCopilotInstructionsDir(cwd),\n        commandsDir: getCopilotCommandsDir(cwd),\n        rulesDir: getCopilotRulesDir(cwd),\n        skillsDir: getCopilotSkillsDir(cwd),\n      };\n    case \"google-antigravity\":\n      return {\n        rootDir: getAgentDir(cwd),\n        commandsDir: getAgentWorkflowsDir(cwd),\n        rulesDir: getAgentRulesDir(cwd),\n        skillsDir: getAgentSkillsDir(cwd),\n      };\n  }\n}\n\nexport function getTargetConfig(target: InstructionTarget): TargetConfig {\n  return TARGET_CONFIGS[target];\n}\n\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { downloadTemplate } from \"giget\";\nimport { join } from \"node:path\";\nimport type { InstructionTarget } from \"../types/init\";\nimport {\n  ensureDir,\n  listFiles,\n  listDirs,\n  writeFile,\n  readFile,\n} from \"../utils/fs\";\nimport { REPO_URL, REPO_REF } from \"../utils/constants\";\nimport { highlight, printDivider, printSuccess, printInfo } from \"../utils/branding\";\nimport {\n  promptTargetSelection,\n  isValidTarget,\n  getTargetDirectories,\n  getTargetConfig,\n} from \"../utils/target\";\nimport {\n  convertMdToMdc,\n  transformTocContentForCursor,\n  transformRuleForAntiGravity,\n  transformCommandToWorkflow,\n} from \"../utils/templates\";\n\nasync function convertPulledFilesForTarget(\n  target: InstructionTarget,\n  directories: ReturnType<typeof getTargetDirectories>\n): Promise<void> {\n  const { commandsDir, rulesDir, skillsDir } = directories;\n\n  if (target === \"cursor\") {\n    const ruleFiles = listFiles(rulesDir, \".md\");\n    for (const file of ruleFiles) {\n      const sourcePath = join(rulesDir, file);\n      const content = readFile(sourcePath);\n      const mdcFilename = convertMdToMdc(file);\n      const destPath = join(rulesDir, mdcFilename);\n\n      let transformedContent = content;\n      if (file === \"toc.md\") {\n        transformedContent = transformTocContentForCursor(content);\n      }\n\n      writeFile(destPath, transformedContent);\n\n      const { rmSync } = await import(\"node:fs\");\n      rmSync(sourcePath);\n    }\n\n    const skillDirs = listDirs(skillsDir);\n    for (const skillDir of skillDirs) {\n      const skillPath = join(skillsDir, skillDir);\n      const skillMdPath = join(skillPath, \"SKILL.md\");\n      const skillMdcPath = join(skillPath, \"SKILL.mdc\");\n\n      const { existsSync } = await import(\"node:fs\");\n      if (existsSync(skillMdPath)) {\n        const content = readFile(skillMdPath);\n        writeFile(skillMdcPath, content);\n        const { rmSync } = await import(\"node:fs\");\n        rmSync(skillMdPath);\n      }\n    }\n  } else if (target === \"google-antigravity\") {\n    const ruleFiles = listFiles(rulesDir, \".md\");\n    for (const file of ruleFiles) {\n      const sourcePath = join(rulesDir, file);\n      const content = readFile(sourcePath);\n      const transformedContent = transformRuleForAntiGravity(content, file);\n      writeFile(sourcePath, transformedContent);\n    }\n\n    const commandFiles = listFiles(commandsDir, \".md\");\n    for (const file of commandFiles) {\n      const sourcePath = join(commandsDir, file);\n      const content = readFile(sourcePath);\n      const transformedContent = transformCommandToWorkflow(content, file);\n      writeFile(sourcePath, transformedContent);\n    }\n  }\n}\n\nexport const pullCommand = defineCommand({\n  meta: {\n    name: \"pull\",\n    description: \"Pull latest updates from cursor-kit repository\",\n  },\n  args: {\n    commands: {\n      type: \"boolean\",\n      alias: \"c\",\n      description: \"Only pull commands\",\n      default: false,\n    },\n    rules: {\n      type: \"boolean\",\n      alias: \"r\",\n      description: \"Only pull rules\",\n      default: false,\n    },\n    skills: {\n      type: \"boolean\",\n      alias: \"s\",\n      description: \"Only pull skills\",\n      default: false,\n    },\n    force: {\n      type: \"boolean\",\n      alias: \"f\",\n      description: \"Force overwrite without confirmation\",\n      default: false,\n    },\n    target: {\n      type: \"string\",\n      alias: \"t\",\n      description: \"Target IDE: 'cursor', 'github-copilot', or 'google-antigravity'\",\n    },\n  },\n  async run({ args }) {\n    const pullAll = !args.commands && !args.rules && !args.skills;\n    const shouldPullCommands = pullAll || args.commands;\n    const shouldPullRules = pullAll || args.rules;\n    const shouldPullSkills = pullAll || args.skills;\n\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit pull \")));\n\n    let target: InstructionTarget;\n    if (isValidTarget(args.target)) {\n      target = args.target;\n    } else {\n      const selection = await promptTargetSelection();\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      target = selection;\n    }\n\n    const targetConfig = getTargetConfig(target);\n    const directories = getTargetDirectories(target);\n    const { rootDir, commandsDir, rulesDir, skillsDir } = directories;\n\n    const rulesExtension = target === \"cursor\" ? \".mdc\" : \".md\";\n    const existingCommands = listFiles(commandsDir, \".md\");\n    const existingRules = listFiles(rulesDir, rulesExtension);\n    const existingSkills = listDirs(skillsDir);\n    const hasExisting = existingCommands.length > 0 || existingRules.length > 0 || existingSkills.length > 0;\n\n    console.log(pc.dim(`  Target: ${highlight(targetConfig.label)}`));\n    console.log();\n\n    if (hasExisting && !args.force) {\n      printInfo(\"Current status:\");\n      if (existingCommands.length > 0) {\n        console.log(pc.dim(`  ${targetConfig.commandsLabel}: ${existingCommands.length} files`));\n      }\n      if (existingRules.length > 0) {\n        console.log(pc.dim(`  ${targetConfig.rulesLabel}: ${existingRules.length} files`));\n      }\n      if (existingSkills.length > 0) {\n        console.log(pc.dim(`  Skills: ${existingSkills.length} directories`));\n      }\n      console.log();\n\n      const shouldContinue = await p.confirm({\n        message: \"This will merge with existing files. Continue?\",\n        initialValue: true,\n      });\n\n      if (p.isCancel(shouldContinue) || !shouldContinue) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n    }\n\n    const s = p.spinner();\n\n    try {\n      ensureDir(rootDir);\n\n      if (shouldPullCommands) {\n        s.start(`Pulling ${targetConfig.commandsLabel}...`);\n        await downloadTemplate(`${REPO_URL}/templates/commands#${REPO_REF}`, {\n          dir: commandsDir,\n          force: true,\n        });\n        s.stop(`${targetConfig.commandsLabel.charAt(0).toUpperCase() + targetConfig.commandsLabel.slice(1)} updated`);\n      }\n\n      if (shouldPullRules) {\n        s.start(`Pulling ${targetConfig.rulesLabel}...`);\n        await downloadTemplate(`${REPO_URL}/templates/rules#${REPO_REF}`, {\n          dir: rulesDir,\n          force: true,\n        });\n        s.stop(`${targetConfig.rulesLabel.charAt(0).toUpperCase() + targetConfig.rulesLabel.slice(1)} updated`);\n      }\n\n      if (shouldPullSkills) {\n        s.start(\"Pulling skills...\");\n        await downloadTemplate(`${REPO_URL}/templates/skills#${REPO_REF}`, {\n          dir: skillsDir,\n          force: true,\n        });\n        s.stop(\"Skills updated\");\n      }\n\n      if (target !== \"github-copilot\") {\n        s.start(\"Converting files for target...\");\n        await convertPulledFilesForTarget(target, directories);\n        s.stop(\"Files converted\");\n      }\n\n      printDivider();\n      console.log();\n\n      const newRulesExtension = target === \"cursor\" ? \".mdc\" : \".md\";\n      const newCommands = listFiles(commandsDir, \".md\");\n      const newRules = listFiles(rulesDir, newRulesExtension);\n      const newSkills = listDirs(skillsDir);\n\n      if (shouldPullCommands) {\n        const added = newCommands.length - existingCommands.length;\n        printSuccess(\n          `${targetConfig.commandsLabel.charAt(0).toUpperCase() + targetConfig.commandsLabel.slice(1)}: ${highlight(newCommands.length.toString())} total` +\n            (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n        );\n      }\n\n      if (shouldPullRules) {\n        const added = newRules.length - existingRules.length;\n        printSuccess(\n          `${targetConfig.rulesLabel.charAt(0).toUpperCase() + targetConfig.rulesLabel.slice(1)}: ${highlight(newRules.length.toString())} total` +\n            (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n        );\n      }\n\n      if (shouldPullSkills) {\n        const added = newSkills.length - existingSkills.length;\n        printSuccess(\n          `Skills: ${highlight(newSkills.length.toString())} total` +\n            (added > 0 ? pc.green(` (+${added} new)`) : \"\")\n        );\n      }\n\n      console.log();\n      p.outro(pc.green(`✨ Successfully pulled latest updates for ${targetConfig.label}!`));\n    } catch (error) {\n      s.stop(\"Failed\");\n      p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      process.exit(1);\n    }\n  },\n});\n","import * as p from \"@clack/prompts\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"node:path\";\nimport pc from \"picocolors\";\nimport { highlight, printDivider } from \"../utils/branding\";\nimport {\n  fileExists,\n  getCommandsDir,\n  getRulesDir,\n  getSkillsDir,\n  listDirs,\n  listFiles,\n  readFile,\n} from \"../utils/fs\";\n\ninterface ItemInfo {\n  name: string;\n  path: string;\n  description?: string;\n}\n\nfunction extractDescription(\n  content: string,\n  isCommand: boolean\n): string | undefined {\n  if (isCommand) {\n    const firstLine = content.trim().split(\"\\n\")[0];\n    if (\n      firstLine &&\n      !firstLine.startsWith(\"#\") &&\n      !firstLine.startsWith(\"---\")\n    ) {\n      return firstLine.slice(0, 60) + (firstLine.length > 60 ? \"...\" : \"\");\n    }\n  } else {\n    const match = content.match(/description:\\s*(.+)/);\n    if (match) {\n      return match[1].trim().slice(0, 60) + (match[1].length > 60 ? \"...\" : \"\");\n    }\n  }\n  return undefined;\n}\n\nfunction getItems(\n  dir: string,\n  extension: string,\n  isCommand: boolean\n): ItemInfo[] {\n  const files = listFiles(dir, extension);\n  return files.map((file) => {\n    const filePath = join(dir, file);\n    const content = fileExists(filePath) ? readFile(filePath) : \"\";\n    return {\n      name: file.replace(extension, \"\"),\n      path: filePath,\n      description: extractDescription(content, isCommand),\n    };\n  });\n}\n\nfunction getSkills(dir: string): ItemInfo[] {\n  const skillDirs = listDirs(dir);\n  return skillDirs.map((skillName) => {\n    const skillPath = join(dir, skillName);\n    const skillFile = join(skillPath, \"SKILL.mdc\");\n    const altSkillFile = join(skillPath, \"SKILL.md\");\n\n    let description: string | undefined;\n\n    if (fileExists(skillFile)) {\n      const content = readFile(skillFile);\n      description = extractDescription(content, false);\n    } else if (fileExists(altSkillFile)) {\n      const content = readFile(altSkillFile);\n      description = extractDescription(content, false);\n    }\n\n    return {\n      name: skillName,\n      path: skillPath,\n      description,\n    };\n  });\n}\n\nexport const listCommand = defineCommand({\n  meta: {\n    name: \"list\",\n    description: \"List all commands, rules, and skills\",\n  },\n  args: {\n    commands: {\n      type: \"boolean\",\n      alias: \"c\",\n      description: \"Only list commands\",\n      default: false,\n    },\n    rules: {\n      type: \"boolean\",\n      alias: \"r\",\n      description: \"Only list rules\",\n      default: false,\n    },\n    skills: {\n      type: \"boolean\",\n      alias: \"s\",\n      description: \"Only list skills\",\n      default: false,\n    },\n    verbose: {\n      type: \"boolean\",\n      alias: \"v\",\n      description: \"Show full file paths\",\n      default: false,\n    },\n  },\n  async run({ args }) {\n    const listAll = !args.commands && !args.rules && !args.skills;\n    const shouldListCommands = listAll || args.commands;\n    const shouldListRules = listAll || args.rules;\n    const shouldListSkills = listAll || args.skills;\n\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit list \")));\n\n    const commandsDir = getCommandsDir();\n    const rulesDir = getRulesDir();\n    const skillsDir = getSkillsDir();\n\n    const commands = shouldListCommands\n      ? getItems(commandsDir, \".md\", true)\n      : [];\n    const rules = shouldListRules ? getItems(rulesDir, \".mdc\", false) : [];\n    const skills = shouldListSkills ? getSkills(skillsDir) : [];\n\n    if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n      console.log();\n      console.log(pc.yellow(\"  No commands, rules, or skills found.\"));\n      console.log(\n        pc.dim(\"  Run \") +\n          highlight(\"cursor-kit init\") +\n          pc.dim(\" to get started.\")\n      );\n      console.log();\n      p.outro(pc.dim(\"Nothing to show\"));\n      return;\n    }\n\n    printDivider();\n\n    if (shouldListCommands && commands.length > 0) {\n      console.log();\n      console.log(\n        pc.bold(pc.cyan(\"  📜 Commands\")) + pc.dim(` (${commands.length})`)\n      );\n      console.log();\n\n      commands.forEach((cmd) => {\n        console.log(`  ${pc.green(\"●\")} ${highlight(cmd.name)}`);\n        if (cmd.description) {\n          console.log(pc.dim(`    ${cmd.description}`));\n        }\n        if (args.verbose) {\n          console.log(pc.dim(`    ${cmd.path}`));\n        }\n      });\n    }\n\n    if (shouldListRules && rules.length > 0) {\n      console.log();\n      console.log(\n        pc.bold(pc.cyan(\"  📋 Rules\")) + pc.dim(` (${rules.length})`)\n      );\n      console.log();\n\n      rules.forEach((rule) => {\n        console.log(`  ${pc.green(\"●\")} ${highlight(rule.name)}`);\n        if (rule.description) {\n          console.log(pc.dim(`    ${rule.description}`));\n        }\n        if (args.verbose) {\n          console.log(pc.dim(`    ${rule.path}`));\n        }\n      });\n    }\n\n    if (shouldListSkills && skills.length > 0) {\n      console.log();\n      console.log(\n        pc.bold(pc.cyan(\"  🎯 Skills\")) + pc.dim(` (${skills.length})`)\n      );\n      console.log();\n\n      skills.forEach((skill) => {\n        console.log(`  ${pc.green(\"●\")} ${highlight(skill.name)}`);\n        if (skill.description) {\n          console.log(pc.dim(`    ${skill.description}`));\n        }\n        if (args.verbose) {\n          console.log(pc.dim(`    ${skill.path}`));\n        }\n      });\n    }\n\n    console.log();\n    printDivider();\n\n    const total = commands.length + rules.length + skills.length;\n    p.outro(pc.dim(`Total: ${total} item${total !== 1 ? \"s\" : \"\"}`));\n  },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { join } from \"node:path\";\nimport type { InstructionTarget } from \"../types/init\";\nimport {\n  listFiles,\n  listDirs,\n  removeFile,\n  fileExists,\n  dirExists,\n} from \"../utils/fs\";\nimport { highlight, printSuccess } from \"../utils/branding\";\nimport {\n  promptTargetSelection,\n  isValidTarget,\n  getTargetDirectories,\n  getTargetConfig,\n} from \"../utils/target\";\n\ntype ItemType = \"command\" | \"rule\" | \"skill\";\n\ninterface SelectOption {\n  value: string;\n  label: string;\n  hint?: string;\n}\n\nexport const removeCommand = defineCommand({\n  meta: {\n    name: \"remove\",\n    description: \"Remove a command, rule, or skill\",\n  },\n  args: {\n    type: {\n      type: \"string\",\n      alias: \"t\",\n      description: \"Type: 'command', 'rule', or 'skill'\",\n    },\n    name: {\n      type: \"string\",\n      alias: \"n\",\n      description: \"Name of the command, rule, or skill to remove\",\n    },\n    force: {\n      type: \"boolean\",\n      alias: \"f\",\n      description: \"Skip confirmation\",\n      default: false,\n    },\n    target: {\n      type: \"string\",\n      description: \"Target IDE: 'cursor', 'github-copilot', or 'google-antigravity'\",\n    },\n  },\n  async run({ args }) {\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit remove \")));\n\n    let target: InstructionTarget;\n    if (isValidTarget(args.target)) {\n      target = args.target;\n    } else {\n      const selection = await promptTargetSelection();\n      if (p.isCancel(selection)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n      target = selection;\n    }\n\n    const targetConfig = getTargetConfig(target);\n    const directories = getTargetDirectories(target);\n    const { commandsDir, rulesDir, skillsDir } = directories;\n\n    const rulesExtension = targetConfig.rulesExtension;\n    const commands = listFiles(commandsDir, \".md\").map((f) => f.replace(\".md\", \"\"));\n    const rules = listFiles(rulesDir, rulesExtension).map((f) => f.replace(rulesExtension, \"\"));\n    const skills = listDirs(skillsDir);\n\n    console.log(pc.dim(`  Target: ${highlight(targetConfig.label)}`));\n    console.log();\n\n    if (commands.length === 0 && rules.length === 0 && skills.length === 0) {\n      console.log();\n      console.log(pc.yellow(`  No ${targetConfig.commandsLabel}, ${targetConfig.rulesLabel}, or skills to remove.`));\n      console.log();\n      p.outro(pc.dim(\"Nothing to do\"));\n      return;\n    }\n\n    let itemType: ItemType;\n    let itemName: string;\n\n    if (args.type && [\"command\", \"rule\", \"skill\"].includes(args.type)) {\n      itemType = args.type as ItemType;\n    } else {\n      const typeOptions: SelectOption[] = [];\n\n      if (commands.length > 0) {\n        typeOptions.push({\n          value: \"command\",\n          label: target === \"google-antigravity\" ? \"Workflow\" : \"Command\",\n          hint: `${commands.length} available`,\n        });\n      }\n\n      if (rules.length > 0) {\n        typeOptions.push({\n          value: \"rule\",\n          label: \"Rule\",\n          hint: `${rules.length} available`,\n        });\n      }\n\n      if (skills.length > 0) {\n        typeOptions.push({\n          value: \"skill\",\n          label: \"Skill\",\n          hint: `${skills.length} available`,\n        });\n      }\n\n      const typeResult = await p.select({\n        message: \"What do you want to remove?\",\n        options: typeOptions,\n      });\n\n      if (p.isCancel(typeResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      itemType = typeResult as ItemType;\n    }\n\n    const isCommand = itemType === \"command\";\n    const isRule = itemType === \"rule\";\n    const isSkill = itemType === \"skill\";\n    const items = isCommand ? commands : isRule ? rules : skills;\n    const dir = isCommand ? commandsDir : isRule ? rulesDir : skillsDir;\n    const extension = isCommand ? \".md\" : isRule ? rulesExtension : \"\";\n    const itemLabel = isCommand ? targetConfig.commandsLabel : itemType;\n\n    if (items.length === 0) {\n      p.cancel(`No ${itemLabel}s found`);\n      process.exit(0);\n    }\n\n    if (args.name && items.includes(args.name)) {\n      itemName = args.name;\n    } else {\n      const itemOptions: SelectOption[] = items.map((item) => ({\n        value: item,\n        label: item,\n      }));\n\n      const nameResult = await p.select({\n        message: `Select ${itemLabel} to remove:`,\n        options: itemOptions,\n      });\n\n      if (p.isCancel(nameResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      itemName = nameResult as string;\n    }\n\n    const targetPath = isSkill\n      ? join(dir, itemName)\n      : join(dir, `${itemName}${extension}`);\n\n    const exists = isSkill ? dirExists(targetPath) : fileExists(targetPath);\n\n    if (!exists) {\n      p.cancel(`${itemLabel} '${itemName}' not found`);\n      process.exit(1);\n    }\n\n    if (!args.force) {\n      const displayName = isSkill ? itemName : itemName + extension;\n      const shouldDelete = await p.confirm({\n        message: `Are you sure you want to delete ${highlight(displayName)}?${isSkill ? \" (This will remove the entire skill directory)\" : \"\"}`,\n        initialValue: false,\n      });\n\n      if (p.isCancel(shouldDelete) || !shouldDelete) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n    }\n\n    try {\n      removeFile(targetPath);\n      const displayName = isSkill ? itemName : itemName + extension;\n      console.log();\n      printSuccess(`Removed ${highlight(displayName)} from ${targetConfig.label}`);\n      console.log();\n      p.outro(pc.green(\"✨ Done!\"));\n    } catch (error) {\n      p.cancel(`Error: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      process.exit(1);\n    }\n  },\n});\n","import { defineCommand } from \"citty\";\nimport * as p from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { spawn } from \"node:child_process\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { existsSync, chmodSync, readdirSync } from \"node:fs\";\nimport { highlight, printDivider, printSuccess, printInfo, printWarning } from \"../utils/branding\";\nimport {\n  createAlias,\n  removeAlias,\n  getAliasForInstance,\n  aliasExists,\n  generateAliasName,\n  getStorageLocationLabel,\n  isHomeBinInPath,\n  getPathSetupInstructions,\n  detectShellConfigPath,\n  type AliasStorageLocation,\n} from \"../utils/alias\";\n\ntype InstanceAction = \"create\" | \"remove\" | \"reinstall\" | \"alias\";\n\ninterface InstanceInfo {\n  name: string;\n  path: string;\n  alias?: string;\n}\n\nfunction getBinPath(): string {\n  const currentDir = dirname(fileURLToPath(import.meta.url));\n  const possiblePaths = [\n    join(currentDir, \"..\", \"..\", \"bin\"),\n    join(currentDir, \"..\", \"bin\"),\n  ];\n\n  for (const binPath of possiblePaths) {\n    if (existsSync(binPath)) {\n      return binPath;\n    }\n  }\n\n  return possiblePaths[0];\n}\n\nfunction ensureExecutable(scriptPath: string): void {\n  try {\n    chmodSync(scriptPath, 0o755);\n  } catch {\n    // Ignore permission errors\n  }\n}\n\nfunction getExistingInstances(): InstanceInfo[] {\n  const userAppsDir = join(process.env.HOME ?? \"\", \"Applications\");\n  if (!existsSync(userAppsDir)) return [];\n\n  try {\n    const apps = readdirSync(userAppsDir);\n    return apps\n      .filter((app) => app.startsWith(\"Cursor\") && app.endsWith(\".app\") && app !== \"Cursor.app\")\n      .map((app) => {\n        const name = app.replace(\".app\", \"\");\n        const aliasEntry = getAliasForInstance(name);\n        return {\n          name,\n          path: join(userAppsDir, app),\n          alias: aliasEntry?.aliasName,\n        };\n      });\n  } catch {\n    return [];\n  }\n}\n\nfunction runScript(scriptPath: string, args: string[]): Promise<number> {\n  return new Promise((resolve) => {\n    ensureExecutable(scriptPath);\n\n    const child = spawn(scriptPath, args, {\n      stdio: \"inherit\",\n    });\n\n    child.on(\"close\", (code) => {\n      resolve(code ?? 1);\n    });\n\n    child.on(\"error\", () => {\n      resolve(1);\n    });\n  });\n}\n\nasync function promptAliasCreation(\n  instanceName: string,\n  providedAlias?: string,\n  providedLocation?: string,\n  skipConfirmation?: boolean\n): Promise<{ aliasName: string; location: AliasStorageLocation } | null> {\n  if (!skipConfirmation) {\n    const shouldCreateAlias = await p.confirm({\n      message: \"Would you like to create a shell alias for this instance?\",\n      initialValue: true,\n    });\n\n    if (p.isCancel(shouldCreateAlias) || !shouldCreateAlias) {\n      return null;\n    }\n  }\n\n  let aliasName: string;\n  const suggestedAlias = generateAliasName(instanceName);\n\n  if (providedAlias) {\n    aliasName = providedAlias;\n  } else {\n    const aliasResult = await p.text({\n      message: \"Enter alias name:\",\n      placeholder: suggestedAlias,\n      initialValue: suggestedAlias,\n      validate: (value) => {\n        if (!value.trim()) return \"Alias name is required\";\n        if (!/^[a-z0-9-]+$/.test(value)) return \"Alias must contain only lowercase letters, numbers, and hyphens\";\n        if (aliasExists(value)) return `Alias \"${value}\" already exists`;\n        return undefined;\n      },\n    });\n\n    if (p.isCancel(aliasResult)) {\n      return null;\n    }\n\n    aliasName = aliasResult;\n  }\n\n  let location: AliasStorageLocation;\n\n  if (providedLocation && [\"shell-config\", \"usr-local-bin\", \"home-bin\"].includes(providedLocation)) {\n    location = providedLocation as AliasStorageLocation;\n  } else {\n    const locationResult = await p.select({\n      message: \"Where should the alias be stored?\",\n      options: [\n        {\n          value: \"shell-config\" as AliasStorageLocation,\n          label: \"Shell config\",\n          hint: detectShellConfigPath(),\n        },\n        {\n          value: \"home-bin\" as AliasStorageLocation,\n          label: \"~/bin\",\n          hint: \"User-local executable scripts\",\n        },\n        {\n          value: \"usr-local-bin\" as AliasStorageLocation,\n          label: \"/usr/local/bin\",\n          hint: \"System-wide (may require sudo)\",\n        },\n      ],\n    });\n\n    if (p.isCancel(locationResult)) {\n      return null;\n    }\n\n    location = locationResult as AliasStorageLocation;\n  }\n\n  return { aliasName, location };\n}\n\nasync function handleAliasCreation(\n  instanceName: string,\n  aliasName: string,\n  location: AliasStorageLocation\n): Promise<boolean> {\n  const result = createAlias({\n    aliasName,\n    instanceName,\n    storageLocation: location,\n  });\n\n  if (!result.success) {\n    printWarning(`Failed to create alias: ${result.error}`);\n    return false;\n  }\n\n  console.log();\n  printSuccess(`Alias ${highlight(aliasName)} created!`);\n  console.log(pc.dim(`  └─ Location: ${getStorageLocationLabel(location)}`));\n\n  if (location === \"home-bin\" && !isHomeBinInPath()) {\n    console.log();\n    printWarning(\"~/bin is not in your PATH\");\n    console.log(pc.dim(getPathSetupInstructions()));\n  }\n\n  if (location === \"shell-config\") {\n    console.log();\n    console.log(pc.dim(\"  Restart your terminal or run:\"));\n    console.log(pc.dim(`  source ${detectShellConfigPath()}`));\n  }\n\n  console.log();\n  console.log(pc.dim(\"  Usage:\"));\n  console.log(pc.dim(`  ${aliasName} .              # Open current directory`));\n  console.log(pc.dim(`  ${aliasName} /path/to/dir   # Open specific directory`));\n\n  return true;\n}\n\nasync function handleAliasRemoval(instanceName: string): Promise<void> {\n  const aliasEntry = getAliasForInstance(instanceName);\n\n  if (!aliasEntry) {\n    return;\n  }\n\n  const shouldRemove = await p.confirm({\n    message: `Remove associated alias \"${aliasEntry.aliasName}\"?`,\n    initialValue: true,\n  });\n\n  if (p.isCancel(shouldRemove) || !shouldRemove) {\n    return;\n  }\n\n  const removed = removeAlias(aliasEntry.aliasName);\n\n  if (removed) {\n    printSuccess(`Alias ${highlight(aliasEntry.aliasName)} removed`);\n  } else {\n    printWarning(`Could not remove alias ${aliasEntry.aliasName}`);\n  }\n}\n\nasync function handleAliasAction(\n  instanceName: string,\n  providedAlias?: string,\n  providedLocation?: string\n): Promise<void> {\n  const existingAlias = getAliasForInstance(instanceName);\n\n  if (existingAlias) {\n    console.log();\n    printInfo(`Instance ${highlight(instanceName)} already has alias: ${highlight(existingAlias.aliasName)}`);\n    console.log(pc.dim(`  └─ Location: ${getStorageLocationLabel(existingAlias.storageLocation)}`));\n    console.log();\n\n    const updateChoice = await p.select({\n      message: \"What would you like to do?\",\n      options: [\n        {\n          value: \"update\",\n          label: \"Update alias\",\n          hint: \"Change alias name or location\",\n        },\n        {\n          value: \"remove\",\n          label: \"Remove alias\",\n          hint: \"Delete the existing alias\",\n        },\n        {\n          value: \"keep\",\n          label: \"Keep current alias\",\n          hint: \"No changes\",\n        },\n      ],\n    });\n\n    if (p.isCancel(updateChoice) || updateChoice === \"keep\") {\n      p.outro(pc.dim(\"No changes made\"));\n      return;\n    }\n\n    if (updateChoice === \"remove\") {\n      const removed = removeAlias(existingAlias.aliasName);\n      if (removed) {\n        console.log();\n        printSuccess(`Alias ${highlight(existingAlias.aliasName)} removed`);\n        console.log();\n        p.outro(pc.green(\"✨ Done!\"));\n      } else {\n        printWarning(`Could not remove alias ${existingAlias.aliasName}`);\n        p.outro(pc.yellow(\"Check file permissions\"));\n      }\n      return;\n    }\n\n    // Update: remove old alias first\n    removeAlias(existingAlias.aliasName);\n  }\n\n  // Create new alias (skip confirmation since user already chose alias action)\n  const aliasConfig = await promptAliasCreation(\n    instanceName,\n    providedAlias,\n    providedLocation,\n    true\n  );\n\n  if (!aliasConfig) {\n    p.outro(pc.dim(\"Alias creation cancelled\"));\n    return;\n  }\n\n  const success = await handleAliasCreation(instanceName, aliasConfig.aliasName, aliasConfig.location);\n\n  if (success) {\n    console.log();\n    p.outro(pc.green(\"✨ Done!\"));\n  } else {\n    p.outro(pc.yellow(\"Alias creation failed\"));\n  }\n}\n\nexport const instanceCommand = defineCommand({\n  meta: {\n    name: \"instance\",\n    description: \"Manage Cursor IDE instances for multi-account login (macOS only)\",\n  },\n  args: {\n    action: {\n      type: \"string\",\n      alias: \"a\",\n      description: \"Action: 'create', 'reinstall', 'remove', or 'alias'\",\n    },\n    name: {\n      type: \"string\",\n      alias: \"n\",\n      description: \"Name of the instance (e.g. 'Cursor Enterprise')\",\n    },\n    list: {\n      type: \"boolean\",\n      alias: \"l\",\n      description: \"List existing Cursor instances\",\n      default: false,\n    },\n    alias: {\n      type: \"string\",\n      alias: \"A\",\n      description: \"Shell alias name for the instance (e.g. 'cursor-work')\",\n    },\n    aliasLocation: {\n      type: \"string\",\n      description: \"Alias storage location: 'shell-config', 'usr-local-bin', or 'home-bin'\",\n    },\n    skipAlias: {\n      type: \"boolean\",\n      description: \"Skip alias creation prompt\",\n      default: false,\n    },\n  },\n  async run({ args }) {\n    p.intro(pc.bgCyan(pc.black(\" cursor-kit instance \")));\n\n    // OS check\n    if (process.platform !== \"darwin\") {\n      console.log();\n      printWarning(\"This command only works on macOS.\");\n      console.log(pc.dim(\"  Cursor instance management requires macOS-specific features.\"));\n      console.log();\n      p.outro(pc.dim(\"Exiting\"));\n      process.exit(1);\n    }\n\n    // List mode\n    if (args.list) {\n      const instances = getExistingInstances();\n      printDivider();\n      console.log();\n\n      if (instances.length === 0) {\n        printInfo(\"No custom Cursor instances found.\");\n        console.log(pc.dim(\"  Run \") + highlight(\"cursor-kit instance\") + pc.dim(\" to create one.\"));\n      } else {\n        console.log(pc.bold(pc.cyan(\"  🖥  Cursor Instances\")) + pc.dim(` (${instances.length})`));\n        console.log();\n        for (const instance of instances) {\n          const aliasInfo = instance.alias ? pc.dim(` (alias: ${pc.cyan(instance.alias)})`) : \"\";\n          console.log(`  ${pc.green(\"●\")} ${highlight(instance.name)}${aliasInfo}`);\n          console.log(pc.dim(`    └─ ${instance.path}`));\n        }\n      }\n\n      console.log();\n      printDivider();\n      p.outro(pc.dim(`Total: ${instances.length} instance${instances.length !== 1 ? \"s\" : \"\"}`));\n      return;\n    }\n\n    // Get existing instances for context (needed for alias action before prerequisites)\n    const existingInstances = getExistingInstances();\n\n    // Handle alias action early (doesn't need instance scripts)\n    if (args.action === \"alias\") {\n      if (existingInstances.length === 0) {\n        console.log();\n        printInfo(\"No custom Cursor instances found.\");\n        console.log(pc.dim(\"  Create an instance first with: \") + highlight(\"cursor-kit instance -a create\"));\n        console.log();\n        p.outro(pc.dim(\"Nothing to do\"));\n        return;\n      }\n\n      let instanceName: string;\n\n      if (args.name) {\n        const found = existingInstances.find((i) => i.name === args.name);\n        if (!found) {\n          printWarning(`Instance \"${args.name}\" not found.`);\n          console.log(pc.dim(\"  Available instances:\"));\n          for (const inst of existingInstances) {\n            console.log(pc.dim(`    • ${inst.name}`));\n          }\n          console.log();\n          p.outro(pc.dim(\"Nothing to do\"));\n          return;\n        }\n        instanceName = args.name;\n      } else {\n        const instanceResult = await p.select({\n          message: \"Select instance to manage alias:\",\n          options: existingInstances.map((inst) => ({\n            value: inst.name,\n            label: inst.alias ? `${inst.name} (alias: ${inst.alias})` : inst.name,\n            hint: inst.alias ? \"Has alias\" : \"No alias\",\n          })),\n        });\n\n        if (p.isCancel(instanceResult)) {\n          p.cancel(\"Operation cancelled\");\n          process.exit(0);\n        }\n\n        instanceName = instanceResult as string;\n      }\n\n      await handleAliasAction(instanceName, args.alias, args.aliasLocation);\n      return;\n    }\n\n    const s = p.spinner();\n\n    // Check prerequisites (only for create/remove/reinstall)\n    s.start(\"Checking prerequisites...\");\n    const binPath = getBinPath();\n    const createScript = join(binPath, \"cursor-new-instance\");\n    const removeScript = join(binPath, \"cursor-remove-instance\");\n    const reinstallScript = join(binPath, \"cursor-reinstall-instance.sh\");\n\n    const scriptsExist = existsSync(createScript) && existsSync(removeScript) && existsSync(reinstallScript);\n    if (!scriptsExist) {\n      s.stop(\"Prerequisites check failed\");\n      console.log();\n      printWarning(\"Required scripts not found.\");\n      console.log(pc.dim(`  Expected at: ${binPath}`));\n      console.log();\n      p.outro(pc.red(\"Installation may be corrupted\"));\n      process.exit(1);\n    }\n\n    const originalCursor = \"/Applications/Cursor.app\";\n    if (!existsSync(originalCursor)) {\n      s.stop(\"Prerequisites check failed\");\n      console.log();\n      printWarning(\"Cursor.app not found in /Applications\");\n      console.log(pc.dim(\"  Please install Cursor IDE first.\"));\n      console.log();\n      p.outro(pc.red(\"Cursor IDE required\"));\n      process.exit(1);\n    }\n\n    s.stop(\"Prerequisites verified\");\n\n    let action: InstanceAction;\n    let instanceName: string;\n\n    // Determine action\n    if (args.action && [\"create\", \"remove\", \"reinstall\"].includes(args.action)) {\n      action = args.action as InstanceAction;\n    } else {\n      const actionResult = await p.select({\n        message: \"What would you like to do?\",\n        options: [\n          {\n            value: \"create\",\n            label: \"Create new instance\",\n            hint: \"Clone Cursor with separate identity\",\n          },\n          {\n            value: \"alias\",\n            label: \"Manage alias\",\n            hint: existingInstances.length > 0\n              ? \"Add or update shell alias for instance\"\n              : \"No instances available\",\n          },\n          {\n            value: \"reinstall\",\n            label: \"Reinstall instance\",\n            hint: existingInstances.length > 0\n              ? \"Fix broken instance after Cursor update\"\n              : \"No instances to reinstall\",\n          },\n          {\n            value: \"remove\",\n            label: \"Remove instance\",\n            hint: existingInstances.length > 0\n              ? `${existingInstances.length} instance${existingInstances.length !== 1 ? \"s\" : \"\"} available`\n              : \"No instances to remove\",\n          },\n        ],\n      });\n\n      if (p.isCancel(actionResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      action = actionResult as InstanceAction;\n\n      // Handle alias action if selected from menu\n      if (action === \"alias\") {\n        if (existingInstances.length === 0) {\n          console.log();\n          printInfo(\"No custom Cursor instances found.\");\n          console.log(pc.dim(\"  Create an instance first.\"));\n          console.log();\n          p.outro(pc.dim(\"Nothing to do\"));\n          return;\n        }\n\n        const instanceResult = await p.select({\n          message: \"Select instance to manage alias:\",\n          options: existingInstances.map((inst) => ({\n            value: inst.name,\n            label: inst.alias ? `${inst.name} (alias: ${inst.alias})` : inst.name,\n            hint: inst.alias ? \"Has alias\" : \"No alias\",\n          })),\n        });\n\n        if (p.isCancel(instanceResult)) {\n          p.cancel(\"Operation cancelled\");\n          process.exit(0);\n        }\n\n        await handleAliasAction(instanceResult as string, args.alias, args.aliasLocation);\n        return;\n      }\n    }\n\n    // Get instance name\n    if (args.name) {\n      instanceName = args.name;\n    } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length > 0) {\n      // For remove/reinstall actions, show existing instances to select from\n      const actionLabel = action === \"remove\" ? \"remove\" : \"reinstall\";\n      const instanceResult = await p.select({\n        message: `Select instance to ${actionLabel}:`,\n        options: existingInstances.map((inst) => ({\n          value: inst.name,\n          label: inst.alias ? `${inst.name} (alias: ${inst.alias})` : inst.name,\n          hint: inst.path,\n        })),\n      });\n\n      if (p.isCancel(instanceResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      instanceName = instanceResult as string;\n    } else if ((action === \"remove\" || action === \"reinstall\") && existingInstances.length === 0) {\n      console.log();\n      printInfo(`No custom Cursor instances found to ${action}.`);\n      console.log();\n      p.outro(pc.dim(\"Nothing to do\"));\n      return;\n    } else {\n      // For create action, prompt for name\n      const nameResult = await p.text({\n        message: \"Enter a name for the new instance:\",\n        placeholder: \"Cursor Enterprise\",\n        validate: (value) => {\n          if (!value.trim()) return \"Instance name is required\";\n          if (value.length < 2) return \"Name must be at least 2 characters\";\n          const existing = existingInstances.find(\n            (i) => i.name.toLowerCase() === value.toLowerCase()\n          );\n          if (existing) return `Instance \"${value}\" already exists`;\n          return undefined;\n        },\n      });\n\n      if (p.isCancel(nameResult)) {\n        p.cancel(\"Operation cancelled\");\n        process.exit(0);\n      }\n\n      instanceName = nameResult;\n    }\n\n    // Show summary\n    printDivider();\n    console.log();\n    console.log(pc.bold(pc.cyan(\"  📋 Summary\")));\n    console.log();\n    const actionColor = action === \"create\" ? pc.green : action === \"reinstall\" ? pc.blue : pc.yellow;\n    const actionLabel = action === \"create\" ? \"Create\" : action === \"reinstall\" ? \"Reinstall\" : \"Remove\";\n    console.log(`  ${pc.dim(\"Action:\")}    ${actionColor(actionLabel)}`);\n    console.log(`  ${pc.dim(\"Instance:\")}  ${highlight(instanceName)}`);\n\n    if (action === \"create\" || action === \"reinstall\") {\n      const slug = instanceName.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n      console.log(`  ${pc.dim(\"Bundle ID:\")} ${pc.dim(\"com.cursor.\")}${highlight(slug)}`);\n      console.log(`  ${pc.dim(\"Location:\")}  ${pc.dim(\"~/Applications/\")}${highlight(instanceName + \".app\")}`);\n      if (action === \"reinstall\") {\n        const dataDir = join(process.env.HOME ?? \"\", \"Library\", \"Application Support\", instanceName.replace(/ /g, \"\"));\n        console.log(`  ${pc.dim(\"Data:\")}      ${pc.green(\"✓\")} ${pc.dim(\"Preserved at\")} ${pc.dim(dataDir)}`);\n      }\n    } else {\n      const targetPath = join(process.env.HOME ?? \"\", \"Applications\", `${instanceName}.app`);\n      console.log(`  ${pc.dim(\"Path:\")}      ${pc.dim(targetPath)}`);\n\n      const aliasEntry = getAliasForInstance(instanceName);\n      if (aliasEntry) {\n        console.log(`  ${pc.dim(\"Alias:\")}     ${pc.yellow(aliasEntry.aliasName)} ${pc.dim(\"(will be removed)\")}`);\n      }\n    }\n\n    console.log();\n    printDivider();\n    console.log();\n\n    const shouldContinue = await p.confirm({\n      message: action === \"create\"\n        ? \"Create this Cursor instance?\"\n        : action === \"reinstall\"\n        ? \"Reinstall this instance? (User data will be preserved)\"\n        : \"Remove this Cursor instance? This cannot be undone.\",\n      initialValue: action !== \"remove\",\n    });\n\n    if (p.isCancel(shouldContinue) || !shouldContinue) {\n      p.cancel(\"Operation cancelled\");\n      process.exit(0);\n    }\n\n    // Execute script\n    console.log();\n    printDivider();\n    console.log();\n\n    const scriptPath = action === \"create\" \n      ? createScript \n      : action === \"reinstall\"\n      ? reinstallScript\n      : removeScript;\n    // Pass --yes to remove/reinstall scripts since we already confirmed in the CLI\n    const scriptArgs = action === \"remove\" || action === \"reinstall\" \n      ? [\"--yes\", instanceName] \n      : [instanceName];\n    const exitCode = await runScript(scriptPath, scriptArgs);\n\n    console.log();\n    printDivider();\n    console.log();\n\n    if (exitCode === 0) {\n      if (action === \"create\") {\n        printSuccess(`Instance ${highlight(instanceName)} created successfully!`);\n\n        // Offer alias creation\n        if (!args.skipAlias) {\n          console.log();\n\n          const aliasConfig = await promptAliasCreation(\n            instanceName,\n            args.alias,\n            args.aliasLocation\n          );\n\n          if (aliasConfig) {\n            await handleAliasCreation(instanceName, aliasConfig.aliasName, aliasConfig.location);\n          }\n        } else if (args.alias) {\n          // If alias is provided but skipAlias is set, still create it\n          const location = (args.aliasLocation as AliasStorageLocation) ?? \"shell-config\";\n          await handleAliasCreation(instanceName, args.alias, location);\n        }\n\n        console.log();\n        console.log(pc.dim(\"  Next steps:\"));\n        console.log(pc.dim(\"  • The new instance should launch automatically\"));\n        console.log(pc.dim(\"  • Sign in with a different Cursor account\"));\n        console.log(pc.dim(\"  • Find it in ~/Applications/\"));\n      } else if (action === \"reinstall\") {\n        printSuccess(`Instance ${highlight(instanceName)} reinstalled successfully!`);\n        console.log();\n        console.log(pc.dim(\"  The instance has been:\"));\n        console.log(pc.dim(\"  • Refreshed with the latest Cursor version\"));\n        console.log(pc.dim(\"  • Relaunched with your preserved data\"));\n        console.log(pc.dim(\"  • Ready to use with your existing account\"));\n      } else {\n        // Handle alias removal for remove action\n        await handleAliasRemoval(instanceName);\n\n        printSuccess(`Instance ${highlight(instanceName)} removed successfully!`);\n      }\n      console.log();\n      p.outro(pc.green(\"✨ Done!\"));\n    } else {\n      printWarning(`Operation completed with exit code ${exitCode}`);\n      console.log();\n      p.outro(pc.yellow(\"Check the output above for details\"));\n      process.exit(exitCode);\n    }\n  },\n});\n","import {\n  appendFileSync,\n  chmodSync,\n  existsSync,\n  mkdirSync,\n  readFileSync,\n  unlinkSync,\n  writeFileSync,\n} from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport type AliasStorageLocation =\n  | \"shell-config\"\n  | \"usr-local-bin\"\n  | \"home-bin\";\n\nexport interface AliasConfig {\n  aliases: Record<string, AliasEntry>;\n}\n\nexport interface AliasEntry {\n  instanceName: string;\n  aliasName: string;\n  storageLocation: AliasStorageLocation;\n  createdAt: string;\n  scriptPath?: string;\n}\n\nconst CURSOR_KIT_DIR = \".cursor-kit\";\nconst ALIASES_FILE = \"aliases.json\";\n\nexport function getAliasConfigDir(): string {\n  return join(homedir(), CURSOR_KIT_DIR);\n}\n\nexport function getAliasConfigPath(): string {\n  return join(getAliasConfigDir(), ALIASES_FILE);\n}\n\nexport function ensureConfigDir(): void {\n  const configDir = getAliasConfigDir();\n  if (!existsSync(configDir)) {\n    mkdirSync(configDir, { recursive: true });\n  }\n}\n\nexport function loadAliasConfig(): AliasConfig {\n  const configPath = getAliasConfigPath();\n  if (!existsSync(configPath)) {\n    return { aliases: {} };\n  }\n\n  try {\n    const content = readFileSync(configPath, \"utf-8\");\n    return JSON.parse(content) as AliasConfig;\n  } catch {\n    return { aliases: {} };\n  }\n}\n\nexport function saveAliasConfig(config: AliasConfig): void {\n  ensureConfigDir();\n  const configPath = getAliasConfigPath();\n  writeFileSync(configPath, JSON.stringify(config, null, 2), \"utf-8\");\n}\n\nexport function getInstanceDataDir(instanceName: string): string {\n  return join(\n    homedir(),\n    \"Library\",\n    \"Application Support\",\n    instanceName.replace(/ /g, \"\")\n  );\n}\n\nexport function getInstanceAppPath(instanceName: string): string {\n  return join(homedir(), \"Applications\", `${instanceName}.app`);\n}\n\nfunction generateScriptContent(instanceName: string): string {\n  const dataDir = getInstanceDataDir(instanceName);\n  const appPath = getInstanceAppPath(instanceName);\n\n  return `#!/usr/bin/env bash\n# Generated by cursor-kit for instance: ${instanceName}\n# This script opens the specified directory (or current directory) in the Cursor instance\n\nset -euo pipefail\n\nDIR=\"\\${1:-.}\"\n\n# Resolve to absolute path if relative\nif [[ \"\\$DIR\" != /* ]]; then\n  DIR=\"\\$(cd \"\\$DIR\" 2>/dev/null && pwd)\"\nfi\n\nDATA_DIR=\"${dataDir}\"\nAPP_PATH=\"${appPath}\"\n\nif [ ! -d \"\\$APP_PATH\" ]; then\n  echo \"Error: Cursor instance not found at \\$APP_PATH\" >&2\n  echo \"The instance may have been removed. Run 'cursor-kit instance -l' to see available instances.\" >&2\n  exit 1\nfi\n\nopen -n \"\\$APP_PATH\" --args --user-data-dir \"\\$DATA_DIR\" \"\\$DIR\"\n`;\n}\n\nfunction generateShellFunction(\n  aliasName: string,\n  instanceName: string\n): string {\n  const dataDir = getInstanceDataDir(instanceName);\n  const appPath = getInstanceAppPath(instanceName);\n\n  return `\n# cursor-kit alias: ${aliasName} -> ${instanceName}\n${aliasName}() {\n  local DIR=\"\\${1:-.}\"\n  if [[ \"\\$DIR\" != /* ]]; then\n    DIR=\"\\$(cd \"\\$DIR\" 2>/dev/null && pwd)\"\n  fi\n  local DATA_DIR=\"${dataDir}\"\n  local APP_PATH=\"${appPath}\"\n  if [ ! -d \"\\$APP_PATH\" ]; then\n    echo \"Error: Cursor instance not found at \\$APP_PATH\" >&2\n    return 1\n  fi\n  open -n \"\\$APP_PATH\" --args --user-data-dir \"\\$DATA_DIR\" \"\\$DIR\"\n}\n# end cursor-kit alias: ${aliasName}\n`;\n}\n\nexport function detectShellConfigPath(): string {\n  const home = homedir();\n  const shell = process.env.SHELL ?? \"/bin/zsh\";\n\n  if (shell.includes(\"zsh\")) {\n    return join(home, \".zshrc\");\n  }\n  if (shell.includes(\"bash\")) {\n    const bashProfile = join(home, \".bash_profile\");\n    if (existsSync(bashProfile)) {\n      return bashProfile;\n    }\n    return join(home, \".bashrc\");\n  }\n\n  return join(home, \".zshrc\");\n}\n\nexport function getHomeBinDir(): string {\n  return join(homedir(), \"bin\");\n}\n\nexport function getUsrLocalBinDir(): string {\n  return \"/usr/local/bin\";\n}\n\nfunction ensureBinDir(binDir: string): void {\n  if (!existsSync(binDir)) {\n    mkdirSync(binDir, { recursive: true });\n  }\n}\n\nexport function createExecutableScript(\n  aliasName: string,\n  instanceName: string,\n  targetDir: string\n): string {\n  ensureBinDir(targetDir);\n\n  const scriptPath = join(targetDir, aliasName);\n  const scriptContent = generateScriptContent(instanceName);\n\n  writeFileSync(scriptPath, scriptContent, \"utf-8\");\n  chmodSync(scriptPath, 0o755);\n\n  return scriptPath;\n}\n\nexport function createShellAlias(\n  aliasName: string,\n  instanceName: string,\n  shellConfigPath: string\n): void {\n  const functionContent = generateShellFunction(aliasName, instanceName);\n\n  if (!existsSync(shellConfigPath)) {\n    writeFileSync(shellConfigPath, \"\", \"utf-8\");\n  }\n\n  const existingContent = readFileSync(shellConfigPath, \"utf-8\");\n  if (existingContent.includes(`# cursor-kit alias: ${aliasName}`)) {\n    removeShellAlias(aliasName, shellConfigPath);\n  }\n\n  appendFileSync(shellConfigPath, functionContent, \"utf-8\");\n}\n\nexport function removeShellAlias(\n  aliasName: string,\n  shellConfigPath: string\n): boolean {\n  if (!existsSync(shellConfigPath)) {\n    return false;\n  }\n\n  const content = readFileSync(shellConfigPath, \"utf-8\");\n  const startMarker = `# cursor-kit alias: ${aliasName}`;\n  const endMarker = `# end cursor-kit alias: ${aliasName}`;\n\n  const startIndex = content.indexOf(startMarker);\n  if (startIndex === -1) {\n    return false;\n  }\n\n  const endIndex = content.indexOf(endMarker);\n  if (endIndex === -1) {\n    return false;\n  }\n\n  const before = content.slice(0, startIndex);\n  const after = content.slice(endIndex + endMarker.length);\n\n  const newContent = (before + after).replace(/\\n{3,}/g, \"\\n\\n\");\n  writeFileSync(shellConfigPath, newContent, \"utf-8\");\n\n  return true;\n}\n\nexport function removeExecutableScript(scriptPath: string): boolean {\n  if (!existsSync(scriptPath)) {\n    return false;\n  }\n\n  try {\n    unlinkSync(scriptPath);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport interface CreateAliasOptions {\n  aliasName: string;\n  instanceName: string;\n  storageLocation: AliasStorageLocation;\n}\n\nexport interface CreateAliasResult {\n  success: boolean;\n  scriptPath?: string;\n  shellConfigPath?: string;\n  error?: string;\n}\n\nexport function createAlias(options: CreateAliasOptions): CreateAliasResult {\n  const { aliasName, instanceName, storageLocation } = options;\n\n  try {\n    let scriptPath: string | undefined;\n    let shellConfigPath: string | undefined;\n\n    switch (storageLocation) {\n      case \"shell-config\": {\n        shellConfigPath = detectShellConfigPath();\n        createShellAlias(aliasName, instanceName, shellConfigPath);\n        break;\n      }\n      case \"usr-local-bin\": {\n        scriptPath = createExecutableScript(\n          aliasName,\n          instanceName,\n          getUsrLocalBinDir()\n        );\n        break;\n      }\n      case \"home-bin\": {\n        scriptPath = createExecutableScript(\n          aliasName,\n          instanceName,\n          getHomeBinDir()\n        );\n        break;\n      }\n    }\n\n    const config = loadAliasConfig();\n    config.aliases[aliasName] = {\n      instanceName,\n      aliasName,\n      storageLocation,\n      createdAt: new Date().toISOString(),\n      scriptPath,\n    };\n    saveAliasConfig(config);\n\n    return { success: true, scriptPath, shellConfigPath };\n  } catch (error) {\n    return {\n      success: false,\n      error: error instanceof Error ? error.message : \"Unknown error\",\n    };\n  }\n}\n\nexport function removeAlias(aliasName: string): boolean {\n  const config = loadAliasConfig();\n  const entry = config.aliases[aliasName];\n\n  if (!entry) {\n    return false;\n  }\n\n  let removed = false;\n\n  switch (entry.storageLocation) {\n    case \"shell-config\": {\n      const shellConfigPath = detectShellConfigPath();\n      removed = removeShellAlias(aliasName, shellConfigPath);\n      break;\n    }\n    case \"usr-local-bin\": {\n      const scriptPath = join(getUsrLocalBinDir(), aliasName);\n      removed = removeExecutableScript(scriptPath);\n      break;\n    }\n    case \"home-bin\": {\n      const scriptPath = join(getHomeBinDir(), aliasName);\n      removed = removeExecutableScript(scriptPath);\n      break;\n    }\n  }\n\n  delete config.aliases[aliasName];\n  saveAliasConfig(config);\n\n  return removed;\n}\n\nexport function getAliasForInstance(instanceName: string): AliasEntry | null {\n  const config = loadAliasConfig();\n\n  for (const entry of Object.values(config.aliases)) {\n    if (entry.instanceName === instanceName) {\n      return entry;\n    }\n  }\n\n  return null;\n}\n\nexport function getAliasByName(aliasName: string): AliasEntry | null {\n  const config = loadAliasConfig();\n  return config.aliases[aliasName] ?? null;\n}\n\nexport function listAliases(): AliasEntry[] {\n  const config = loadAliasConfig();\n  return Object.values(config.aliases);\n}\n\nexport function aliasExists(aliasName: string): boolean {\n  const config = loadAliasConfig();\n  return aliasName in config.aliases;\n}\n\nexport function generateAliasName(instanceName: string): string {\n  return instanceName\n    .toLowerCase()\n    .replace(/^cursor\\s*/i, \"cursor-\")\n    .replace(/\\s+/g, \"-\")\n    .replace(/[^a-z0-9-]/g, \"\")\n    .replace(/-+/g, \"-\")\n    .replace(/^-|-$/g, \"\");\n}\n\nexport function getStorageLocationLabel(\n  location: AliasStorageLocation\n): string {\n  switch (location) {\n    case \"shell-config\":\n      return \"Shell config (~/.zshrc or ~/.bashrc)\";\n    case \"usr-local-bin\":\n      return \"/usr/local/bin (system-wide)\";\n    case \"home-bin\":\n      return \"~/bin (user-local)\";\n  }\n}\n\nexport function isHomeBinInPath(): boolean {\n  const pathEnv = process.env.PATH ?? \"\";\n  const homeBin = getHomeBinDir();\n  return pathEnv\n    .split(\":\")\n    .some((p) => p === homeBin || p === \"~/bin\" || p === \"$HOME/bin\");\n}\n\nexport function getPathSetupInstructions(): string {\n  const shell = process.env.SHELL ?? \"/bin/zsh\";\n  const configFile = shell.includes(\"zsh\") ? \"~/.zshrc\" : \"~/.bashrc\";\n\n  return `Add the following to your ${configFile}:\n\nexport PATH=\"$HOME/bin:$PATH\"\n\nThen restart your terminal or run: source ${configFile}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,mBAAmB,MACvB,OAAO,aAAa,cAChB,IAAI,IAAI,QAAQ,UAAU,EAAE,EAAE,OAC7B,SAAS,iBAAiB,SAAS,cAAc,QAAQ,YAAY,MAAM,WAC1E,SAAS,cAAc,MACvB,IAAI,IAAI,WAAW,SAAS,OAAO,EAAE;AAEtC,IAAM,gBAAgC,iCAAiB;;;ACZ9D,IAAAA,gBAAuC;AACvC,yBAA8B;;;ACD9B,oBAAmB;AACnB,6BAAqB;AACrB,wBAAe;AAEf,IAAM,qBAAiB,uBAAAC,SAAS,CAAC,WAAW,WAAW,SAAS,CAAC;AAE1D,SAAS,cAAoB;AAClC,QAAM,SAAS,cAAAC,QAAO,SAAS,cAAc;AAAA,IAC3C,MAAM;AAAA,IACN,kBAAkB;AAAA,EACpB,CAAC;AAED,UAAQ,IAAI,eAAe,UAAU,MAAM,CAAC;AAC5C,UAAQ,IAAI;AACZ,UAAQ;AAAA,IACN,kBAAAC,QAAG,IAAI,IAAI,IACT,kBAAAA,QAAG,KAAK,kBAAAA,QAAG,KAAK,QAAG,CAAC,IACpB,kBAAAA,QAAG,IAAI,oDAAoD;AAAA,EAC/D;AACA,UAAQ,IAAI;AACd;AAEO,SAAS,aAAa,SAAuB;AAClD,UAAQ,IAAI,kBAAAA,QAAG,MAAM,QAAG,IAAI,kBAAAA,QAAG,IAAI,GAAG,IAAI,OAAO;AACnD;AAMO,SAAS,UAAU,SAAuB;AAC/C,UAAQ,IAAI,kBAAAC,QAAG,KAAK,QAAG,IAAI,kBAAAA,QAAG,IAAI,GAAG,IAAI,OAAO;AAClD;AAEO,SAAS,aAAa,SAAuB;AAClD,UAAQ,IAAI,kBAAAA,QAAG,OAAO,QAAG,IAAI,kBAAAA,QAAG,IAAI,GAAG,IAAI,OAAO;AACpD;AAEO,SAAS,eAAqB;AACnC,UAAQ,IAAI,kBAAAA,QAAG,IAAI,SAAI,OAAO,EAAE,CAAC,CAAC;AACpC;AAEO,SAAS,aAAa,SAAuB;AAClD,UAAQ;AAAA,IACN,kBAAAA,QAAG,IAAI,IAAI,IAAI,eAAe,IAAI,OAAO,EAAE,IAAI,kBAAAA,QAAG,IAAI,0BAAgB;AAAA,EACxE;AACA,UAAQ,IAAI;AACd;AAEO,SAAS,UAAUC,OAAsB;AAC9C,SAAO,kBAAAD,QAAG,KAAKC,KAAI;AACrB;;;ACnDA,mBAA8B;AAC9B,IAAAC,KAAmB;AACnB,IAAAC,qBAAe;AACf,IAAAC,oBAAqB;;;ACHrB,qBAA0G;AAC1G,uBAAuC;AAEhC,SAAS,UAAU,MAAoB;AAC5C,MAAI,KAAC,2BAAW,IAAI,GAAG;AACrB,kCAAU,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EACrC;AACF;AAEO,SAAS,WAAW,MAAuB;AAChD,aAAO,2BAAW,IAAI;AACxB;AAEO,SAAS,UAAU,MAAuB;AAC/C,aAAO,2BAAW,IAAI,SAAK,yBAAS,IAAI,EAAE,YAAY;AACxD;AAEO,SAAS,SAAS,MAAsB;AAC7C,aAAO,6BAAa,MAAM,OAAO;AACnC;AAEO,SAAS,UAAU,MAAc,SAAuB;AAC7D,gBAAU,0BAAQ,IAAI,CAAC;AACvB,oCAAc,MAAM,SAAS,OAAO;AACtC;AAEO,SAAS,WAAW,MAAoB;AAC7C,UAAI,2BAAW,IAAI,GAAG;AACpB,+BAAO,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EAClC;AACF;AAEO,SAAS,QAAQ,KAAa,MAAoB;AACvD,6BAAO,KAAK,MAAM,EAAE,WAAW,KAAK,CAAC;AACvC;AAEO,SAAS,UAAU,KAAa,WAA8B;AACnE,MAAI,CAAC,UAAU,GAAG,EAAG,QAAO,CAAC;AAE7B,QAAM,YAAQ,4BAAY,GAAG;AAC7B,MAAI,WAAW;AACb,WAAO,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS,CAAC;AAAA,EAClD;AACA,SAAO;AACT;AAEO,SAAS,SAAS,KAAuB;AAC9C,MAAI,CAAC,UAAU,GAAG,EAAG,QAAO,CAAC;AAE7B,aAAO,4BAAY,GAAG,EAAE,OAAO,CAAC,SAAS;AACvC,UAAM,eAAW,uBAAK,KAAK,IAAI;AAC/B,eAAO,yBAAS,QAAQ,EAAE,YAAY;AAAA,EACxC,CAAC;AACH;AAEO,SAAS,aAAa,MAAc,QAAQ,IAAI,GAAW;AAChE,aAAO,uBAAK,KAAK,SAAS;AAC5B;AAEO,SAAS,eAAe,MAAc,QAAQ,IAAI,GAAW;AAClE,aAAO,uBAAK,aAAa,GAAG,GAAG,UAAU;AAC3C;AAEO,SAAS,YAAY,MAAc,QAAQ,IAAI,GAAW;AAC/D,aAAO,uBAAK,aAAa,GAAG,GAAG,OAAO;AACxC;AAEO,SAAS,aAAa,MAAc,QAAQ,IAAI,GAAW;AAChE,aAAO,uBAAK,aAAa,GAAG,GAAG,QAAQ;AACzC;AAiBO,SAAS,oBAAoB,KAAa,OAA2B;AAC1E,MAAI,CAAC,UAAU,GAAG,EAAG,QAAO,CAAC;AAC7B,SAAO,MAAM,OAAO,CAAC,SAAS,eAAW,uBAAK,KAAK,IAAI,CAAC,CAAC;AAC3D;AAEO,SAAS,mBAAmB,KAAa,MAA0B;AACxE,MAAI,CAAC,UAAU,GAAG,EAAG,QAAO,CAAC;AAC7B,SAAO,KAAK,OAAO,CAAC,MAAM,cAAU,uBAAK,KAAK,CAAC,CAAC,CAAC;AACnD;AAYO,SAAS,aAAa,MAAc,QAAQ,IAAI,GAAW;AAChE,aAAO,uBAAK,KAAK,SAAS;AAC5B;AAEO,SAAS,2BAA2B,MAAc,QAAQ,IAAI,GAAW;AAC9E,aAAO,uBAAK,aAAa,GAAG,GAAG,yBAAyB;AAC1D;AAEO,SAAS,0BAA0B,MAAc,QAAQ,IAAI,GAAW;AAC7E,aAAO,uBAAK,aAAa,GAAG,GAAG,sBAAsB;AACvD;AAEO,SAAS,sBAAsB,MAAc,QAAQ,IAAI,GAAW;AACzE,aAAO,uBAAK,0BAA0B,GAAG,GAAG,UAAU;AACxD;AAEO,SAAS,mBAAmB,MAAc,QAAQ,IAAI,GAAW;AACtE,aAAO,uBAAK,0BAA0B,GAAG,GAAG,OAAO;AACrD;AAEO,SAAS,oBAAoB,MAAc,QAAQ,IAAI,GAAW;AACvE,aAAO,uBAAK,0BAA0B,GAAG,GAAG,QAAQ;AACtD;AAEO,SAAS,WAAW,MAAoB;AAC7C,MAAI,WAAW,IAAI,GAAG;AACpB,+BAAO,IAAI;AAAA,EACb;AACF;AAGO,SAAS,YAAY,MAAc,QAAQ,IAAI,GAAW;AAC/D,aAAO,uBAAK,KAAK,QAAQ;AAC3B;AAEO,SAAS,iBAAiB,MAAc,QAAQ,IAAI,GAAW;AACpE,aAAO,uBAAK,YAAY,GAAG,GAAG,OAAO;AACvC;AAEO,SAAS,qBAAqB,MAAc,QAAQ,IAAI,GAAW;AACxE,aAAO,uBAAK,YAAY,GAAG,GAAG,WAAW;AAC3C;AAEO,SAAS,kBAAkB,MAAc,QAAQ,IAAI,GAAW;AACrE,aAAO,uBAAK,YAAY,GAAG,GAAG,QAAQ;AACxC;;;ACvJA,IAAAC,oBAA8B;AAC9B,sBAA8B;;;ACDvB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,eAAe;AAarB,IAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AACV;;;ADDA,SAAS,uBAA+B;AACtC,QAAM,iBAAa,+BAAQ,+BAAc,aAAe,CAAC;AACzD,aAAO,wBAAK,YAAY,MAAM,WAAW;AAC3C;AAEA,SAAS,mBAA4C;AACnD,QAAM,eAAe,qBAAqB;AAC1C,QAAM,mBAAe,wBAAK,cAAc,eAAe;AAEvD,MAAI,WAAW,YAAY,GAAG;AAC5B,QAAI;AACF,aAAO,KAAK,MAAM,SAAS,YAAY,CAAC;AAAA,IAC1C,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,kBAAc,wBAAK,cAAc,UAAU;AACjD,QAAM,eAAW,wBAAK,cAAc,OAAO;AAC3C,QAAM,gBAAY,wBAAK,cAAc,QAAQ;AAE7C,MAAI,CAAC,UAAU,WAAW,KAAK,CAAC,UAAU,QAAQ,KAAK,CAAC,UAAU,SAAS,GAAG;AAC5E,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,UAAU,UAAU,WAAW,IAAI,UAAU,aAAa,KAAK,IAAI,CAAC;AAAA,IACpE,OAAO,UAAU,QAAQ,IAAI,UAAU,UAAU,KAAK,IAAI,CAAC;AAAA,IAC3D,QAAQ,UAAU,SAAS,IAAI,SAAS,SAAS,IAAI,CAAC;AAAA,EACxD;AACF;AAEA,SAAS,wBAAwB,MAAoB,UAAiC;AACpF,QAAM,eAAe,qBAAqB;AAC1C,QAAM,eAAW,wBAAK,cAAc,MAAM,QAAQ;AAElD,MAAI,WAAW,QAAQ,GAAG;AACxB,WAAO,SAAS,QAAQ;AAAA,EAC1B;AAGA,MAAI,SAAS,WAAW,SAAS,SAAS,KAAK,GAAG;AAChD,UAAM,UAAU,SAAS,QAAQ,SAAS,MAAM;AAChD,QAAI,WAAW,OAAO,GAAG;AACvB,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,WAAkC;AACjE,QAAM,eAAe,qBAAqB;AAC1C,QAAM,gBAAY,wBAAK,cAAc,UAAU,SAAS;AAExD,MAAI,UAAU,SAAS,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,eAAe,UAA0B;AACvD,SAAO,SAAS,QAAQ,SAAS,MAAM;AACzC;AAEO,SAAS,6BAA6B,SAAyB;AAEpE,YAAU,QAAQ,QAAQ,2CAA2C,2BAA2B;AAGhG,YAAU,QAAQ,QAAQ,0BAA0B,aAAa;AAEjE,SAAO;AACT;AAEO,SAAS,eACd,WACA,WACA,eAAwB,OACf;AACT,QAAM,aAAa,iBAAiB,SAAS;AAC7C,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,eAAW,wBAAK,WAAW,SAAS;AAC1C,YAAU,QAAQ;AAClB,UAAQ,YAAY,QAAQ;AAG5B,MAAI,cAAc;AAChB,UAAM,kBAAc,wBAAK,UAAU,UAAU;AAC7C,UAAM,mBAAe,wBAAK,UAAU,WAAW;AAC/C,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,UAAU,SAAS,WAAW;AACpC,gBAAU,cAAc,OAAO;AAE/B,iBAAW,WAAW;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,wBAAmD;AACvE,QAAM,gBAAgB,iBAAiB;AACvC,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,GAAG,YAAY;AAC3B,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,sCAAsC,SAAS,UAAU,EAAE;AAAA,EAC7E;AAEA,SAAO,SAAS,KAAK;AACvB;AAEA,eAAsB,qBACpB,MACA,UACiB;AACjB,QAAM,eAAe,wBAAwB,MAAM,QAAQ;AAC3D,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,eAAe,IAAI;AACxC,QAAM,MAAM,GAAG,YAAY,IAAI,YAAY,IAAI,QAAQ;AAEvD,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,4BAA4B,QAAQ,KAAK,SAAS,UAAU,EAAE;AAAA,EAChF;AAEA,SAAO,SAAS,KAAK;AACvB;AAEA,eAAsB,uBACpB,MACA,WAC8B;AAC9B,QAAM,UAAU,oBAAI,IAAoB;AAExC,QAAM,gBAAgB,UAAU,IAAI,OAAO,aAAa;AACtD,UAAM,UAAU,MAAM,qBAAqB,MAAM,QAAQ;AACzD,WAAO,EAAE,UAAU,QAAQ;AAAA,EAC7B,CAAC;AAED,QAAM,UAAU,MAAM,QAAQ,WAAW,aAAa;AAEtD,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,WAAW,aAAa;AACjC,cAAQ,IAAI,OAAO,MAAM,UAAU,OAAO,MAAM,OAAO;AAAA,IACzD;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,UAA0B;AACzD,QAAM,iBAAiB,SAAS,QAAQ,eAAe,EAAE;AACzD,SAAO,eACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAEO,SAAS,cAAc,WAA2B;AACvD,SAAO,UACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAEO,SAAS,iBAAiB,SAAyB;AACxD,QAAM,mBAAmB;AACzB,SAAO,QAAQ,QAAQ,kBAAkB,EAAE,EAAE,KAAK;AACpD;AAEO,SAAS,mBAAmB,SAKjC;AACA,QAAM,mBAAmB,QAAQ,MAAM,yBAAyB;AAChE,MAAI,CAAC,iBAAkB,QAAO,CAAC;AAE/B,QAAM,cAAc,iBAAiB,CAAC;AACtC,QAAM,SAAkC,CAAC;AAEzC,aAAW,QAAQ,YAAY,MAAM,IAAI,GAAG;AAC1C,UAAM,QAAQ,KAAK,MAAM,iBAAiB;AAC1C,QAAI,OAAO;AACT,YAAM,CAAC,EAAE,KAAK,KAAK,IAAI;AACvB,aAAO,GAAG,IACR,UAAU,SAAS,OAAO,UAAU,UAAU,QAAQ;AAAA,IAC1D;AAAA,EACF;AAEA,SAAO;AACT;AAKA,SAAS,8BAA8B,UAA0B;AAC/D,QAAM,WAAW,SAAS,QAAQ,eAAe,EAAE,EAAE,YAAY;AAEjE,QAAM,cAAsC;AAAA,IAC1C,OAAO;AAAA,IACP,OAAO;AAAA,IACP,gBAAgB;AAAA,EAClB;AAEA,SAAO,YAAY,QAAQ,KAAK;AAClC;AAQO,SAAS,4BAA4B,SAAiB,WAAmB,IAAY;AAC1F,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,OAAO,iBAAiB,OAAO;AAGrC,QAAM,UAAU,YAAY,gBAAgB,OAAO,cAAc;AAGjE,QAAM,eAAe,YAAY,eAAe,YAAY,QAAQ;AACpE,QAAM,eAAe,8BAA8B,QAAQ;AAC3D,QAAM,cAAc,gBAAgB;AAGpC,MAAI,iBAAiB;AAAA,WAAiB,OAAO;AAAA;AAC7C,MAAI,aAAa;AACf,sBAAkB,gBAAgB,WAAW;AAAA;AAAA,EAC/C;AACA,oBAAkB;AAElB,SAAO,iBAAiB;AAC1B;AAMO,SAAS,2BAA2B,SAAiB,UAA0B;AACpF,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,OAAO,iBAAiB,OAAO;AAGrC,QAAM,cAAc,YAAY,eAC9B,SAAS,QAAQ,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG;AAGpG,QAAM,iBAAiB;AAAA,eAAqB,WAAW;AAAA;AAAA;AAAA;AAEvD,SAAO,iBAAiB;AAC1B;AAMO,SAAS,6BAA6B,SAAyB;AACpE,QAAM,cAAc,mBAAmB,OAAO;AAC9C,QAAM,OAAO,iBAAiB,OAAO;AAGrC,QAAM,cAAc,YAAY,eAAe,YAAY,QAAQ;AAGnE,MAAI,iBAAiB;AAAA;AAAA;AACrB,MAAI,aAAa;AACf,sBAAkB,gBAAgB,WAAW;AAAA;AAAA,EAC/C;AACA,oBAAkB;AAElB,SAAO,iBAAiB;AAC1B;AAMO,SAAS,6BACd,WACA,WACS;AACT,QAAM,aAAa,iBAAiB,SAAS;AAC7C,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,eAAW,wBAAK,WAAW,SAAS;AAC1C,YAAU,QAAQ;AAClB,UAAQ,YAAY,QAAQ;AAG5B,QAAM,kBAAc,wBAAK,UAAU,UAAU;AAC7C,MAAI,WAAW,WAAW,GAAG;AAC3B,UAAM,UAAU,SAAS,WAAW;AACpC,UAAM,qBAAqB,6BAA6B,OAAO;AAC/D,cAAU,aAAa,kBAAkB;AAAA,EAC3C;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,UACA,OACA,QACA,mBAA6B,CAAC,GACtB;AACR,MAAI,SAAS;AACb,YAAU;AACV,YACE;AACF,YACE;AAEF,MAAI,iBAAiB,SAAS,GAAG;AAC/B,cAAU;AACV,cACE;AACF,eAAW,QAAQ,kBAAkB;AACnC,YAAM,WAAW,KAAK,QAAQ,SAAS,EAAE;AACzC,gBAAU,OAAO,QAAQ,iDAAiD,IAAI;AAAA;AAAA,IAChF;AACA,cAAU;AAAA,EACZ;AAEA,MAAI,SAAS,SAAS,GAAG;AACvB,cAAU;AACV,cACE;AACF,eAAW,OAAO,UAAU;AAC1B,YAAM,UAAU,IAAI,QAAQ,SAAS,EAAE;AACvC,gBAAU,OAAO,OAAO,oDAAoD,GAAG,0BAA0B,OAAO;AAAA;AAAA,IAClH;AACA,cAAU;AAAA,EACZ;AAEA,MAAI,MAAM,SAAS,GAAG;AACpB,cAAU;AACV,cACE;AACF,eAAW,QAAQ,OAAO;AACxB,YAAM,WAAW,KAAK,QAAQ,SAAS,EAAE;AACzC,gBAAU,OAAO,QAAQ,iDAAiD,IAAI,UAAU,QAAQ;AAAA;AAAA,IAClG;AACA,cAAU;AAAA,EACZ;AAEA,MAAI,OAAO,SAAS,GAAG;AACrB,cAAU;AACV,cACE;AACF,eAAW,SAAS,QAAQ;AAC1B,gBAAU,OAAO,KAAK,kDAAkD,KAAK,+BAA+B,KAAK;AAAA;AAAA,IACnH;AACA,cAAU;AAAA,EACZ;AAEA,YAAU;AACV,YACE;AACF,YACE;AACF,YACE;AACF,YACE;AACF,YACE;AAEF,SAAO;AACT;;;AEjZA,IAAAC,oBAAqB;AACrB,QAAmB;AACnB,IAAAC,qBAAe;AA8Bf,eAAe,uBACb,aACA,kBACmB;AACnB,MAAI,iBAAiB,WAAW,EAAG,QAAO,CAAC;AAE3C,YAAU,WAAW;AACrB,QAAM,cAAc,MAAM,uBAAuB,YAAY,gBAAgB;AAC7E,QAAM,YAAsB,CAAC;AAE7B,aAAW,CAAC,UAAU,OAAO,KAAK,aAAa;AAC7C,UAAM,eAAe,iBAAiB,OAAO;AAC7C,UAAM,eAAW,wBAAK,aAAa,QAAQ;AAC3C,cAAU,UAAU,YAAY;AAChC,cAAU,KAAK,QAAQ;AAAA,EACzB;AAEA,SAAO;AACT;AAEA,eAAe,oBACb,UACA,eACyD;AACzD,MAAI,cAAc,WAAW,EAAG,QAAO,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,EAAE;AAExE,YAAU,QAAQ;AAClB,QAAM,WAAW,MAAM,uBAAuB,SAAS,aAAa;AACpE,QAAM,YAAsB,CAAC;AAC7B,QAAM,cAAwB,CAAC;AAE/B,aAAW,CAAC,UAAU,OAAO,KAAK,UAAU;AAC1C,UAAM,cAAc,mBAAmB,OAAO;AAC9C,UAAM,eAAe,iBAAiB,OAAO;AAG7C,UAAM,aAAa,SAAS,SAAS,KAAK,IAAI,WAAW,SAAS,QAAQ,UAAU,KAAK;AACzF,UAAM,eAAW,wBAAK,UAAU,UAAU;AAC1C,cAAU,UAAU,YAAY;AAEhC,cAAU,KAAK,UAAU;AAEzB,QAAI,YAAY,aAAa;AAC3B,kBAAY,KAAK,UAAU;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO,EAAE,WAAW,YAAY;AAClC;AAEA,eAAe,qBACb,WACA,gBACmB;AACnB,MAAI,eAAe,WAAW,EAAG,QAAO,CAAC;AAEzC,YAAU,SAAS;AACnB,QAAM,YAAsB,CAAC;AAE7B,aAAW,aAAa,gBAAgB;AACtC,UAAM,UAAU,eAAe,WAAW,SAAS;AACnD,QAAI,CAAC,QAAS;AAEd,UAAM,qBAAiB,wBAAK,WAAW,SAAS;AAChD,UAAM,mBAAe,wBAAK,gBAAgB,WAAW;AACrD,UAAM,kBAAc,wBAAK,gBAAgB,UAAU;AAGnD,QAAI,WAAW,WAAW,GAAG;AAE3B,YAAM,UAAU,SAAS,WAAW;AACpC,YAAM,eAAe,iBAAiB,OAAO;AAC7C,gBAAU,aAAa,YAAY;AAAA,IACrC,WAAW,WAAW,YAAY,GAAG;AAEnC,YAAM,UAAU,SAAS,YAAY;AACrC,YAAM,eAAe,iBAAiB,OAAO;AAC7C,gBAAU,aAAa,YAAY;AACnC,iBAAW,YAAY;AAAA,IACzB;AAEA,cAAU,KAAK,SAAS;AAAA,EAC1B;AAEA,SAAO;AACT;AAEA,eAAsB,sBACpB,KACA,OACkB;AAClB,QAAM,aAAa,0BAA0B,GAAG;AAChD,QAAM,mBAAmB,2BAA2B,GAAG;AAEvD,QAAM,iBAAiB,UAAU,UAAU;AAC3C,QAAM,mBAAmB,WAAW,gBAAgB;AAEpD,OAAK,kBAAkB,qBAAqB,CAAC,OAAO;AAClD,UAAM,YAAY,MAAQ,UAAQ;AAAA,MAChC,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAED,QAAM,WAAS,SAAS,KAAK,CAAC,WAAW;AACvC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,2BACpB,KACA,kBACA,eACA,gBAC+B;AAC/B,QAAM,cAAc,sBAAsB,GAAG;AAC7C,QAAM,WAAW,mBAAmB,GAAG;AACvC,QAAM,YAAY,oBAAoB,GAAG;AACzC,QAAM,mBAAmB,2BAA2B,GAAG;AAEvD,QAAM,CAAC,mBAAmB,aAAa,eAAe,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC1E,uBAAuB,aAAa,gBAAgB;AAAA,IACpD,oBAAoB,UAAU,aAAa;AAAA,IAC3C,qBAAqB,WAAW,cAAc;AAAA,EAChD,CAAC;AAED,QAAM,iBAAiB,YAAY;AACnC,QAAM,mBAAmB,YAAY;AAErC,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,YAAU,kBAAkB,YAAY;AAExC,eAAa,uCAAuC;AACpD,UAAQ,IAAI,mBAAAC,QAAG,IAAI,mBAAS,gBAAgB,EAAE,CAAC;AAC/C,UAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,0BAA0B,GAAG,CAAC,GAAG,CAAC;AAE9D,SAAO;AAAA,IACL,UAAU;AAAA,IACV,OAAO,eAAe,IAAI,CAAC,MAAM,EAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,IACvD,QAAQ;AAAA,IACR;AAAA,EACF;AACF;;;AJxIA,eAAe,wBAA6D;AAC1E,SAAO,MAAQ,UAAO;AAAA,IACpB,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACH;AAEA,eAAe,0BACb,KACA,UACA,MAOA,oBACA,iBACA,kBACe;AACf,QAAM,IAAM,WAAQ;AAEpB,QAAM,aAAa,MAAM,sBAAsB,KAAK,KAAK,SAAS,KAAK;AACvE,MAAI,CAAC,YAAY;AACf,IAAE,UAAO,qBAAqB;AAC9B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,mBAA6B,CAAC;AAClC,MAAI,gBAA0B,CAAC;AAC/B,MAAI,iBAA2B,CAAC;AAEhC,MAAI,oBAAoB;AACtB,QAAI,KAAK,KAAK;AACZ,yBAAmB,SAAS;AAAA,IAC9B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,YAAY,SAAS,QAAQ;AACrE,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,iBAAiB;AACnB,QAAI,KAAK,KAAK;AACZ,sBAAgB,SAAS;AAAA,IAC3B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,SAAS,SAAS,KAAK;AAC/D,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,sBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,MAAI,kBAAkB;AACpB,QAAI,KAAK,KAAK;AACZ,uBAAiB,SAAS;AAAA,IAC5B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,UAAU,SAAS,MAAM;AACjE,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,uBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MACE,iBAAiB,WAAW,KAC5B,cAAc,WAAW,KACzB,eAAe,WAAW,GAC1B;AACA,IAAE,UAAO,uBAAuB;AAChC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACF,MAAE,MAAM,2CAA2C;AACnD,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,MAAE,KAAK,uCAAuC;AAE9C,iBAAa;AACb,YAAQ,IAAI;AAEZ,QAAI,OAAO,SAAS,SAAS,GAAG;AAC9B,mBAAa,aAAa,UAAU,OAAO,SAAS,OAAO,SAAS,CAAC,CAAC,QAAQ;AAC9E,iBAAW,OAAO,OAAO,UAAU;AACjC,gBAAQ,IAAI,mBAAAC,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAAA,MACrD;AAAA,IACF;AAEA,QAAI,OAAO,MAAM,SAAS,GAAG;AAC3B,mBAAa,UAAU,UAAU,OAAO,MAAM,OAAO,SAAS,CAAC,CAAC,QAAQ;AACxE,iBAAW,QAAQ,OAAO,OAAO;AAC/B,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AAAA,MACtD;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,mBAAa,WAAW,UAAU,OAAO,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ;AAC1E,iBAAW,SAAS,OAAO,QAAQ;AACjC,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,YAAQ,IAAI;AACZ,IAAE,SAAM,mBAAAA,QAAG,MAAM,0DAAqD,CAAC;AAAA,EACzE,SAAS,OAAO;AACd,MAAE,KAAK,QAAQ;AACf,IAAE;AAAA,MACA,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACpE;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,8BACb,KACA,UACA,MAOA,oBACA,iBACA,kBACe;AACf,QAAM,IAAM,WAAQ;AACpB,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,WAAW,iBAAiB,GAAG;AACrC,QAAM,eAAe,qBAAqB,GAAG;AAC7C,QAAM,YAAY,kBAAkB,GAAG;AAGvC,QAAM,gBAAgB,oBAAoB,UAAU,SAAS,KAAK;AAClE,QAAM,oBAAoB,oBAAoB,cAAc,SAAS,QAAQ;AAC7E,QAAM,iBAAiB,mBAAmB,WAAW,SAAS,MAAM;AAEpE,OAAK,cAAc,SAAS,KAAK,kBAAkB,SAAS,KAAK,eAAe,SAAS,MAAM,CAAC,KAAK,OAAO;AAC1G,YAAQ,IAAI;AACZ,YAAQ,IAAI,mBAAAA,QAAG,OAAO,8BAAyB,CAAC;AAChD,eAAW,QAAQ,CAAC,GAAG,eAAe,GAAG,mBAAmB,GAAG,cAAc,GAAG;AAC9E,cAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,IAAI,EAAE,CAAC;AAAA,IACrC;AACA,YAAQ,IAAI;AAEZ,UAAM,UAAU,MAAQ,WAAQ;AAAA,MAC9B,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAED,QAAM,YAAS,OAAO,KAAK,CAAC,SAAS;AACnC,MAAE,UAAO,qBAAqB;AAC9B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,mBAA6B,CAAC;AAClC,MAAI,gBAA0B,CAAC;AAC/B,MAAI,iBAA2B,CAAC;AAGhC,MAAI,oBAAoB;AACtB,QAAI,KAAK,KAAK;AACZ,yBAAmB,SAAS;AAAA,IAC9B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,YAAY,SAAS,QAAQ;AACrE,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,iBAAiB;AACnB,QAAI,KAAK,KAAK;AACZ,sBAAgB,SAAS;AAAA,IAC3B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,SAAS,SAAS,KAAK;AAC/D,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,sBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,MAAI,kBAAkB;AACpB,QAAI,KAAK,KAAK;AACZ,uBAAiB,SAAS;AAAA,IAC5B,OAAO;AACL,YAAM,YAAY,MAAM,gBAAgB,UAAU,SAAS,MAAM;AACjE,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,uBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,iBAAiB,WAAW,KAAK,cAAc,WAAW,KAAK,eAAe,WAAW,GAAG;AAC9F,IAAE,UAAO,uBAAuB;AAChC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU;AAAA,IACd,WAAW,CAAC;AAAA,IACZ,OAAO,CAAC;AAAA,IACR,QAAQ,CAAC;AAAA,EACX;AAEA,MAAI;AACF,cAAU,QAAQ;AAClB,cAAU,QAAQ;AAClB,cAAU,YAAY;AACtB,cAAU,SAAS;AAGnB,QAAI,iBAAiB,SAAS,GAAG;AAC/B,QAAE,MAAM,yBAAyB;AACjC,YAAM,YAAY,MAAM,uBAAuB,YAAY,gBAAgB;AAE3E,iBAAW,CAAC,UAAU,OAAO,KAAK,WAAW;AAC3C,cAAM,qBAAqB,2BAA2B,SAAS,QAAQ;AACvE,cAAM,eAAW,wBAAK,cAAc,QAAQ;AAC5C,kBAAU,UAAU,kBAAkB;AACtC,gBAAQ,UAAU,KAAK,QAAQ;AAAA,MACjC;AACA,QAAE,KAAK,qBAAqB;AAAA,IAC9B;AAGA,QAAI,cAAc,SAAS,GAAG;AAC5B,QAAE,MAAM,qBAAqB;AAC7B,YAAM,YAAY,MAAM,uBAAuB,SAAS,aAAa;AAErE,iBAAW,CAAC,UAAU,OAAO,KAAK,WAAW;AAC3C,cAAM,qBAAqB,4BAA4B,SAAS,QAAQ;AACxE,cAAM,eAAW,wBAAK,UAAU,QAAQ;AACxC,kBAAU,UAAU,kBAAkB;AACtC,gBAAQ,MAAM,KAAK,QAAQ;AAAA,MAC7B;AACA,QAAE,KAAK,iBAAiB;AAAA,IAC1B;AAGA,QAAI,eAAe,SAAS,GAAG;AAC7B,QAAE,MAAM,sBAAsB;AAC9B,iBAAW,aAAa,gBAAgB;AACtC,cAAM,UAAU,6BAA6B,WAAW,SAAS;AACjE,YAAI,SAAS;AACX,kBAAQ,OAAO,KAAK,SAAS;AAAA,QAC/B;AAAA,MACF;AACA,QAAE,KAAK,kBAAkB;AAAA,IAC3B;AAEA,iBAAa;AACb,YAAQ,IAAI;AAEZ,QAAI,QAAQ,UAAU,SAAS,GAAG;AAChC,mBAAa,cAAc,UAAU,QAAQ,UAAU,OAAO,SAAS,CAAC,CAAC,QAAQ;AACjF,iBAAW,MAAM,QAAQ,WAAW;AAClC,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,QAAI,QAAQ,MAAM,SAAS,GAAG;AAC5B,mBAAa,UAAU,UAAU,QAAQ,MAAM,OAAO,SAAS,CAAC,CAAC,QAAQ;AACzE,iBAAW,QAAQ,QAAQ,OAAO;AAChC,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AAAA,MACtD;AAAA,IACF;AAEA,QAAI,QAAQ,OAAO,SAAS,GAAG;AAC7B,mBAAa,WAAW,UAAU,QAAQ,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ;AAC3E,iBAAW,SAAS,QAAQ,QAAQ;AAClC,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,YAAQ,IAAI;AACZ,IAAE,SAAM,mBAAAA,QAAG,MAAM,+DAA0D,CAAC;AAAA,EAC9E,SAAS,OAAO;AACd,MAAE,KAAK,QAAQ;AACf,IAAE;AAAA,MACA,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACpE;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,gBACb,MACA,oBAC4B;AAC5B,QAAM,UAAU,SAAS,WAAW,gBAAgB;AAEpD,QAAM,gBAAgB,MAAQ,UAAO;AAAA,IACnC,SAAS,6BAA6B,IAAI;AAAA,IAC1C,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO,WAAW,mBAAmB,MAAM,IAAI,IAAI;AAAA,QACnD,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAM,YAAS,aAAa,EAAG,QAAO;AAEtC,MAAI,kBAAkB,OAAO;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,MAAQ,eAAY;AAAA,IAC5C,SAAS,UAAU,IAAI;AAAA,IACvB,SAAS,mBAAmB,IAAI,CAAC,cAAc;AAAA,MAC7C,OAAO;AAAA,MACP,OAAO,QAAQ,QAAQ;AAAA,MACvB,MAAM;AAAA,IACR,EAAE;AAAA,IACF,UAAU;AAAA,EACZ,CAAC;AAED,SAAO;AACT;AAEA,eAAe,gBACb,MACA,kBACoC;AACpC,UAAQ,IAAI;AACZ,UAAQ;AAAA,IACN,mBAAAA,QAAG,OAAO,UAAK,iBAAiB,MAAM,aAAa,IAAI,SAAS;AAAA,EAClE;AACA,aAAW,QAAQ,kBAAkB;AACnC,YAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,IAAI,EAAE,CAAC;AAAA,EACrC;AACA,UAAQ,IAAI;AAEZ,QAAM,WAAW,MAAQ,UAAO;AAAA,IAC9B,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,eAAe,iBACb,MACA,WACA,mBACA,kBACA,QACqB;AACrB,QAAM,SAAqB,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE;AAIpD,QAAM,oBAAoB,kBAAkB,IAAI,CAAC,aAAa;AAC5D,QAAI,WAAW,YAAY,SAAS,WAAW,SAAS,SAAS,KAAK,GAAG;AACvE,aAAO,eAAe,QAAQ;AAAA,IAChC;AACA,WAAO;AAAA,EACT,CAAC;AAED,QAAM,mBAAmB,oBAAoB,WAAW,iBAAiB;AAEzE,MAAI;AAEJ,MAAI,qBAAqB,SAAS;AAChC,yBAAqB,kBAAkB;AAAA,MACrC,CAAC,MAAM;AACL,cAAM,eAAe,WAAW,YAAY,SAAS,WAAW,EAAE,SAAS,KAAK,IAC5E,eAAe,CAAC,IAChB;AACJ,eAAO,CAAC,iBAAiB,SAAS,YAAY;AAAA,MAChD;AAAA,IACF;AACA,WAAO,UAAU,iBAAiB;AAAA,MAAO,CAAC,MACxC,kBAAkB,SAAS,CAAC;AAAA,IAC9B;AAAA,EACF,OAAO;AACL,yBAAqB;AAAA,EACvB;AAEA,MAAI,mBAAmB,WAAW,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,MAAM,uBAAuB,MAAM,kBAAkB;AAEvE,YAAU,SAAS;AAEnB,aAAW,CAAC,UAAU,OAAO,KAAK,WAAW;AAE3C,UAAM,iBAAiB,WAAW,YAAY,SAAS,WAAW,SAAS,SAAS,KAAK,IACrF,eAAe,QAAQ,IACvB;AAGJ,QAAI,qBAAqB;AACzB,QAAI,WAAW,YAAY,SAAS,WAAW,aAAa,UAAU;AACpE,2BAAqB,6BAA6B,OAAO;AAAA,IAC3D;AAEA,UAAM,eAAW,wBAAK,WAAW,cAAc;AAC/C,cAAU,UAAU,kBAAkB;AACtC,WAAO,MAAM,KAAK,cAAc;AAAA,EAClC;AAEA,SAAO;AACT;AAEA,eAAe,cACb,WACA,gBACA,kBACA,QACqB;AACrB,QAAM,SAAqB,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE;AACpD,QAAM,kBAAkB,mBAAmB,WAAW,cAAc;AAEpE,MAAI;AAEJ,MAAI,qBAAqB,SAAS;AAChC,sBAAkB,eAAe;AAAA,MAC/B,CAAC,MAAM,CAAC,gBAAgB,SAAS,CAAC;AAAA,IACpC;AACA,WAAO,UAAU,gBAAgB;AAAA,MAAO,CAAC,MACvC,eAAe,SAAS,CAAC;AAAA,IAC3B;AAAA,EACF,OAAO;AACL,sBAAkB;AAAA,EACpB;AAEA,MAAI,gBAAgB,WAAW,GAAG;AAChC,WAAO;AAAA,EACT;AAEA,YAAU,SAAS;AAGnB,QAAM,eAAe,WAAW;AAEhC,aAAW,aAAa,iBAAiB;AACvC,UAAM,UAAU,eAAe,WAAW,WAAW,YAAY;AACjE,QAAI,SAAS;AACX,aAAO,MAAM,KAAK,SAAS;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,kBAAc,4BAAc;AAAA,EACvC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,KAAK;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,MAAM,QAAQ,IAAI;AACxB,UAAM,YAAY,aAAa,GAAG;AAClC,UAAM,cAAc,eAAe,GAAG;AACtC,UAAM,WAAW,YAAY,GAAG;AAChC,UAAM,YAAY,aAAa,GAAG;AAElC,UAAM,UAAU,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS,CAAC,KAAK;AACvD,UAAM,qBAAqB,WAAW,KAAK;AAC3C,UAAM,kBAAkB,WAAW,KAAK;AACxC,UAAM,mBAAmB,WAAW,KAAK;AAEzC,IAAE,SAAM,mBAAAA,QAAG,OAAO,mBAAAA,QAAG,MAAM,mBAAmB,CAAC,CAAC;AAEhD,QAAI;AACJ,QAAI,KAAK,WAAW,oBAAoB,KAAK,WAAW,YAAY,KAAK,WAAW,sBAAsB;AACxG,eAAS,KAAK;AAAA,IAChB,OAAO;AACL,YAAM,YAAY,MAAM,sBAAsB;AAC9C,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,eAAS;AAAA,IACX;AAEA,UAAM,IAAM,WAAQ;AAEpB,QAAI;AAEJ,QAAI;AACF,QAAE,MAAM,+BAA+B;AACvC,iBAAW,MAAM,sBAAsB;AACvC,QAAE,KAAK,0BAA0B;AAAA,IACnC,SAAS,OAAO;AACd,QAAE,KAAK,0BAA0B;AACjC,MAAE;AAAA,QACA,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MACpE;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI,WAAW,kBAAkB;AAC/B,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,WAAW,sBAAsB;AACnC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,UAIF,CAAC;AAEL,QAAI;AACF,gBAAU,SAAS;AAEnB,UAAI,oBAAoB;AACtB,YAAI;AAEJ,YAAI,KAAK,KAAK;AACZ,6BAAmB,SAAS;AAAA,QAC9B,OAAO;AACL,gBAAM,YAAY,MAAM,gBAAgB,YAAY,SAAS,QAAQ;AACrE,cAAM,YAAS,SAAS,GAAG;AACzB,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,6BAAmB;AAAA,QACrB;AAEA,cAAM,sBAAsB;AAAA,UAC1B;AAAA,UACA;AAAA,QACF;AACA,YAAI,kBAAoC;AAExC,YAAI,oBAAoB,SAAS,KAAK,CAAC,KAAK,OAAO;AACjD,gBAAM,WAAW,MAAM,gBAAgB,YAAY,mBAAmB;AACtE,cAAM,YAAS,QAAQ,KAAK,aAAa,UAAU;AACjD,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,4BAAkB;AAAA,QACpB;AAEA,UAAE,MAAM,wBAAwB;AAChC,gBAAQ,WAAW,MAAM;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,UAAE,KAAK,oBAAoB;AAAA,MAC7B;AAEA,UAAI,iBAAiB;AACnB,YAAI;AAEJ,YAAI,KAAK,KAAK;AACZ,0BAAgB,SAAS;AAAA,QAC3B,OAAO;AACL,gBAAM,YAAY,MAAM,gBAAgB,SAAS,SAAS,KAAK;AAC/D,cAAM,YAAS,SAAS,GAAG;AACzB,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,0BAAgB;AAAA,QAClB;AAGA,cAAM,wBAAwB,cAAc,IAAI,CAAC,aAAa;AAC5D,iBAAO,WAAW,YAAY,SAAS,SAAS,KAAK,IACjD,eAAe,QAAQ,IACvB;AAAA,QACN,CAAC;AACD,cAAM,mBAAmB,oBAAoB,UAAU,qBAAqB;AAC5E,YAAI,eAAiC;AAErC,YAAI,iBAAiB,SAAS,KAAK,CAAC,KAAK,OAAO;AAC9C,gBAAM,WAAW,MAAM,gBAAgB,SAAS,gBAAgB;AAChE,cAAM,YAAS,QAAQ,KAAK,aAAa,UAAU;AACjD,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,yBAAe;AAAA,QACjB;AAEA,UAAE,MAAM,qBAAqB;AAC7B,gBAAQ,QAAQ,MAAM;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,UAAE,KAAK,iBAAiB;AAAA,MAC1B;AAEA,UAAI,kBAAkB;AACpB,YAAI;AAEJ,YAAI,KAAK,KAAK;AACZ,2BAAiB,SAAS;AAAA,QAC5B,OAAO;AACL,gBAAM,YAAY,MAAM,gBAAgB,UAAU,SAAS,MAAM;AACjE,cAAM,YAAS,SAAS,GAAG;AACzB,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,2BAAiB;AAAA,QACnB;AAEA,cAAM,oBAAoB,mBAAmB,WAAW,cAAc;AACtE,YAAI,gBAAkC;AAEtC,YAAI,kBAAkB,SAAS,KAAK,CAAC,KAAK,OAAO;AAC/C,gBAAM,WAAW,MAAM,gBAAgB,UAAU,iBAAiB;AAClE,cAAM,YAAS,QAAQ,KAAK,aAAa,UAAU;AACjD,YAAE,UAAO,qBAAqB;AAC9B,oBAAQ,KAAK,CAAC;AAAA,UAChB;AACA,0BAAgB;AAAA,QAClB;AAEA,UAAE,MAAM,sBAAsB;AAC9B,gBAAQ,SAAS,MAAM;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,UAAE,KAAK,kBAAkB;AAAA,MAC3B;AAEA,mBAAa;AACb,cAAQ,IAAI;AAEZ,UAAI,QAAQ,UAAU;AACpB,cAAM,EAAE,OAAO,QAAQ,IAAI,QAAQ;AACnC,YAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,GAAG;AAC1C;AAAA,YACE,aAAa,UAAU,MAAM,OAAO,SAAS,CAAC,CAAC,SAAS,QAAQ,SAAS,IAAI,KAAK,mBAAAA,QAAG,OAAO,QAAQ,OAAO,SAAS,CAAC,CAAC,aAAa,EAAE;AAAA,UACvI;AACA,qBAAW,KAAK,OAAO;AACrB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,UACnD;AACA,qBAAW,KAAK,SAAS;AACvB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,OAAO,QAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAEA,UAAI,QAAQ,OAAO;AACjB,cAAM,EAAE,OAAO,QAAQ,IAAI,QAAQ;AACnC,YAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,GAAG;AAC1C;AAAA,YACE,UAAU,UAAU,MAAM,OAAO,SAAS,CAAC,CAAC,SAAS,QAAQ,SAAS,IAAI,KAAK,mBAAAA,QAAG,OAAO,QAAQ,OAAO,SAAS,CAAC,CAAC,aAAa,EAAE;AAAA,UACpI;AACA,qBAAW,KAAK,OAAO;AACrB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,UACnD;AACA,qBAAW,KAAK,SAAS;AACvB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,OAAO,QAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAEA,UAAI,QAAQ,QAAQ;AAClB,cAAM,EAAE,OAAO,QAAQ,IAAI,QAAQ;AACnC,YAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,GAAG;AAC1C;AAAA,YACE,WAAW,UAAU,MAAM,OAAO,SAAS,CAAC,CAAC,SAAS,QAAQ,SAAS,IAAI,KAAK,mBAAAA,QAAG,OAAO,QAAQ,OAAO,SAAS,CAAC,CAAC,aAAa,EAAE;AAAA,UACrI;AACA,qBAAW,KAAK,OAAO;AACrB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,UACnD;AACA,qBAAW,KAAK,SAAS;AACvB,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,mBAAS,mBAAAA,QAAG,OAAO,QAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAEA,YAAM,cACH,QAAQ,UAAU,MAAM,UAAU,MAClC,QAAQ,OAAO,MAAM,UAAU,MAC/B,QAAQ,QAAQ,MAAM,UAAU;AACnC,YAAM,gBACH,QAAQ,UAAU,QAAQ,UAAU,MACpC,QAAQ,OAAO,QAAQ,UAAU,MACjC,QAAQ,QAAQ,QAAQ,UAAU;AAErC,UAAI,eAAe,KAAK,eAAe,GAAG;AACxC,gBAAQ,IAAI;AACZ,QAAE,SAAM,mBAAAA,QAAG,OAAO,2DAA2D,CAAC;AAAA,MAChF,OAAO;AACL,gBAAQ,IAAI;AACZ,QAAE,SAAM,mBAAAA,QAAG,MAAM,6CAAwC,CAAC;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,QAAE,KAAK,QAAQ;AACf,MAAE;AAAA,QACA,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,MACpE;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;;;AKh2BD,IAAAC,KAAmB;AACnB,IAAAC,gBAA8B;AAC9B,IAAAC,oBAAqB;AACrB,IAAAC,qBAAe;;;ACHf,IAAAC,KAAmB;AAiCZ,IAAM,iBAA0D;AAAA,EACrE,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,EACrB;AAAA,EACA,kBAAkB;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,EACrB;AAAA,EACA,sBAAsB;AAAA,IACpB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,EACrB;AACF;AAEA,eAAsBC,yBAA6D;AACjF,SAAO,MAAQ,UAAO;AAAA,IACpB,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACH;AAEO,SAAS,cAAc,OAAuD;AACnF,SAAO,UAAU,YAAY,UAAU,oBAAoB,UAAU;AACvE;AAEO,SAAS,qBACd,QACA,MAAc,QAAQ,IAAI,GACP;AACnB,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,QACL,SAAS,aAAa,GAAG;AAAA,QACzB,aAAa,eAAe,GAAG;AAAA,QAC/B,UAAU,YAAY,GAAG;AAAA,QACzB,WAAW,aAAa,GAAG;AAAA,MAC7B;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,SAAS,0BAA0B,GAAG;AAAA,QACtC,aAAa,sBAAsB,GAAG;AAAA,QACtC,UAAU,mBAAmB,GAAG;AAAA,QAChC,WAAW,oBAAoB,GAAG;AAAA,MACpC;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,SAAS,YAAY,GAAG;AAAA,QACxB,aAAa,qBAAqB,GAAG;AAAA,QACrC,UAAU,iBAAiB,GAAG;AAAA,QAC9B,WAAW,kBAAkB,GAAG;AAAA,MAClC;AAAA,EACJ;AACF;AAEO,SAAS,gBAAgB,QAAyC;AACvE,SAAO,eAAe,MAAM;AAC9B;;;AD/FA,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAazB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAetB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BvB,IAAM,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAajC,SAAS,aAAa,MAAsB;AAC1C,SAAO,KACJ,YAAY,EACZ,QAAQ,iBAAiB,EAAE,EAC3B,QAAQ,QAAQ,GAAG,EACnB,QAAQ,OAAO,GAAG,EAClB,KAAK;AACV;AAEO,IAAM,iBAAa,6BAAc;AAAA,EACtC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,IAAE,SAAM,mBAAAC,QAAG,OAAO,mBAAAA,QAAG,MAAM,kBAAkB,CAAC,CAAC;AAE/C,QAAI;AACJ,QAAI,cAAc,KAAK,MAAM,GAAG;AAC9B,eAAS,KAAK;AAAA,IAChB,OAAO;AACL,YAAM,YAAY,MAAMC,uBAAsB;AAC9C,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,eAAS;AAAA,IACX;AAEA,UAAM,eAAe,gBAAgB,MAAM;AAC3C,UAAM,cAAc,qBAAqB,MAAM;AAE/C,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,QAAQ,CAAC,WAAW,QAAQ,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG;AACjE,iBAAW,KAAK;AAAA,IAClB,OAAO;AACL,YAAM,aAAa,MAAQ,UAAO;AAAA,QAChC,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,OAAO;AAAA,YACP,OAAO,WAAW,uBAAuB,aAAa;AAAA,YACtD,MAAM,WAAW,uBAAuB,wBAAwB;AAAA,UAClE;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAM,YAAS,UAAU,GAAG;AAC1B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,iBAAW;AAAA,IACb;AAEA,UAAM,YAAY,aAAa,YAAY,aAAa,gBAAgB;AAExE,QAAI,KAAK,MAAM;AACb,iBAAW,KAAK;AAAA,IAClB,OAAO;AACL,YAAM,aAAa,MAAQ,QAAK;AAAA,QAC9B,SAAS,SAAS,SAAS;AAAA,QAC3B,aAAa,aAAa,YAAY,eAAe,aAAa,SAAS,YAAY;AAAA,QACvF,UAAU,CAAC,UAAU;AACnB,cAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAC1B,cAAI,MAAM,SAAS,EAAG,QAAO;AAC7B,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,UAAM,YAAS,UAAU,GAAG;AAC1B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,iBAAW;AAAA,IACb;AAEA,UAAM,OAAO,aAAa,QAAQ;AAClC,UAAM,YAAY,aAAa;AAC/B,UAAM,UAAU,aAAa;AAC7B,UAAM,SAAS,aAAa;AAE5B,QAAI;AACJ,QAAI;AAEJ,QAAI,SAAS;AACX,uBAAa,wBAAK,YAAY,WAAW,IAAI;AAC7C,oBAAc;AAAA,IAChB,OAAO;AACL,YAAM,YAAY,YAAY,YAAY,cAAc,YAAY;AACpE,YAAM,YAAY;AAClB,uBAAa,wBAAK,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE;AAClD,oBAAc;AAAA,IAChB;AAEA,UAAM,uBAAuB,MAAc;AACzC,UAAI,QAAS,QAAO;AACpB,UAAI,UAAW,QAAO,aAAa;AACnC,aAAO,aAAa;AAAA,IACtB;AAEA,UAAM,YAAY,UACd,aACA,YACE,iBACA,wBAAK,YAAY,UAAU,GAAG,IAAI,GAAG,qBAAqB,CAAC,EAAE;AAEnE,UAAM,SAAS,UACX,UAAU,UAAU,IACpB,WAAW,UAAU,KAAM,CAAC,aAAa,WAAW,SAAS;AAEjE,QAAI,QAAQ;AACV,YAAM,cAAc,UAChB,OACA,YACE,GAAG,IAAI,QACP,GAAG,IAAI,GAAG,qBAAqB,CAAC;AACtC,YAAM,kBAAkB,MAAQ,WAAQ;AAAA,QACtC,SAAS,GAAG,UAAU,WAAW,CAAC;AAAA,QAClC,cAAc;AAAA,MAChB,CAAC;AAED,UAAM,YAAS,eAAe,KAAK,CAAC,iBAAiB;AACnD,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,IAAM,WAAQ;AACpB,MAAE,MAAM,YAAY,SAAS,KAAK;AAElC,QAAI;AACF,UAAI,SAAS;AACX,kBAAU,UAAU;AACpB,sBAAU,wBAAK,YAAY,YAAY,CAAC;AACxC,cAAM,kBAAc,wBAAK,YAAY,UAAU;AAC/C,kBAAU,aAAa,cAAc;AACrC,sBAAU,wBAAK,YAAY,cAAc,YAAY,GAAG,wBAAwB;AAEhF,YAAI,WAAW,UAAU;AACvB,gBAAM,mBAAe,wBAAK,YAAY,WAAW;AACjD,gBAAM,UAAU,SAAS,WAAW;AACpC,oBAAU,cAAc,OAAO;AAC/B,qBAAW,WAAW;AAAA,QACxB;AAAA,MACF,OAAO;AACL,cAAM,YAAY,YAAY,YAAY,cAAc,YAAY;AACpE,kBAAU,SAAS;AACnB,cAAM,WAAW,YAAY,mBAAmB;AAEhD,YAAI,WAAW;AACb,oBAAU,YAAY,QAAQ;AAAA,QAChC,WAAW,QAAQ;AACjB,oBAAU,YAAY,QAAQ;AAC9B,cAAI,WAAW,UAAU;AACvB,kBAAM,cAAU,wBAAK,WAAW,eAAe,GAAG,IAAI,KAAK,CAAC;AAC5D,kBAAM,UAAU,SAAS,UAAU;AACnC,sBAAU,SAAS,OAAO;AAC1B,uBAAW,UAAU;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAEA,QAAE,KAAK,GAAG,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC,CAAC,UAAU;AAE1E,cAAQ,IAAI;AACZ,cAAQ,IAAI,mBAAAD,QAAG,IAAI,YAAY,IAAI,UAAU,aAAa,KAAK,CAAC;AAChE,UAAI,SAAS;AACX,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,eAAe,IAAI,UAAU,WAAW,CAAC;AAC5D,cAAM,gBAAgB,WAAW,WAAW,cAAc;AAC1D,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,eAAe,IAAI,cAAU,wBAAK,aAAa,aAAa,CAAC,CAAC;AAAA,MACnF,WAAW,WAAW;AACpB,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,UAAU,IAAI,UAAU,WAAW,CAAC;AAAA,MACzD,OAAO;AACL,cAAM,YAAY,WAAW,eACzB,wBAAK,YAAY,UAAU,eAAe,GAAG,IAAI,KAAK,CAAC,IACvD;AACJ,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,UAAU,IAAI,UAAU,SAAS,CAAC;AAAA,MACvD;AACA,cAAQ,IAAI;AAEZ,MAAE;AAAA,QACA,mBAAAA,QAAG,MAAM,UAAK,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC,CAAC,0CAA0C;AAAA,MAChH;AAAA,IACF,SAAS,OAAO;AACd,QAAE,KAAK,QAAQ;AACf,MAAE,UAAO,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe,EAAE;AAC7E,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;;;AEvTD,IAAAE,gBAA8B;AAC9B,IAAAC,KAAmB;AACnB,IAAAC,qBAAe;AACf,mBAAiC;AACjC,IAAAC,oBAAqB;AAwBrB,eAAe,4BACb,QACA,aACe;AACf,QAAM,EAAE,aAAa,UAAU,UAAU,IAAI;AAE7C,MAAI,WAAW,UAAU;AACvB,UAAM,YAAY,UAAU,UAAU,KAAK;AAC3C,eAAW,QAAQ,WAAW;AAC5B,YAAM,iBAAa,wBAAK,UAAU,IAAI;AACtC,YAAM,UAAU,SAAS,UAAU;AACnC,YAAM,cAAc,eAAe,IAAI;AACvC,YAAM,eAAW,wBAAK,UAAU,WAAW;AAE3C,UAAI,qBAAqB;AACzB,UAAI,SAAS,UAAU;AACrB,6BAAqB,6BAA6B,OAAO;AAAA,MAC3D;AAEA,gBAAU,UAAU,kBAAkB;AAEtC,YAAM,EAAE,QAAAC,QAAO,IAAI,MAAM,OAAO,IAAS;AACzC,MAAAA,QAAO,UAAU;AAAA,IACnB;AAEA,UAAM,YAAY,SAAS,SAAS;AACpC,eAAW,YAAY,WAAW;AAChC,YAAM,gBAAY,wBAAK,WAAW,QAAQ;AAC1C,YAAM,kBAAc,wBAAK,WAAW,UAAU;AAC9C,YAAM,mBAAe,wBAAK,WAAW,WAAW;AAEhD,YAAM,EAAE,YAAAC,YAAW,IAAI,MAAM,OAAO,IAAS;AAC7C,UAAIA,YAAW,WAAW,GAAG;AAC3B,cAAM,UAAU,SAAS,WAAW;AACpC,kBAAU,cAAc,OAAO;AAC/B,cAAM,EAAE,QAAAD,QAAO,IAAI,MAAM,OAAO,IAAS;AACzC,QAAAA,QAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAAA,EACF,WAAW,WAAW,sBAAsB;AAC1C,UAAM,YAAY,UAAU,UAAU,KAAK;AAC3C,eAAW,QAAQ,WAAW;AAC5B,YAAM,iBAAa,wBAAK,UAAU,IAAI;AACtC,YAAM,UAAU,SAAS,UAAU;AACnC,YAAM,qBAAqB,4BAA4B,SAAS,IAAI;AACpE,gBAAU,YAAY,kBAAkB;AAAA,IAC1C;AAEA,UAAM,eAAe,UAAU,aAAa,KAAK;AACjD,eAAW,QAAQ,cAAc;AAC/B,YAAM,iBAAa,wBAAK,aAAa,IAAI;AACzC,YAAM,UAAU,SAAS,UAAU;AACnC,YAAM,qBAAqB,2BAA2B,SAAS,IAAI;AACnE,gBAAU,YAAY,kBAAkB;AAAA,IAC1C;AAAA,EACF;AACF;AAEO,IAAM,kBAAc,6BAAc;AAAA,EACvC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,UAAU,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS,CAAC,KAAK;AACvD,UAAM,qBAAqB,WAAW,KAAK;AAC3C,UAAM,kBAAkB,WAAW,KAAK;AACxC,UAAM,mBAAmB,WAAW,KAAK;AAEzC,IAAE,SAAM,mBAAAE,QAAG,OAAO,mBAAAA,QAAG,MAAM,mBAAmB,CAAC,CAAC;AAEhD,QAAI;AACJ,QAAI,cAAc,KAAK,MAAM,GAAG;AAC9B,eAAS,KAAK;AAAA,IAChB,OAAO;AACL,YAAM,YAAY,MAAMC,uBAAsB;AAC9C,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,eAAS;AAAA,IACX;AAEA,UAAM,eAAe,gBAAgB,MAAM;AAC3C,UAAM,cAAc,qBAAqB,MAAM;AAC/C,UAAM,EAAE,SAAS,aAAa,UAAU,UAAU,IAAI;AAEtD,UAAM,iBAAiB,WAAW,WAAW,SAAS;AACtD,UAAM,mBAAmB,UAAU,aAAa,KAAK;AACrD,UAAM,gBAAgB,UAAU,UAAU,cAAc;AACxD,UAAM,iBAAiB,SAAS,SAAS;AACzC,UAAM,cAAc,iBAAiB,SAAS,KAAK,cAAc,SAAS,KAAK,eAAe,SAAS;AAEvG,YAAQ,IAAI,mBAAAD,QAAG,IAAI,aAAa,UAAU,aAAa,KAAK,CAAC,EAAE,CAAC;AAChE,YAAQ,IAAI;AAEZ,QAAI,eAAe,CAAC,KAAK,OAAO;AAC9B,gBAAU,iBAAiB;AAC3B,UAAI,iBAAiB,SAAS,GAAG;AAC/B,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,KAAK,aAAa,aAAa,KAAK,iBAAiB,MAAM,QAAQ,CAAC;AAAA,MACzF;AACA,UAAI,cAAc,SAAS,GAAG;AAC5B,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,KAAK,aAAa,UAAU,KAAK,cAAc,MAAM,QAAQ,CAAC;AAAA,MACnF;AACA,UAAI,eAAe,SAAS,GAAG;AAC7B,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,aAAa,eAAe,MAAM,cAAc,CAAC;AAAA,MACtE;AACA,cAAQ,IAAI;AAEZ,YAAM,iBAAiB,MAAQ,WAAQ;AAAA,QACrC,SAAS;AAAA,QACT,cAAc;AAAA,MAChB,CAAC;AAED,UAAM,YAAS,cAAc,KAAK,CAAC,gBAAgB;AACjD,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,IAAM,WAAQ;AAEpB,QAAI;AACF,gBAAU,OAAO;AAEjB,UAAI,oBAAoB;AACtB,UAAE,MAAM,WAAW,aAAa,aAAa,KAAK;AAClD,kBAAM,+BAAiB,GAAG,QAAQ,uBAAuB,QAAQ,IAAI;AAAA,UACnE,KAAK;AAAA,UACL,OAAO;AAAA,QACT,CAAC;AACD,UAAE,KAAK,GAAG,aAAa,cAAc,OAAO,CAAC,EAAE,YAAY,IAAI,aAAa,cAAc,MAAM,CAAC,CAAC,UAAU;AAAA,MAC9G;AAEA,UAAI,iBAAiB;AACnB,UAAE,MAAM,WAAW,aAAa,UAAU,KAAK;AAC/C,kBAAM,+BAAiB,GAAG,QAAQ,oBAAoB,QAAQ,IAAI;AAAA,UAChE,KAAK;AAAA,UACL,OAAO;AAAA,QACT,CAAC;AACD,UAAE,KAAK,GAAG,aAAa,WAAW,OAAO,CAAC,EAAE,YAAY,IAAI,aAAa,WAAW,MAAM,CAAC,CAAC,UAAU;AAAA,MACxG;AAEA,UAAI,kBAAkB;AACpB,UAAE,MAAM,mBAAmB;AAC3B,kBAAM,+BAAiB,GAAG,QAAQ,qBAAqB,QAAQ,IAAI;AAAA,UACjE,KAAK;AAAA,UACL,OAAO;AAAA,QACT,CAAC;AACD,UAAE,KAAK,gBAAgB;AAAA,MACzB;AAEA,UAAI,WAAW,kBAAkB;AAC/B,UAAE,MAAM,gCAAgC;AACxC,cAAM,4BAA4B,QAAQ,WAAW;AACrD,UAAE,KAAK,iBAAiB;AAAA,MAC1B;AAEA,mBAAa;AACb,cAAQ,IAAI;AAEZ,YAAM,oBAAoB,WAAW,WAAW,SAAS;AACzD,YAAM,cAAc,UAAU,aAAa,KAAK;AAChD,YAAM,WAAW,UAAU,UAAU,iBAAiB;AACtD,YAAM,YAAY,SAAS,SAAS;AAEpC,UAAI,oBAAoB;AACtB,cAAM,QAAQ,YAAY,SAAS,iBAAiB;AACpD;AAAA,UACE,GAAG,aAAa,cAAc,OAAO,CAAC,EAAE,YAAY,IAAI,aAAa,cAAc,MAAM,CAAC,CAAC,KAAK,UAAU,YAAY,OAAO,SAAS,CAAC,CAAC,YACrI,QAAQ,IAAI,mBAAAA,QAAG,MAAM,MAAM,KAAK,OAAO,IAAI;AAAA,QAChD;AAAA,MACF;AAEA,UAAI,iBAAiB;AACnB,cAAM,QAAQ,SAAS,SAAS,cAAc;AAC9C;AAAA,UACE,GAAG,aAAa,WAAW,OAAO,CAAC,EAAE,YAAY,IAAI,aAAa,WAAW,MAAM,CAAC,CAAC,KAAK,UAAU,SAAS,OAAO,SAAS,CAAC,CAAC,YAC5H,QAAQ,IAAI,mBAAAA,QAAG,MAAM,MAAM,KAAK,OAAO,IAAI;AAAA,QAChD;AAAA,MACF;AAEA,UAAI,kBAAkB;AACpB,cAAM,QAAQ,UAAU,SAAS,eAAe;AAChD;AAAA,UACE,WAAW,UAAU,UAAU,OAAO,SAAS,CAAC,CAAC,YAC9C,QAAQ,IAAI,mBAAAA,QAAG,MAAM,MAAM,KAAK,OAAO,IAAI;AAAA,QAChD;AAAA,MACF;AAEA,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,MAAM,iDAA4C,aAAa,KAAK,GAAG,CAAC;AAAA,IACrF,SAAS,OAAO;AACd,QAAE,KAAK,QAAQ;AACf,MAAE,UAAO,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe,EAAE;AAC7E,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;;;ACjQD,IAAAE,KAAmB;AACnB,IAAAC,gBAA8B;AAC9B,IAAAC,oBAAqB;AACrB,IAAAC,qBAAe;AAkBf,SAAS,mBACP,SACA,WACoB;AACpB,MAAI,WAAW;AACb,UAAM,YAAY,QAAQ,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;AAC9C,QACE,aACA,CAAC,UAAU,WAAW,GAAG,KACzB,CAAC,UAAU,WAAW,KAAK,GAC3B;AACA,aAAO,UAAU,MAAM,GAAG,EAAE,KAAK,UAAU,SAAS,KAAK,QAAQ;AAAA,IACnE;AAAA,EACF,OAAO;AACL,UAAM,QAAQ,QAAQ,MAAM,qBAAqB;AACjD,QAAI,OAAO;AACT,aAAO,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,CAAC,EAAE,SAAS,KAAK,QAAQ;AAAA,IACxE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,SACP,KACA,WACA,WACY;AACZ,QAAM,QAAQ,UAAU,KAAK,SAAS;AACtC,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,UAAM,eAAW,wBAAK,KAAK,IAAI;AAC/B,UAAM,UAAU,WAAW,QAAQ,IAAI,SAAS,QAAQ,IAAI;AAC5D,WAAO;AAAA,MACL,MAAM,KAAK,QAAQ,WAAW,EAAE;AAAA,MAChC,MAAM;AAAA,MACN,aAAa,mBAAmB,SAAS,SAAS;AAAA,IACpD;AAAA,EACF,CAAC;AACH;AAEA,SAAS,UAAU,KAAyB;AAC1C,QAAM,YAAY,SAAS,GAAG;AAC9B,SAAO,UAAU,IAAI,CAAC,cAAc;AAClC,UAAM,gBAAY,wBAAK,KAAK,SAAS;AACrC,UAAM,gBAAY,wBAAK,WAAW,WAAW;AAC7C,UAAM,mBAAe,wBAAK,WAAW,UAAU;AAE/C,QAAI;AAEJ,QAAI,WAAW,SAAS,GAAG;AACzB,YAAM,UAAU,SAAS,SAAS;AAClC,oBAAc,mBAAmB,SAAS,KAAK;AAAA,IACjD,WAAW,WAAW,YAAY,GAAG;AACnC,YAAM,UAAU,SAAS,YAAY;AACrC,oBAAc,mBAAmB,SAAS,KAAK;AAAA,IACjD;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,kBAAc,6BAAc;AAAA,EACvC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,UAAU,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS,CAAC,KAAK;AACvD,UAAM,qBAAqB,WAAW,KAAK;AAC3C,UAAM,kBAAkB,WAAW,KAAK;AACxC,UAAM,mBAAmB,WAAW,KAAK;AAEzC,IAAE,SAAM,mBAAAC,QAAG,OAAO,mBAAAA,QAAG,MAAM,mBAAmB,CAAC,CAAC;AAEhD,UAAM,cAAc,eAAe;AACnC,UAAM,WAAW,YAAY;AAC7B,UAAM,YAAY,aAAa;AAE/B,UAAM,WAAW,qBACb,SAAS,aAAa,OAAO,IAAI,IACjC,CAAC;AACL,UAAM,QAAQ,kBAAkB,SAAS,UAAU,QAAQ,KAAK,IAAI,CAAC;AACrE,UAAM,SAAS,mBAAmB,UAAU,SAAS,IAAI,CAAC;AAE1D,QAAI,SAAS,WAAW,KAAK,MAAM,WAAW,KAAK,OAAO,WAAW,GAAG;AACtE,cAAQ,IAAI;AACZ,cAAQ,IAAI,mBAAAA,QAAG,OAAO,wCAAwC,CAAC;AAC/D,cAAQ;AAAA,QACN,mBAAAA,QAAG,IAAI,QAAQ,IACb,UAAU,iBAAiB,IAC3B,mBAAAA,QAAG,IAAI,kBAAkB;AAAA,MAC7B;AACA,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,IAAI,iBAAiB,CAAC;AACjC;AAAA,IACF;AAEA,iBAAa;AAEb,QAAI,sBAAsB,SAAS,SAAS,GAAG;AAC7C,cAAQ,IAAI;AACZ,cAAQ;AAAA,QACN,mBAAAA,QAAG,KAAK,mBAAAA,QAAG,KAAK,sBAAe,CAAC,IAAI,mBAAAA,QAAG,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,MACpE;AACA,cAAQ,IAAI;AAEZ,eAAS,QAAQ,CAAC,QAAQ;AACxB,gBAAQ,IAAI,KAAK,mBAAAA,QAAG,MAAM,QAAG,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE;AACvD,YAAI,IAAI,aAAa;AACnB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;AAAA,QAC9C;AACA,YAAI,KAAK,SAAS;AAChB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,mBAAmB,MAAM,SAAS,GAAG;AACvC,cAAQ,IAAI;AACZ,cAAQ;AAAA,QACN,mBAAAA,QAAG,KAAK,mBAAAA,QAAG,KAAK,mBAAY,CAAC,IAAI,mBAAAA,QAAG,IAAI,KAAK,MAAM,MAAM,GAAG;AAAA,MAC9D;AACA,cAAQ,IAAI;AAEZ,YAAM,QAAQ,CAAC,SAAS;AACtB,gBAAQ,IAAI,KAAK,mBAAAA,QAAG,MAAM,QAAG,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE;AACxD,YAAI,KAAK,aAAa;AACpB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;AAAA,QAC/C;AACA,YAAI,KAAK,SAAS;AAChB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,oBAAoB,OAAO,SAAS,GAAG;AACzC,cAAQ,IAAI;AACZ,cAAQ;AAAA,QACN,mBAAAA,QAAG,KAAK,mBAAAA,QAAG,KAAK,oBAAa,CAAC,IAAI,mBAAAA,QAAG,IAAI,KAAK,OAAO,MAAM,GAAG;AAAA,MAChE;AACA,cAAQ,IAAI;AAEZ,aAAO,QAAQ,CAAC,UAAU;AACxB,gBAAQ,IAAI,KAAK,mBAAAA,QAAG,MAAM,QAAG,CAAC,IAAI,UAAU,MAAM,IAAI,CAAC,EAAE;AACzD,YAAI,MAAM,aAAa;AACrB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,MAAM,WAAW,EAAE,CAAC;AAAA,QAChD;AACA,YAAI,KAAK,SAAS;AAChB,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,OAAO,MAAM,IAAI,EAAE,CAAC;AAAA,QACzC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,YAAQ,IAAI;AACZ,iBAAa;AAEb,UAAM,QAAQ,SAAS,SAAS,MAAM,SAAS,OAAO;AACtD,IAAE,SAAM,mBAAAA,QAAG,IAAI,UAAU,KAAK,QAAQ,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC;AAAA,EACjE;AACF,CAAC;;;ACjND,IAAAC,gBAA8B;AAC9B,IAAAC,KAAmB;AACnB,IAAAC,qBAAe;AACf,IAAAC,oBAAqB;AAyBd,IAAM,oBAAgB,6BAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,IAAE,SAAM,mBAAAC,QAAG,OAAO,mBAAAA,QAAG,MAAM,qBAAqB,CAAC,CAAC;AAElD,QAAI;AACJ,QAAI,cAAc,KAAK,MAAM,GAAG;AAC9B,eAAS,KAAK;AAAA,IAChB,OAAO;AACL,YAAM,YAAY,MAAMC,uBAAsB;AAC9C,UAAM,YAAS,SAAS,GAAG;AACzB,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,eAAS;AAAA,IACX;AAEA,UAAM,eAAe,gBAAgB,MAAM;AAC3C,UAAM,cAAc,qBAAqB,MAAM;AAC/C,UAAM,EAAE,aAAa,UAAU,UAAU,IAAI;AAE7C,UAAM,iBAAiB,aAAa;AACpC,UAAM,WAAW,UAAU,aAAa,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,OAAO,EAAE,CAAC;AAC9E,UAAM,QAAQ,UAAU,UAAU,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,gBAAgB,EAAE,CAAC;AAC1F,UAAM,SAAS,SAAS,SAAS;AAEjC,YAAQ,IAAI,mBAAAD,QAAG,IAAI,aAAa,UAAU,aAAa,KAAK,CAAC,EAAE,CAAC;AAChE,YAAQ,IAAI;AAEZ,QAAI,SAAS,WAAW,KAAK,MAAM,WAAW,KAAK,OAAO,WAAW,GAAG;AACtE,cAAQ,IAAI;AACZ,cAAQ,IAAI,mBAAAA,QAAG,OAAO,QAAQ,aAAa,aAAa,KAAK,aAAa,UAAU,wBAAwB,CAAC;AAC7G,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,IAAI,eAAe,CAAC;AAC/B;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,QAAQ,CAAC,WAAW,QAAQ,OAAO,EAAE,SAAS,KAAK,IAAI,GAAG;AACjE,iBAAW,KAAK;AAAA,IAClB,OAAO;AACL,YAAM,cAA8B,CAAC;AAErC,UAAI,SAAS,SAAS,GAAG;AACvB,oBAAY,KAAK;AAAA,UACf,OAAO;AAAA,UACP,OAAO,WAAW,uBAAuB,aAAa;AAAA,UACtD,MAAM,GAAG,SAAS,MAAM;AAAA,QAC1B,CAAC;AAAA,MACH;AAEA,UAAI,MAAM,SAAS,GAAG;AACpB,oBAAY,KAAK;AAAA,UACf,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM,GAAG,MAAM,MAAM;AAAA,QACvB,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,SAAS,GAAG;AACrB,oBAAY,KAAK;AAAA,UACf,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM,GAAG,OAAO,MAAM;AAAA,QACxB,CAAC;AAAA,MACH;AAEA,YAAM,aAAa,MAAQ,UAAO;AAAA,QAChC,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAED,UAAM,YAAS,UAAU,GAAG;AAC1B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,iBAAW;AAAA,IACb;AAEA,UAAM,YAAY,aAAa;AAC/B,UAAM,SAAS,aAAa;AAC5B,UAAM,UAAU,aAAa;AAC7B,UAAM,QAAQ,YAAY,WAAW,SAAS,QAAQ;AACtD,UAAM,MAAM,YAAY,cAAc,SAAS,WAAW;AAC1D,UAAM,YAAY,YAAY,QAAQ,SAAS,iBAAiB;AAChE,UAAM,YAAY,YAAY,aAAa,gBAAgB;AAE3D,QAAI,MAAM,WAAW,GAAG;AACtB,MAAE,UAAO,MAAM,SAAS,SAAS;AACjC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI,KAAK,QAAQ,MAAM,SAAS,KAAK,IAAI,GAAG;AAC1C,iBAAW,KAAK;AAAA,IAClB,OAAO;AACL,YAAM,cAA8B,MAAM,IAAI,CAAC,UAAU;AAAA,QACvD,OAAO;AAAA,QACP,OAAO;AAAA,MACT,EAAE;AAEF,YAAM,aAAa,MAAQ,UAAO;AAAA,QAChC,SAAS,UAAU,SAAS;AAAA,QAC5B,SAAS;AAAA,MACX,CAAC;AAED,UAAM,YAAS,UAAU,GAAG;AAC1B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,iBAAW;AAAA,IACb;AAEA,UAAM,aAAa,cACf,wBAAK,KAAK,QAAQ,QAClB,wBAAK,KAAK,GAAG,QAAQ,GAAG,SAAS,EAAE;AAEvC,UAAM,SAAS,UAAU,UAAU,UAAU,IAAI,WAAW,UAAU;AAEtE,QAAI,CAAC,QAAQ;AACX,MAAE,UAAO,GAAG,SAAS,KAAK,QAAQ,aAAa;AAC/C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI,CAAC,KAAK,OAAO;AACf,YAAM,cAAc,UAAU,WAAW,WAAW;AACpD,YAAM,eAAe,MAAQ,WAAQ;AAAA,QACnC,SAAS,mCAAmC,UAAU,WAAW,CAAC,IAAI,UAAU,mDAAmD,EAAE;AAAA,QACrI,cAAc;AAAA,MAChB,CAAC;AAED,UAAM,YAAS,YAAY,KAAK,CAAC,cAAc;AAC7C,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,QAAI;AACF,iBAAW,UAAU;AACrB,YAAM,cAAc,UAAU,WAAW,WAAW;AACpD,cAAQ,IAAI;AACZ,mBAAa,WAAW,UAAU,WAAW,CAAC,SAAS,aAAa,KAAK,EAAE;AAC3E,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,MAAM,cAAS,CAAC;AAAA,IAC7B,SAAS,OAAO;AACd,MAAE,UAAO,UAAU,iBAAiB,QAAQ,MAAM,UAAU,eAAe,EAAE;AAC7E,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;;;AC7MD,IAAAE,gBAA8B;AAC9B,IAAAC,KAAmB;AACnB,IAAAC,qBAAe;AACf,gCAAsB;AACtB,IAAAC,qBAA8B;AAC9B,IAAAC,mBAA8B;AAC9B,IAAAC,kBAAmD;;;ACNnD,IAAAC,kBAQO;AACP,qBAAwB;AACxB,IAAAC,oBAAqB;AAmBrB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AAEd,SAAS,oBAA4B;AAC1C,aAAO,4BAAK,wBAAQ,GAAG,cAAc;AACvC;AAEO,SAAS,qBAA6B;AAC3C,aAAO,wBAAK,kBAAkB,GAAG,YAAY;AAC/C;AAEO,SAAS,kBAAwB;AACtC,QAAM,YAAY,kBAAkB;AACpC,MAAI,KAAC,4BAAW,SAAS,GAAG;AAC1B,mCAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AACF;AAEO,SAAS,kBAA+B;AAC7C,QAAM,aAAa,mBAAmB;AACtC,MAAI,KAAC,4BAAW,UAAU,GAAG;AAC3B,WAAO,EAAE,SAAS,CAAC,EAAE;AAAA,EACvB;AAEA,MAAI;AACF,UAAM,cAAU,8BAAa,YAAY,OAAO;AAChD,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,QAAQ;AACN,WAAO,EAAE,SAAS,CAAC,EAAE;AAAA,EACvB;AACF;AAEO,SAAS,gBAAgB,QAA2B;AACzD,kBAAgB;AAChB,QAAM,aAAa,mBAAmB;AACtC,qCAAc,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AACpE;AAEO,SAAS,mBAAmB,cAA8B;AAC/D,aAAO;AAAA,QACL,wBAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,aAAa,QAAQ,MAAM,EAAE;AAAA,EAC/B;AACF;AAEO,SAAS,mBAAmB,cAA8B;AAC/D,aAAO,4BAAK,wBAAQ,GAAG,gBAAgB,GAAG,YAAY,MAAM;AAC9D;AAEA,SAAS,sBAAsB,cAA8B;AAC3D,QAAM,UAAU,mBAAmB,YAAY;AAC/C,QAAM,UAAU,mBAAmB,YAAY;AAE/C,SAAO;AAAA,0CACiC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAY1C,OAAO;AAAA,YACP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUnB;AAEA,SAAS,sBACP,WACA,cACQ;AACR,QAAM,UAAU,mBAAmB,YAAY;AAC/C,QAAM,UAAU,mBAAmB,YAAY;AAE/C,SAAO;AAAA,sBACa,SAAS,OAAO,YAAY;AAAA,EAChD,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKS,OAAO;AAAA,oBACP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAOD,SAAS;AAAA;AAEnC;AAEO,SAAS,wBAAgC;AAC9C,QAAM,WAAO,wBAAQ;AACrB,QAAM,QAAQ,QAAQ,IAAI,SAAS;AAEnC,MAAI,MAAM,SAAS,KAAK,GAAG;AACzB,eAAO,wBAAK,MAAM,QAAQ;AAAA,EAC5B;AACA,MAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,UAAM,kBAAc,wBAAK,MAAM,eAAe;AAC9C,YAAI,4BAAW,WAAW,GAAG;AAC3B,aAAO;AAAA,IACT;AACA,eAAO,wBAAK,MAAM,SAAS;AAAA,EAC7B;AAEA,aAAO,wBAAK,MAAM,QAAQ;AAC5B;AAEO,SAAS,gBAAwB;AACtC,aAAO,4BAAK,wBAAQ,GAAG,KAAK;AAC9B;AAEO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAEA,SAAS,aAAa,QAAsB;AAC1C,MAAI,KAAC,4BAAW,MAAM,GAAG;AACvB,mCAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACvC;AACF;AAEO,SAAS,uBACd,WACA,cACA,WACQ;AACR,eAAa,SAAS;AAEtB,QAAM,iBAAa,wBAAK,WAAW,SAAS;AAC5C,QAAM,gBAAgB,sBAAsB,YAAY;AAExD,qCAAc,YAAY,eAAe,OAAO;AAChD,iCAAU,YAAY,GAAK;AAE3B,SAAO;AACT;AAEO,SAAS,iBACd,WACA,cACA,iBACM;AACN,QAAM,kBAAkB,sBAAsB,WAAW,YAAY;AAErE,MAAI,KAAC,4BAAW,eAAe,GAAG;AAChC,uCAAc,iBAAiB,IAAI,OAAO;AAAA,EAC5C;AAEA,QAAM,sBAAkB,8BAAa,iBAAiB,OAAO;AAC7D,MAAI,gBAAgB,SAAS,uBAAuB,SAAS,EAAE,GAAG;AAChE,qBAAiB,WAAW,eAAe;AAAA,EAC7C;AAEA,sCAAe,iBAAiB,iBAAiB,OAAO;AAC1D;AAEO,SAAS,iBACd,WACA,iBACS;AACT,MAAI,KAAC,4BAAW,eAAe,GAAG;AAChC,WAAO;AAAA,EACT;AAEA,QAAM,cAAU,8BAAa,iBAAiB,OAAO;AACrD,QAAM,cAAc,uBAAuB,SAAS;AACpD,QAAM,YAAY,2BAA2B,SAAS;AAEtD,QAAM,aAAa,QAAQ,QAAQ,WAAW;AAC9C,MAAI,eAAe,IAAI;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,QAAQ,QAAQ,SAAS;AAC1C,MAAI,aAAa,IAAI;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,MAAM,GAAG,UAAU;AAC1C,QAAM,QAAQ,QAAQ,MAAM,WAAW,UAAU,MAAM;AAEvD,QAAM,cAAc,SAAS,OAAO,QAAQ,WAAW,MAAM;AAC7D,qCAAc,iBAAiB,YAAY,OAAO;AAElD,SAAO;AACT;AAEO,SAAS,uBAAuB,YAA6B;AAClE,MAAI,KAAC,4BAAW,UAAU,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,MAAI;AACF,oCAAW,UAAU;AACrB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAeO,SAAS,YAAY,SAAgD;AAC1E,QAAM,EAAE,WAAW,cAAc,gBAAgB,IAAI;AAErD,MAAI;AACF,QAAI;AACJ,QAAI;AAEJ,YAAQ,iBAAiB;AAAA,MACvB,KAAK,gBAAgB;AACnB,0BAAkB,sBAAsB;AACxC,yBAAiB,WAAW,cAAc,eAAe;AACzD;AAAA,MACF;AAAA,MACA,KAAK,iBAAiB;AACpB,qBAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA,kBAAkB;AAAA,QACpB;AACA;AAAA,MACF;AAAA,MACA,KAAK,YAAY;AACf,qBAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA,cAAc;AAAA,QAChB;AACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS,gBAAgB;AAC/B,WAAO,QAAQ,SAAS,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC;AAAA,IACF;AACA,oBAAgB,MAAM;AAEtB,WAAO,EAAE,SAAS,MAAM,YAAY,gBAAgB;AAAA,EACtD,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,YAAY,WAA4B;AACtD,QAAM,SAAS,gBAAgB;AAC/B,QAAM,QAAQ,OAAO,QAAQ,SAAS;AAEtC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,UAAU;AAEd,UAAQ,MAAM,iBAAiB;AAAA,IAC7B,KAAK,gBAAgB;AACnB,YAAM,kBAAkB,sBAAsB;AAC9C,gBAAU,iBAAiB,WAAW,eAAe;AACrD;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAM,iBAAa,wBAAK,kBAAkB,GAAG,SAAS;AACtD,gBAAU,uBAAuB,UAAU;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,iBAAa,wBAAK,cAAc,GAAG,SAAS;AAClD,gBAAU,uBAAuB,UAAU;AAC3C;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO,QAAQ,SAAS;AAC/B,kBAAgB,MAAM;AAEtB,SAAO;AACT;AAEO,SAAS,oBAAoB,cAAyC;AAC3E,QAAM,SAAS,gBAAgB;AAE/B,aAAW,SAAS,OAAO,OAAO,OAAO,OAAO,GAAG;AACjD,QAAI,MAAM,iBAAiB,cAAc;AACvC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAYO,SAAS,YAAY,WAA4B;AACtD,QAAM,SAAS,gBAAgB;AAC/B,SAAO,aAAa,OAAO;AAC7B;AAEO,SAAS,kBAAkB,cAA8B;AAC9D,SAAO,aACJ,YAAY,EACZ,QAAQ,eAAe,SAAS,EAChC,QAAQ,QAAQ,GAAG,EACnB,QAAQ,eAAe,EAAE,EACzB,QAAQ,OAAO,GAAG,EAClB,QAAQ,UAAU,EAAE;AACzB;AAEO,SAAS,wBACd,UACQ;AACR,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEO,SAAS,kBAA2B;AACzC,QAAM,UAAU,QAAQ,IAAI,QAAQ;AACpC,QAAM,UAAU,cAAc;AAC9B,SAAO,QACJ,MAAM,GAAG,EACT,KAAK,CAACC,OAAMA,OAAM,WAAWA,OAAM,WAAWA,OAAM,WAAW;AACpE;AAEO,SAAS,2BAAmC;AACjD,QAAM,QAAQ,QAAQ,IAAI,SAAS;AACnC,QAAM,aAAa,MAAM,SAAS,KAAK,IAAI,aAAa;AAExD,SAAO,6BAA6B,UAAU;AAAA;AAAA;AAAA;AAAA,4CAIJ,UAAU;AACtD;;;AD9XA,SAAS,aAAqB;AAC5B,QAAM,iBAAa,gCAAQ,gCAAc,aAAe,CAAC;AACzD,QAAM,gBAAgB;AAAA,QACpB,yBAAK,YAAY,MAAM,MAAM,KAAK;AAAA,QAClC,yBAAK,YAAY,MAAM,KAAK;AAAA,EAC9B;AAEA,aAAW,WAAW,eAAe;AACnC,YAAI,4BAAW,OAAO,GAAG;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,cAAc,CAAC;AACxB;AAEA,SAAS,iBAAiB,YAA0B;AAClD,MAAI;AACF,mCAAU,YAAY,GAAK;AAAA,EAC7B,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,uBAAuC;AAC9C,QAAM,kBAAc,yBAAK,QAAQ,IAAI,QAAQ,IAAI,cAAc;AAC/D,MAAI,KAAC,4BAAW,WAAW,EAAG,QAAO,CAAC;AAEtC,MAAI;AACF,UAAM,WAAO,6BAAY,WAAW;AACpC,WAAO,KACJ,OAAO,CAAC,QAAQ,IAAI,WAAW,QAAQ,KAAK,IAAI,SAAS,MAAM,KAAK,QAAQ,YAAY,EACxF,IAAI,CAAC,QAAQ;AACZ,YAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE;AACnC,YAAM,aAAa,oBAAoB,IAAI;AAC3C,aAAO;AAAA,QACL;AAAA,QACA,UAAM,yBAAK,aAAa,GAAG;AAAA,QAC3B,OAAO,YAAY;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACL,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,SAAS,UAAU,YAAoB,MAAiC;AACtE,SAAO,IAAI,QAAQ,CAACC,aAAY;AAC9B,qBAAiB,UAAU;AAE3B,UAAM,YAAQ,iCAAM,YAAY,MAAM;AAAA,MACpC,OAAO;AAAA,IACT,CAAC;AAED,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,MAAAA,SAAQ,QAAQ,CAAC;AAAA,IACnB,CAAC;AAED,UAAM,GAAG,SAAS,MAAM;AACtB,MAAAA,SAAQ,CAAC;AAAA,IACX,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,oBACb,cACA,eACA,kBACA,kBACuE;AACvE,MAAI,CAAC,kBAAkB;AACrB,UAAM,oBAAoB,MAAQ,WAAQ;AAAA,MACxC,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAED,QAAM,YAAS,iBAAiB,KAAK,CAAC,mBAAmB;AACvD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI;AACJ,QAAM,iBAAiB,kBAAkB,YAAY;AAErD,MAAI,eAAe;AACjB,gBAAY;AAAA,EACd,OAAO;AACL,UAAM,cAAc,MAAQ,QAAK;AAAA,MAC/B,SAAS;AAAA,MACT,aAAa;AAAA,MACb,cAAc;AAAA,MACd,UAAU,CAAC,UAAU;AACnB,YAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAC1B,YAAI,CAAC,eAAe,KAAK,KAAK,EAAG,QAAO;AACxC,YAAI,YAAY,KAAK,EAAG,QAAO,UAAU,KAAK;AAC9C,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,QAAM,YAAS,WAAW,GAAG;AAC3B,aAAO;AAAA,IACT;AAEA,gBAAY;AAAA,EACd;AAEA,MAAI;AAEJ,MAAI,oBAAoB,CAAC,gBAAgB,iBAAiB,UAAU,EAAE,SAAS,gBAAgB,GAAG;AAChG,eAAW;AAAA,EACb,OAAO;AACL,UAAM,iBAAiB,MAAQ,UAAO;AAAA,MACpC,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM,sBAAsB;AAAA,QAC9B;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAM,YAAS,cAAc,GAAG;AAC9B,aAAO;AAAA,IACT;AAEA,eAAW;AAAA,EACb;AAEA,SAAO,EAAE,WAAW,SAAS;AAC/B;AAEA,eAAe,oBACb,cACA,WACA,UACkB;AAClB,QAAM,SAAS,YAAY;AAAA,IACzB;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,EACnB,CAAC;AAED,MAAI,CAAC,OAAO,SAAS;AACnB,iBAAa,2BAA2B,OAAO,KAAK,EAAE;AACtD,WAAO;AAAA,EACT;AAEA,UAAQ,IAAI;AACZ,eAAa,SAAS,UAAU,SAAS,CAAC,WAAW;AACrD,UAAQ,IAAI,mBAAAC,QAAG,IAAI,4BAAkB,wBAAwB,QAAQ,CAAC,EAAE,CAAC;AAEzE,MAAI,aAAa,cAAc,CAAC,gBAAgB,GAAG;AACjD,YAAQ,IAAI;AACZ,iBAAa,2BAA2B;AACxC,YAAQ,IAAI,mBAAAA,QAAG,IAAI,yBAAyB,CAAC,CAAC;AAAA,EAChD;AAEA,MAAI,aAAa,gBAAgB;AAC/B,YAAQ,IAAI;AACZ,YAAQ,IAAI,mBAAAA,QAAG,IAAI,iCAAiC,CAAC;AACrD,YAAQ,IAAI,mBAAAA,QAAG,IAAI,YAAY,sBAAsB,CAAC,EAAE,CAAC;AAAA,EAC3D;AAEA,UAAQ,IAAI;AACZ,UAAQ,IAAI,mBAAAA,QAAG,IAAI,UAAU,CAAC;AAC9B,UAAQ,IAAI,mBAAAA,QAAG,IAAI,KAAK,SAAS,0CAA0C,CAAC;AAC5E,UAAQ,IAAI,mBAAAA,QAAG,IAAI,KAAK,SAAS,2CAA2C,CAAC;AAE7E,SAAO;AACT;AAEA,eAAe,mBAAmB,cAAqC;AACrE,QAAM,aAAa,oBAAoB,YAAY;AAEnD,MAAI,CAAC,YAAY;AACf;AAAA,EACF;AAEA,QAAM,eAAe,MAAQ,WAAQ;AAAA,IACnC,SAAS,4BAA4B,WAAW,SAAS;AAAA,IACzD,cAAc;AAAA,EAChB,CAAC;AAED,MAAM,YAAS,YAAY,KAAK,CAAC,cAAc;AAC7C;AAAA,EACF;AAEA,QAAM,UAAU,YAAY,WAAW,SAAS;AAEhD,MAAI,SAAS;AACX,iBAAa,SAAS,UAAU,WAAW,SAAS,CAAC,UAAU;AAAA,EACjE,OAAO;AACL,iBAAa,0BAA0B,WAAW,SAAS,EAAE;AAAA,EAC/D;AACF;AAEA,eAAe,kBACb,cACA,eACA,kBACe;AACf,QAAM,gBAAgB,oBAAoB,YAAY;AAEtD,MAAI,eAAe;AACjB,YAAQ,IAAI;AACZ,cAAU,YAAY,UAAU,YAAY,CAAC,uBAAuB,UAAU,cAAc,SAAS,CAAC,EAAE;AACxG,YAAQ,IAAI,mBAAAA,QAAG,IAAI,4BAAkB,wBAAwB,cAAc,eAAe,CAAC,EAAE,CAAC;AAC9F,YAAQ,IAAI;AAEZ,UAAM,eAAe,MAAQ,UAAO;AAAA,MAClC,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAM,YAAS,YAAY,KAAK,iBAAiB,QAAQ;AACvD,MAAE,SAAM,mBAAAA,QAAG,IAAI,iBAAiB,CAAC;AACjC;AAAA,IACF;AAEA,QAAI,iBAAiB,UAAU;AAC7B,YAAM,UAAU,YAAY,cAAc,SAAS;AACnD,UAAI,SAAS;AACX,gBAAQ,IAAI;AACZ,qBAAa,SAAS,UAAU,cAAc,SAAS,CAAC,UAAU;AAClE,gBAAQ,IAAI;AACZ,QAAE,SAAM,mBAAAA,QAAG,MAAM,cAAS,CAAC;AAAA,MAC7B,OAAO;AACL,qBAAa,0BAA0B,cAAc,SAAS,EAAE;AAChE,QAAE,SAAM,mBAAAA,QAAG,OAAO,wBAAwB,CAAC;AAAA,MAC7C;AACA;AAAA,IACF;AAGA,gBAAY,cAAc,SAAS;AAAA,EACrC;AAGA,QAAM,cAAc,MAAM;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI,CAAC,aAAa;AAChB,IAAE,SAAM,mBAAAA,QAAG,IAAI,0BAA0B,CAAC;AAC1C;AAAA,EACF;AAEA,QAAM,UAAU,MAAM,oBAAoB,cAAc,YAAY,WAAW,YAAY,QAAQ;AAEnG,MAAI,SAAS;AACX,YAAQ,IAAI;AACZ,IAAE,SAAM,mBAAAA,QAAG,MAAM,cAAS,CAAC;AAAA,EAC7B,OAAO;AACL,IAAE,SAAM,mBAAAA,QAAG,OAAO,uBAAuB,CAAC;AAAA,EAC5C;AACF;AAEO,IAAM,sBAAkB,6BAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,IAAE,SAAM,mBAAAA,QAAG,OAAO,mBAAAA,QAAG,MAAM,uBAAuB,CAAC,CAAC;AAGpD,QAAI,QAAQ,aAAa,UAAU;AACjC,cAAQ,IAAI;AACZ,mBAAa,mCAAmC;AAChD,cAAQ,IAAI,mBAAAA,QAAG,IAAI,gEAAgE,CAAC;AACpF,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,IAAI,SAAS,CAAC;AACzB,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,QAAI,KAAK,MAAM;AACb,YAAM,YAAY,qBAAqB;AACvC,mBAAa;AACb,cAAQ,IAAI;AAEZ,UAAI,UAAU,WAAW,GAAG;AAC1B,kBAAU,mCAAmC;AAC7C,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,QAAQ,IAAI,UAAU,qBAAqB,IAAI,mBAAAA,QAAG,IAAI,iBAAiB,CAAC;AAAA,MAC7F,OAAO;AACL,gBAAQ,IAAI,mBAAAA,QAAG,KAAK,mBAAAA,QAAG,KAAK,+BAAwB,CAAC,IAAI,mBAAAA,QAAG,IAAI,KAAK,UAAU,MAAM,GAAG,CAAC;AACzF,gBAAQ,IAAI;AACZ,mBAAW,YAAY,WAAW;AAChC,gBAAM,YAAY,SAAS,QAAQ,mBAAAA,QAAG,IAAI,YAAY,mBAAAA,QAAG,KAAK,SAAS,KAAK,CAAC,GAAG,IAAI;AACpF,kBAAQ,IAAI,KAAK,mBAAAA,QAAG,MAAM,QAAG,CAAC,IAAI,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE;AACxE,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,oBAAU,SAAS,IAAI,EAAE,CAAC;AAAA,QAC/C;AAAA,MACF;AAEA,cAAQ,IAAI;AACZ,mBAAa;AACb,MAAE,SAAM,mBAAAA,QAAG,IAAI,UAAU,UAAU,MAAM,YAAY,UAAU,WAAW,IAAI,MAAM,EAAE,EAAE,CAAC;AACzF;AAAA,IACF;AAGA,UAAM,oBAAoB,qBAAqB;AAG/C,QAAI,KAAK,WAAW,SAAS;AAC3B,UAAI,kBAAkB,WAAW,GAAG;AAClC,gBAAQ,IAAI;AACZ,kBAAU,mCAAmC;AAC7C,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mCAAmC,IAAI,UAAU,+BAA+B,CAAC;AACpG,gBAAQ,IAAI;AACZ,QAAE,SAAM,mBAAAA,QAAG,IAAI,eAAe,CAAC;AAC/B;AAAA,MACF;AAEA,UAAIC;AAEJ,UAAI,KAAK,MAAM;AACb,cAAM,QAAQ,kBAAkB,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;AAChE,YAAI,CAAC,OAAO;AACV,uBAAa,aAAa,KAAK,IAAI,cAAc;AACjD,kBAAQ,IAAI,mBAAAD,QAAG,IAAI,wBAAwB,CAAC;AAC5C,qBAAW,QAAQ,mBAAmB;AACpC,oBAAQ,IAAI,mBAAAA,QAAG,IAAI,cAAS,KAAK,IAAI,EAAE,CAAC;AAAA,UAC1C;AACA,kBAAQ,IAAI;AACZ,UAAE,SAAM,mBAAAA,QAAG,IAAI,eAAe,CAAC;AAC/B;AAAA,QACF;AACA,QAAAC,gBAAe,KAAK;AAAA,MACtB,OAAO;AACL,cAAM,iBAAiB,MAAQ,UAAO;AAAA,UACpC,SAAS;AAAA,UACT,SAAS,kBAAkB,IAAI,CAAC,UAAU;AAAA,YACxC,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK,QAAQ,GAAG,KAAK,IAAI,YAAY,KAAK,KAAK,MAAM,KAAK;AAAA,YACjE,MAAM,KAAK,QAAQ,cAAc;AAAA,UACnC,EAAE;AAAA,QACJ,CAAC;AAED,YAAM,YAAS,cAAc,GAAG;AAC9B,UAAE,UAAO,qBAAqB;AAC9B,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,QAAAA,gBAAe;AAAA,MACjB;AAEA,YAAM,kBAAkBA,eAAc,KAAK,OAAO,KAAK,aAAa;AACpE;AAAA,IACF;AAEA,UAAM,IAAM,WAAQ;AAGpB,MAAE,MAAM,2BAA2B;AACnC,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAe,yBAAK,SAAS,qBAAqB;AACxD,UAAM,mBAAe,yBAAK,SAAS,wBAAwB;AAC3D,UAAM,sBAAkB,yBAAK,SAAS,8BAA8B;AAEpE,UAAM,mBAAe,4BAAW,YAAY,SAAK,4BAAW,YAAY,SAAK,4BAAW,eAAe;AACvG,QAAI,CAAC,cAAc;AACjB,QAAE,KAAK,4BAA4B;AACnC,cAAQ,IAAI;AACZ,mBAAa,6BAA6B;AAC1C,cAAQ,IAAI,mBAAAD,QAAG,IAAI,kBAAkB,OAAO,EAAE,CAAC;AAC/C,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,IAAI,+BAA+B,CAAC;AAC/C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,iBAAiB;AACvB,QAAI,KAAC,4BAAW,cAAc,GAAG;AAC/B,QAAE,KAAK,4BAA4B;AACnC,cAAQ,IAAI;AACZ,mBAAa,uCAAuC;AACpD,cAAQ,IAAI,mBAAAA,QAAG,IAAI,oCAAoC,CAAC;AACxD,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,IAAI,qBAAqB,CAAC;AACrC,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,MAAE,KAAK,wBAAwB;AAE/B,QAAI;AACJ,QAAI;AAGJ,QAAI,KAAK,UAAU,CAAC,UAAU,UAAU,WAAW,EAAE,SAAS,KAAK,MAAM,GAAG;AAC1E,eAAS,KAAK;AAAA,IAChB,OAAO;AACL,YAAM,eAAe,MAAQ,UAAO;AAAA,QAClC,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM,kBAAkB,SAAS,IAC7B,2CACA;AAAA,UACN;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM,kBAAkB,SAAS,IAC7B,4CACA;AAAA,UACN;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,MAAM,kBAAkB,SAAS,IAC7B,GAAG,kBAAkB,MAAM,YAAY,kBAAkB,WAAW,IAAI,MAAM,EAAE,eAChF;AAAA,UACN;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAM,YAAS,YAAY,GAAG;AAC5B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,eAAS;AAGT,UAAI,WAAW,SAAS;AACtB,YAAI,kBAAkB,WAAW,GAAG;AAClC,kBAAQ,IAAI;AACZ,oBAAU,mCAAmC;AAC7C,kBAAQ,IAAI,mBAAAA,QAAG,IAAI,6BAA6B,CAAC;AACjD,kBAAQ,IAAI;AACZ,UAAE,SAAM,mBAAAA,QAAG,IAAI,eAAe,CAAC;AAC/B;AAAA,QACF;AAEA,cAAM,iBAAiB,MAAQ,UAAO;AAAA,UACpC,SAAS;AAAA,UACT,SAAS,kBAAkB,IAAI,CAAC,UAAU;AAAA,YACxC,OAAO,KAAK;AAAA,YACZ,OAAO,KAAK,QAAQ,GAAG,KAAK,IAAI,YAAY,KAAK,KAAK,MAAM,KAAK;AAAA,YACjE,MAAM,KAAK,QAAQ,cAAc;AAAA,UACnC,EAAE;AAAA,QACJ,CAAC;AAED,YAAM,YAAS,cAAc,GAAG;AAC9B,UAAE,UAAO,qBAAqB;AAC9B,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAEA,cAAM,kBAAkB,gBAA0B,KAAK,OAAO,KAAK,aAAa;AAChF;AAAA,MACF;AAAA,IACF;AAGA,QAAI,KAAK,MAAM;AACb,qBAAe,KAAK;AAAA,IACtB,YAAY,WAAW,YAAY,WAAW,gBAAgB,kBAAkB,SAAS,GAAG;AAE1F,YAAME,eAAc,WAAW,WAAW,WAAW;AACrD,YAAM,iBAAiB,MAAQ,UAAO;AAAA,QACpC,SAAS,sBAAsBA,YAAW;AAAA,QAC1C,SAAS,kBAAkB,IAAI,CAAC,UAAU;AAAA,UACxC,OAAO,KAAK;AAAA,UACZ,OAAO,KAAK,QAAQ,GAAG,KAAK,IAAI,YAAY,KAAK,KAAK,MAAM,KAAK;AAAA,UACjE,MAAM,KAAK;AAAA,QACb,EAAE;AAAA,MACJ,CAAC;AAED,UAAM,YAAS,cAAc,GAAG;AAC9B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,qBAAe;AAAA,IACjB,YAAY,WAAW,YAAY,WAAW,gBAAgB,kBAAkB,WAAW,GAAG;AAC5F,cAAQ,IAAI;AACZ,gBAAU,uCAAuC,MAAM,GAAG;AAC1D,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAF,QAAG,IAAI,eAAe,CAAC;AAC/B;AAAA,IACF,OAAO;AAEL,YAAM,aAAa,MAAQ,QAAK;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,UAAU,CAAC,UAAU;AACnB,cAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAC1B,cAAI,MAAM,SAAS,EAAG,QAAO;AAC7B,gBAAM,WAAW,kBAAkB;AAAA,YACjC,CAAC,MAAM,EAAE,KAAK,YAAY,MAAM,MAAM,YAAY;AAAA,UACpD;AACA,cAAI,SAAU,QAAO,aAAa,KAAK;AACvC,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,UAAM,YAAS,UAAU,GAAG;AAC1B,QAAE,UAAO,qBAAqB;AAC9B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,qBAAe;AAAA,IACjB;AAGA,iBAAa;AACb,YAAQ,IAAI;AACZ,YAAQ,IAAI,mBAAAA,QAAG,KAAK,mBAAAA,QAAG,KAAK,qBAAc,CAAC,CAAC;AAC5C,YAAQ,IAAI;AACZ,UAAM,cAAc,WAAW,WAAW,mBAAAA,QAAG,QAAQ,WAAW,cAAc,mBAAAA,QAAG,OAAO,mBAAAA,QAAG;AAC3F,UAAM,cAAc,WAAW,WAAW,WAAW,WAAW,cAAc,cAAc;AAC5F,YAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,SAAS,CAAC,OAAO,YAAY,WAAW,CAAC,EAAE;AACnE,YAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,WAAW,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE;AAElE,QAAI,WAAW,YAAY,WAAW,aAAa;AACjD,YAAM,OAAO,aAAa,YAAY,EAAE,QAAQ,cAAc,EAAE;AAChE,cAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,YAAY,CAAC,IAAI,mBAAAA,QAAG,IAAI,aAAa,CAAC,GAAG,UAAU,IAAI,CAAC,EAAE;AAClF,cAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,WAAW,CAAC,KAAK,mBAAAA,QAAG,IAAI,iBAAiB,CAAC,GAAG,UAAU,eAAe,MAAM,CAAC,EAAE;AACvG,UAAI,WAAW,aAAa;AAC1B,cAAM,cAAU,yBAAK,QAAQ,IAAI,QAAQ,IAAI,WAAW,uBAAuB,aAAa,QAAQ,MAAM,EAAE,CAAC;AAC7G,gBAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,OAAO,CAAC,SAAS,mBAAAA,QAAG,MAAM,QAAG,CAAC,IAAI,mBAAAA,QAAG,IAAI,cAAc,CAAC,IAAI,mBAAAA,QAAG,IAAI,OAAO,CAAC,EAAE;AAAA,MACvG;AAAA,IACF,OAAO;AACL,YAAM,iBAAa,yBAAK,QAAQ,IAAI,QAAQ,IAAI,gBAAgB,GAAG,YAAY,MAAM;AACrF,cAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,OAAO,CAAC,SAAS,mBAAAA,QAAG,IAAI,UAAU,CAAC,EAAE;AAE7D,YAAM,aAAa,oBAAoB,YAAY;AACnD,UAAI,YAAY;AACd,gBAAQ,IAAI,KAAK,mBAAAA,QAAG,IAAI,QAAQ,CAAC,QAAQ,mBAAAA,QAAG,OAAO,WAAW,SAAS,CAAC,IAAI,mBAAAA,QAAG,IAAI,mBAAmB,CAAC,EAAE;AAAA,MAC3G;AAAA,IACF;AAEA,YAAQ,IAAI;AACZ,iBAAa;AACb,YAAQ,IAAI;AAEZ,UAAM,iBAAiB,MAAQ,WAAQ;AAAA,MACrC,SAAS,WAAW,WAChB,iCACA,WAAW,cACX,2DACA;AAAA,MACJ,cAAc,WAAW;AAAA,IAC3B,CAAC;AAED,QAAM,YAAS,cAAc,KAAK,CAAC,gBAAgB;AACjD,MAAE,UAAO,qBAAqB;AAC9B,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,YAAQ,IAAI;AACZ,iBAAa;AACb,YAAQ,IAAI;AAEZ,UAAM,aAAa,WAAW,WAC1B,eACA,WAAW,cACX,kBACA;AAEJ,UAAM,aAAa,WAAW,YAAY,WAAW,cACjD,CAAC,SAAS,YAAY,IACtB,CAAC,YAAY;AACjB,UAAM,WAAW,MAAM,UAAU,YAAY,UAAU;AAEvD,YAAQ,IAAI;AACZ,iBAAa;AACb,YAAQ,IAAI;AAEZ,QAAI,aAAa,GAAG;AAClB,UAAI,WAAW,UAAU;AACvB,qBAAa,YAAY,UAAU,YAAY,CAAC,wBAAwB;AAGxE,YAAI,CAAC,KAAK,WAAW;AACnB,kBAAQ,IAAI;AAEZ,gBAAM,cAAc,MAAM;AAAA,YACxB;AAAA,YACA,KAAK;AAAA,YACL,KAAK;AAAA,UACP;AAEA,cAAI,aAAa;AACf,kBAAM,oBAAoB,cAAc,YAAY,WAAW,YAAY,QAAQ;AAAA,UACrF;AAAA,QACF,WAAW,KAAK,OAAO;AAErB,gBAAM,WAAY,KAAK,iBAA0C;AACjE,gBAAM,oBAAoB,cAAc,KAAK,OAAO,QAAQ;AAAA,QAC9D;AAEA,gBAAQ,IAAI;AACZ,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,eAAe,CAAC;AACnC,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,uDAAkD,CAAC;AACtE,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,kDAA6C,CAAC;AACjE,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,qCAAgC,CAAC;AAAA,MACtD,WAAW,WAAW,aAAa;AACjC,qBAAa,YAAY,UAAU,YAAY,CAAC,4BAA4B;AAC5E,gBAAQ,IAAI;AACZ,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,0BAA0B,CAAC;AAC9C,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,mDAA8C,CAAC;AAClE,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,8CAAyC,CAAC;AAC7D,gBAAQ,IAAI,mBAAAA,QAAG,IAAI,kDAA6C,CAAC;AAAA,MACnE,OAAO;AAEL,cAAM,mBAAmB,YAAY;AAErC,qBAAa,YAAY,UAAU,YAAY,CAAC,wBAAwB;AAAA,MAC1E;AACA,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,MAAM,cAAS,CAAC;AAAA,IAC7B,OAAO;AACL,mBAAa,sCAAsC,QAAQ,EAAE;AAC7D,cAAQ,IAAI;AACZ,MAAE,SAAM,mBAAAA,QAAG,OAAO,oCAAoC,CAAC;AACvD,cAAQ,KAAK,QAAQ;AAAA,IACvB;AAAA,EACF;AACF,CAAC;;;AZpsBD,IAAMG,eAAU,kCAAc,aAAe;AAC7C,IAAM,MAAMA,SAAQ,iBAAiB;AAErC,IAAM,WAAO,6BAAc;AAAA,EACzB,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,IAAI;AAAA,IACb,aAAa;AAAA,EACf;AAAA,EACA,QAAQ;AACN,gBAAY;AACZ,iBAAa,IAAI,OAAO;AAAA,EAC1B;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF,CAAC;AAAA,IAED,uBAAQ,IAAI;","names":["import_citty","gradient","figlet","pc","pc","text","p","import_picocolors","import_node_path","import_node_path","import_node_path","import_picocolors","pc","pc","p","import_citty","import_node_path","import_picocolors","p","promptTargetSelection","pc","promptTargetSelection","import_citty","p","import_picocolors","import_node_path","rmSync","existsSync","pc","promptTargetSelection","p","import_citty","import_node_path","import_picocolors","pc","import_citty","p","import_picocolors","import_node_path","pc","promptTargetSelection","import_citty","p","import_picocolors","import_node_path","import_node_url","import_node_fs","import_node_fs","import_node_path","p","resolve","pc","instanceName","actionLabel","require"]}