@eldrforge/kodrdriv 1.2.26 → 1.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/AI-FRIENDLY-LOGGING-GUIDE.md +237 -0
  2. package/AI-LOGGING-MIGRATION-COMPLETE.md +371 -0
  3. package/ALREADY-PUBLISHED-PACKAGES-FIX.md +264 -0
  4. package/AUDIT-BRANCHES-PROGRESS-FIX.md +90 -0
  5. package/AUDIT-EXAMPLE-OUTPUT.md +113 -0
  6. package/CHECKPOINT-RECOVERY-FIX.md +450 -0
  7. package/LOGGING-MIGRATION-STATUS.md +186 -0
  8. package/PARALLEL-PUBLISH-FIXES-IMPLEMENTED.md +405 -0
  9. package/PARALLEL-PUBLISH-IMPROVEMENTS-IMPLEMENTED.md +439 -0
  10. package/PARALLEL-PUBLISH-QUICK-REFERENCE.md +375 -0
  11. package/PARALLEL_EXECUTION_FIX.md +2 -2
  12. package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +294 -0
  13. package/VERSION-AUDIT-FIX.md +333 -0
  14. package/dist/application.js +6 -6
  15. package/dist/application.js.map +1 -1
  16. package/dist/arguments.js +43 -13
  17. package/dist/arguments.js.map +1 -1
  18. package/dist/commands/audio-commit.js +18 -18
  19. package/dist/commands/audio-commit.js.map +1 -1
  20. package/dist/commands/audio-review.js +32 -32
  21. package/dist/commands/audio-review.js.map +1 -1
  22. package/dist/commands/clean.js +9 -9
  23. package/dist/commands/clean.js.map +1 -1
  24. package/dist/commands/commit.js +20 -20
  25. package/dist/commands/commit.js.map +1 -1
  26. package/dist/commands/development.js +91 -90
  27. package/dist/commands/development.js.map +1 -1
  28. package/dist/commands/link.js +36 -36
  29. package/dist/commands/link.js.map +1 -1
  30. package/dist/commands/publish.js +345 -225
  31. package/dist/commands/publish.js.map +1 -1
  32. package/dist/commands/release.js +14 -14
  33. package/dist/commands/release.js.map +1 -1
  34. package/dist/commands/review.js +15 -17
  35. package/dist/commands/review.js.map +1 -1
  36. package/dist/commands/select-audio.js +5 -5
  37. package/dist/commands/select-audio.js.map +1 -1
  38. package/dist/commands/tree.js +75 -34
  39. package/dist/commands/tree.js.map +1 -1
  40. package/dist/commands/unlink.js +39 -39
  41. package/dist/commands/unlink.js.map +1 -1
  42. package/dist/commands/updates.js +150 -14
  43. package/dist/commands/updates.js.map +1 -1
  44. package/dist/commands/versions.js +14 -13
  45. package/dist/commands/versions.js.map +1 -1
  46. package/dist/constants.js +1 -1
  47. package/dist/content/diff.js +5 -5
  48. package/dist/content/diff.js.map +1 -1
  49. package/dist/content/files.js +2 -2
  50. package/dist/content/files.js.map +1 -1
  51. package/dist/content/log.js +3 -3
  52. package/dist/content/log.js.map +1 -1
  53. package/dist/execution/CommandValidator.js +6 -6
  54. package/dist/execution/CommandValidator.js.map +1 -1
  55. package/dist/execution/DynamicTaskPool.js +33 -10
  56. package/dist/execution/DynamicTaskPool.js.map +1 -1
  57. package/dist/execution/RecoveryManager.js +99 -21
  58. package/dist/execution/RecoveryManager.js.map +1 -1
  59. package/dist/execution/TreeExecutionAdapter.js +65 -48
  60. package/dist/execution/TreeExecutionAdapter.js.map +1 -1
  61. package/dist/main.js +2 -2
  62. package/dist/main.js.map +1 -1
  63. package/dist/util/checkpointManager.js +4 -4
  64. package/dist/util/checkpointManager.js.map +1 -1
  65. package/dist/util/dependencyGraph.js +2 -2
  66. package/dist/util/dependencyGraph.js.map +1 -1
  67. package/dist/util/fileLock.js +1 -1
  68. package/dist/util/fileLock.js.map +1 -1
  69. package/dist/util/general.js +148 -15
  70. package/dist/util/general.js.map +1 -1
  71. package/dist/util/interactive.js +2 -2
  72. package/dist/util/interactive.js.map +1 -1
  73. package/dist/util/performance.js.map +1 -1
  74. package/dist/util/safety.js +13 -13
  75. package/dist/util/safety.js.map +1 -1
  76. package/dist/utils/branchState.js +567 -0
  77. package/dist/utils/branchState.js.map +1 -0
  78. package/package.json +1 -1
  79. package/scripts/update-test-log-assertions.js +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branchState.js","sources":["../../src/utils/branchState.ts"],"sourcesContent":["import { run } from '@eldrforge/git-tools';\nimport { getLogger } from '../logging';\n\nexport interface BranchStatus {\n name: string;\n isOnExpectedBranch: boolean;\n expectedBranch?: string;\n ahead: number;\n behind: number;\n hasUnpushedCommits: boolean;\n needsSync: boolean;\n remoteExists: boolean;\n hasMergeConflicts?: boolean;\n conflictsWith?: string;\n hasOpenPR?: boolean;\n prUrl?: string;\n prNumber?: number;\n}\n\nexport interface VersionStatus {\n version: string;\n isValid: boolean;\n issue?: string;\n fix?: string;\n}\n\nexport interface TargetBranchSyncStatus {\n targetBranch: string;\n localExists: boolean;\n remoteExists: boolean;\n localSha?: string;\n remoteSha?: string;\n exactMatch: boolean;\n canFastForward: boolean;\n needsReset: boolean;\n error?: string;\n}\n\nexport interface PackageBranchAudit {\n packageName: string;\n path: string;\n status: BranchStatus;\n versionStatus?: VersionStatus;\n targetBranchSync?: TargetBranchSyncStatus;\n issues: string[];\n fixes: string[];\n}\n\nexport interface BranchAuditResult {\n totalPackages: number;\n goodPackages: number;\n issuesFound: number;\n versionIssues: number;\n targetBranchSyncIssues: number;\n audits: PackageBranchAudit[];\n}\n\n/**\n * Check the branch status for a package\n */\nexport async function checkBranchStatus(\n packagePath: string,\n expectedBranch?: string,\n targetBranch: string = 'main',\n checkPR: boolean = false\n): Promise<BranchStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Get current branch\n const { stdout: currentBranch } = await run('git rev-parse --abbrev-ref HEAD');\n const branch = currentBranch.trim();\n\n // Check if remote exists\n let remoteExists = false;\n try {\n await run(`git ls-remote --exit-code --heads origin ${branch}`);\n remoteExists = true;\n } catch {\n remoteExists = false;\n }\n\n // Get ahead/behind counts if remote exists\n let ahead = 0;\n let behind = 0;\n\n if (remoteExists) {\n try {\n const { stdout: revList } = await run(`git rev-list --left-right --count origin/${branch}...HEAD`);\n const [behindStr, aheadStr] = revList.trim().split('\\t');\n behind = parseInt(behindStr, 10) || 0;\n ahead = parseInt(aheadStr, 10) || 0;\n } catch (error) {\n logger.verbose(`Could not get ahead/behind counts for ${packagePath}: ${error}`);\n }\n }\n\n // Check for merge conflicts with target branch\n let hasMergeConflicts = false;\n let conflictsWith: string | undefined;\n\n if (branch !== targetBranch) {\n try {\n // Fetch latest to ensure we're checking against current target\n logger.verbose(` Fetching latest from origin for ${packagePath}...`);\n await run('git fetch origin --quiet');\n\n logger.verbose(` Checking for merge conflicts with ${targetBranch}...`);\n // Use git merge-tree to test for conflicts without actually merging\n const { stdout: mergeTree } = await run(`git merge-tree $(git merge-base ${branch} origin/${targetBranch}) ${branch} origin/${targetBranch}`);\n\n // If merge-tree output contains conflict markers, there are conflicts\n if (mergeTree.includes('<<<<<<<') || mergeTree.includes('=======') || mergeTree.includes('>>>>>>>')) {\n hasMergeConflicts = true;\n conflictsWith = targetBranch;\n logger.verbose(` ⚠️ Merge conflicts detected with ${targetBranch}`);\n }\n } catch (error: any) {\n // If merge-tree fails, might be due to git version or other issues\n logger.verbose(`Could not check merge conflicts for ${packagePath}: ${error.message}`);\n }\n }\n\n // Check for existing PR if requested\n let hasOpenPR = false;\n let prUrl: string | undefined;\n let prNumber: number | undefined;\n\n if (checkPR) {\n try {\n logger.verbose(` Checking GitHub for existing PRs...`);\n const { findOpenPullRequestByHeadRef } = await import('@eldrforge/github-tools');\n const pr = await findOpenPullRequestByHeadRef(branch);\n if (pr) {\n hasOpenPR = true;\n prUrl = pr.html_url;\n prNumber = pr.number;\n logger.verbose(` Found existing PR #${prNumber}: ${prUrl}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check for PR for ${packagePath}: ${error.message}`);\n }\n }\n\n const isOnExpectedBranch = !expectedBranch || branch === expectedBranch;\n const hasUnpushedCommits = ahead > 0;\n const needsSync = behind > 0;\n\n return {\n name: branch,\n isOnExpectedBranch,\n expectedBranch,\n ahead,\n behind,\n hasUnpushedCommits,\n needsSync,\n remoteExists,\n hasMergeConflicts,\n conflictsWith,\n hasOpenPR,\n prUrl,\n prNumber,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Check if target branch (e.g., main) is exactly in sync with remote\n */\nexport async function checkTargetBranchSync(\n packagePath: string,\n targetBranch: string = 'main'\n): Promise<TargetBranchSyncStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Fetch latest from origin to ensure we have current info\n try {\n await run('git fetch origin --quiet');\n } catch (error: any) {\n logger.verbose(`Could not fetch from origin in ${packagePath}: ${error.message}`);\n }\n\n // Check if local target branch exists\n let localExists = false;\n let localSha: string | undefined;\n try {\n const { stdout } = await run(`git rev-parse --verify ${targetBranch}`);\n localSha = stdout.trim();\n localExists = true;\n } catch {\n localExists = false;\n }\n\n // Check if remote target branch exists\n let remoteExists = false;\n let remoteSha: string | undefined;\n try {\n const { stdout } = await run(`git ls-remote origin ${targetBranch}`);\n if (stdout.trim()) {\n remoteSha = stdout.split(/\\s+/)[0];\n remoteExists = true;\n }\n } catch {\n remoteExists = false;\n }\n\n // Determine sync status\n const exactMatch = localExists && remoteExists && localSha === remoteSha;\n let canFastForward = false;\n let needsReset = false;\n\n if (localExists && remoteExists && !exactMatch) {\n // Check if local is ancestor of remote (can fast-forward)\n try {\n await run(`git merge-base --is-ancestor ${targetBranch} origin/${targetBranch}`);\n canFastForward = true;\n needsReset = false;\n } catch {\n // Local is not ancestor of remote, need reset\n canFastForward = false;\n needsReset = true;\n }\n }\n\n return {\n targetBranch,\n localExists,\n remoteExists,\n localSha,\n remoteSha,\n exactMatch,\n canFastForward,\n needsReset,\n };\n } catch (error: any) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: false,\n canFastForward: false,\n needsReset: false,\n error: error.message,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Audit branch state across multiple packages\n */\nexport async function auditBranchState(\n packages: Array<{ name: string; path: string }>,\n expectedBranch?: string,\n options: {\n targetBranch?: string;\n checkPR?: boolean;\n checkConflicts?: boolean;\n checkVersions?: boolean;\n } = {}\n): Promise<BranchAuditResult> {\n const logger = getLogger();\n const audits: PackageBranchAudit[] = [];\n const targetBranch = options.targetBranch || 'main';\n const checkPR = options.checkPR !== false; // Default true\n const checkConflicts = options.checkConflicts !== false; // Default true\n const checkVersions = options.checkVersions !== false; // Default true\n\n logger.info(`BRANCH_STATE_AUDIT: Auditing branch state for packages | Package Count: ${packages.length} | Purpose: Verify synchronization`);\n\n // If no expected branch specified, find the most common branch\n let actualExpectedBranch = expectedBranch;\n if (!expectedBranch) {\n const branchCounts = new Map<string, number>();\n\n logger.info('📋 Phase 1/2: Detecting most common branch across packages...');\n\n // First pass: collect all branch names\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Checking branch: ${pkg.name}`);\n const status = await checkBranchStatus(pkg.path);\n branchCounts.set(status.name, (branchCounts.get(status.name) || 0) + 1);\n }\n\n // Find most common branch\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n actualExpectedBranch = branch;\n }\n }\n\n logger.info(`✓ Most common branch: ${actualExpectedBranch} (${maxCount}/${packages.length} packages)`);\n }\n\n logger.info(`\\n📋 Phase 2/2: Auditing package state (checking git status, conflicts, PRs, versions)...`);\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Auditing: ${pkg.name}`);\n\n const status = await checkBranchStatus(\n pkg.path,\n actualExpectedBranch,\n targetBranch,\n checkPR\n );\n const issues: string[] = [];\n const fixes: string[] = [];\n let versionStatus: VersionStatus | undefined;\n\n // Check for issues\n if (!status.isOnExpectedBranch && actualExpectedBranch) {\n issues.push(`On branch '${status.name}' (most packages are on '${actualExpectedBranch}')`);\n fixes.push(`cd ${pkg.path} && git checkout ${actualExpectedBranch}`);\n }\n\n if (checkConflicts && status.hasMergeConflicts && status.conflictsWith) {\n issues.push(`⚠️ MERGE CONFLICTS with '${status.conflictsWith}'`);\n fixes.push(`cd ${pkg.path} && git merge origin/${status.conflictsWith} # Resolve conflicts manually`);\n }\n\n if (checkPR && status.hasOpenPR) {\n issues.push(`Has existing PR #${status.prNumber}: ${status.prUrl}`);\n fixes.push(`# Review PR: ${status.prUrl}`);\n }\n\n if (status.hasUnpushedCommits) {\n issues.push(`Ahead of remote by ${status.ahead} commit(s)`);\n fixes.push(`cd ${pkg.path} && git push origin ${status.name}`);\n }\n\n if (status.needsSync) {\n issues.push(`Behind remote by ${status.behind} commit(s)`);\n fixes.push(`cd ${pkg.path} && git pull origin ${status.name}`);\n }\n\n if (!status.remoteExists) {\n issues.push(`Remote branch does not exist`);\n fixes.push(`cd ${pkg.path} && git push -u origin ${status.name}`);\n }\n\n // Check version consistency if enabled\n if (checkVersions) {\n try {\n const { validateVersionForBranch } = await import('../util/general');\n const fs = await import('fs/promises');\n const pathModule = await import('path');\n\n const packageJsonPath = pathModule.join(pkg.path, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n const version = packageJson.version;\n\n const validation = validateVersionForBranch(version, status.name);\n\n versionStatus = {\n version,\n isValid: validation.valid,\n issue: validation.issue,\n fix: validation.fix\n };\n\n if (!validation.valid) {\n issues.push(`Version: ${version} - ${validation.issue}`);\n fixes.push(`cd ${pkg.path} && kodrdriv development # ${validation.fix}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check version for ${pkg.name}: ${error.message}`);\n }\n }\n\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n const targetBranchSync = await checkTargetBranchSync(pkg.path, targetBranch);\n\n if (targetBranchSync.localExists && targetBranchSync.remoteExists && !targetBranchSync.exactMatch) {\n if (targetBranchSync.needsReset) {\n issues.push(`Target branch '${targetBranch}' is NOT in sync with remote (local has diverged)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git reset --hard origin/${targetBranch} && git checkout ${status.name}`);\n } else if (targetBranchSync.canFastForward) {\n issues.push(`Target branch '${targetBranch}' is behind remote (can fast-forward)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n } else {\n issues.push(`Target branch '${targetBranch}' is NOT in exact sync with remote`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n }\n } else if (!targetBranchSync.localExists && targetBranchSync.remoteExists) {\n // Local target branch doesn't exist (this is OK - will be created during publish)\n logger.verbose(`Local ${targetBranch} doesn't exist in ${pkg.name} - will be created when needed`);\n } else if (targetBranchSync.error) {\n logger.verbose(`Could not check target branch sync for ${pkg.name}: ${targetBranchSync.error}`);\n }\n\n audits.push({\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n });\n }\n\n const issuesFound = audits.filter(a => a.issues.length > 0).length;\n const versionIssues = audits.filter(a => a.versionStatus && !a.versionStatus.isValid).length;\n const targetBranchSyncIssues = audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists).length;\n const goodPackages = audits.filter(a => a.issues.length === 0).length;\n\n logger.info(`✓ Audit complete: ${goodPackages}/${packages.length} packages have no issues`);\n if (issuesFound > 0) {\n logger.info(` Issues found in ${issuesFound} package(s)`);\n }\n\n return {\n totalPackages: packages.length,\n goodPackages,\n issuesFound,\n versionIssues,\n targetBranchSyncIssues,\n audits,\n };\n}\n\n/**\n * Format audit results for display with detailed fix instructions\n */\nexport function formatAuditResults(result: BranchAuditResult): string {\n const lines: string[] = [];\n\n // Determine the common branch if any\n const branchCounts = new Map<string, number>();\n for (const audit of result.audits) {\n const branch = audit.status.name;\n branchCounts.set(branch, (branchCounts.get(branch) || 0) + 1);\n }\n\n let commonBranch: string | undefined;\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n commonBranch = branch;\n }\n }\n\n lines.push('╔══════════════════════════════════════════════════════════════╗');\n lines.push(`║ Branch State Audit (${result.totalPackages} packages)`.padEnd(63) + '║');\n if (commonBranch && maxCount === result.totalPackages) {\n lines.push(`║ All packages on: ${commonBranch}`.padEnd(63) + '║');\n } else if (commonBranch) {\n lines.push(`║ Most packages on: ${commonBranch} (${maxCount}/${result.totalPackages})`.padEnd(63) + '║');\n }\n lines.push('╠══════════════════════════════════════════════════════════════╣');\n lines.push('');\n\n if (result.goodPackages > 0) {\n lines.push(`✅ Good State (${result.goodPackages} package${result.goodPackages === 1 ? '' : 's'}):`);\n\n const goodAudits = result.audits.filter(a => a.issues.length === 0);\n const displayCount = Math.min(goodAudits.length, 5);\n goodAudits.slice(0, displayCount).forEach(audit => {\n const versionInfo = audit.versionStatus ? ` (v${audit.versionStatus.version})` : '';\n lines.push(` ${audit.packageName}${versionInfo}`);\n });\n\n if (goodAudits.length > displayCount) {\n lines.push(` ... and ${goodAudits.length - displayCount} more`);\n }\n lines.push('');\n }\n\n // Show version issues prominently if any\n if (result.versionIssues > 0) {\n lines.push(`⚠️ Version Issues (${result.versionIssues} package${result.versionIssues === 1 ? '' : 's'}):`);\n\n const versionIssueAudits = result.audits.filter(a => a.versionStatus && !a.versionStatus.isValid);\n versionIssueAudits.forEach(audit => {\n lines.push(` ${audit.packageName}`);\n lines.push(` - Branch: ${audit.status.name}`);\n lines.push(` - Version: ${audit.versionStatus!.version}`);\n lines.push(` - Issue: ${audit.versionStatus!.issue}`);\n lines.push(` - Fix: ${audit.versionStatus!.fix}`);\n lines.push('');\n });\n }\n\n // Show target branch sync issues prominently if any\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 Target Branch Sync Issues (${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'}):`);\n lines.push(` ⚠️ ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch NOT in sync with remote`);\n lines.push(` This will cause \"branch out of sync\" errors during parallel publish!`);\n lines.push('');\n\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n lines.push(` ${audit.packageName}`);\n lines.push(` - Target Branch: ${sync.targetBranch}`);\n lines.push(` - Local SHA: ${sync.localSha?.substring(0, 8)}...`);\n lines.push(` - Remote SHA: ${sync.remoteSha?.substring(0, 8)}...`);\n if (sync.needsReset) {\n lines.push(` - Action: RESET REQUIRED (local has diverged)`);\n } else if (sync.canFastForward) {\n lines.push(` - Action: Pull to fast-forward`);\n }\n lines.push('');\n });\n }\n\n if (result.issuesFound > 0) {\n // Count critical issues (merge conflicts, existing PRs, target branch sync)\n const conflictCount = result.audits.filter(a => a.status.hasMergeConflicts).length;\n const prCount = result.audits.filter(a => a.status.hasOpenPR).length;\n const branchInconsistentCount = result.audits.filter(a => !a.status.isOnExpectedBranch).length;\n const unpushedCount = result.audits.filter(a => a.status.hasUnpushedCommits).length;\n const behindCount = result.audits.filter(a => a.status.needsSync).length;\n const noRemoteCount = result.audits.filter(a => !a.status.remoteExists).length;\n\n if (conflictCount > 0 || prCount > 0 || result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 CRITICAL ISSUES:`);\n if (result.targetBranchSyncIssues > 0) {\n lines.push(` 🔄 ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch sync issues`);\n }\n if (conflictCount > 0) {\n lines.push(` ⚠️ ${conflictCount} package${conflictCount === 1 ? '' : 's'} with merge conflicts`);\n }\n if (prCount > 0) {\n lines.push(` 📋 ${prCount} package${prCount === 1 ? '' : 's'} with existing PRs`);\n }\n lines.push('');\n }\n\n lines.push(`⚠️ Issues Summary:`);\n if (result.targetBranchSyncIssues > 0) lines.push(` • ${result.targetBranchSyncIssues} target branch sync issue${result.targetBranchSyncIssues === 1 ? '' : 's'}`);\n if (conflictCount > 0) lines.push(` • ${conflictCount} merge conflict${conflictCount === 1 ? '' : 's'}`);\n if (prCount > 0) lines.push(` • ${prCount} existing PR${prCount === 1 ? '' : 's'}`);\n if (branchInconsistentCount > 0) lines.push(` • ${branchInconsistentCount} branch inconsistenc${branchInconsistentCount === 1 ? 'y' : 'ies'}`);\n if (unpushedCount > 0) lines.push(` • ${unpushedCount} package${unpushedCount === 1 ? '' : 's'} with unpushed commits`);\n if (behindCount > 0) lines.push(` • ${behindCount} package${behindCount === 1 ? '' : 's'} behind remote`);\n if (noRemoteCount > 0) lines.push(` • ${noRemoteCount} package${noRemoteCount === 1 ? '' : 's'} with no remote branch`);\n lines.push('');\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📋 DETAILED ISSUES AND FIXES:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n // Sort issues by severity: conflicts first, then PRs, then others\n const auditsWithIssues = result.audits.filter(a => a.issues.length > 0);\n const sortedAudits = auditsWithIssues.sort((a, b) => {\n const aScore = (a.status.hasMergeConflicts ? 1000 : 0) + (a.status.hasOpenPR ? 100 : 0);\n const bScore = (b.status.hasMergeConflicts ? 1000 : 0) + (b.status.hasOpenPR ? 100 : 0);\n return bScore - aScore;\n });\n\n sortedAudits.forEach((audit, index) => {\n // Highlight critical issues\n const hasCritical = audit.status.hasMergeConflicts || audit.status.hasOpenPR;\n const prefix = hasCritical ? '🚨 CRITICAL' : '⚠️ WARNING';\n\n lines.push(`${prefix} [${index + 1}/${sortedAudits.length}] ${audit.packageName}`);\n lines.push(`Location: ${audit.path}`);\n lines.push(`Branch: ${audit.status.name}`);\n\n if (audit.status.remoteExists) {\n const syncStatus = [];\n if (audit.status.ahead > 0) syncStatus.push(`ahead ${audit.status.ahead}`);\n if (audit.status.behind > 0) syncStatus.push(`behind ${audit.status.behind}`);\n if (syncStatus.length > 0) {\n lines.push(`Sync: ${syncStatus.join(', ')}`);\n }\n } else {\n lines.push(`Remote: Does not exist`);\n }\n\n lines.push('');\n lines.push('Issues:');\n audit.issues.forEach(issue => {\n const icon = issue.includes('MERGE CONFLICTS') ? '⚠️ ' : issue.includes('PR') ? '📋 ' : '❌ ';\n lines.push(` ${icon} ${issue}`);\n });\n\n lines.push('');\n lines.push('Fix Commands (execute in order):');\n audit.fixes.forEach((fix, fixIndex) => {\n lines.push(` ${fixIndex + 1}. ${fix}`);\n });\n\n // Add context-specific guidance\n if (audit.status.hasMergeConflicts) {\n lines.push('');\n lines.push(' ⚠️ Merge Conflict Resolution:');\n lines.push(' After running the merge command above, you will need to:');\n lines.push(' a) Manually edit conflicting files to resolve conflicts');\n lines.push(' b) Stage resolved files: git add <file>');\n lines.push(' c) Complete the merge: git commit');\n lines.push(' d) Push the resolved merge: git push origin ' + audit.status.name);\n lines.push(' e) Re-run audit to verify: kodrdriv tree publish --audit-branches');\n }\n\n if (audit.status.hasOpenPR) {\n lines.push('');\n lines.push(' 📋 Existing PR Handling:');\n lines.push(' You have options:');\n lines.push(' a) Continue with existing PR (kodrdriv publish will detect and use it)');\n lines.push(' b) Close the PR if no longer needed');\n lines.push(' c) Merge the PR if ready, then create new one');\n }\n\n lines.push('');\n lines.push('─────────────────────────────────────────────────────────────');\n lines.push('');\n });\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📝 RECOMMENDED WORKFLOW:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n let stepNumber = 1;\n\n // Target branch sync is FIRST and most critical\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`${stepNumber}️⃣ SYNC TARGET BRANCHES (CRITICAL - Do this FIRST):`);\n stepNumber++;\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n if (sync.needsReset) {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git reset --hard origin/${sync.targetBranch} && git checkout ${audit.status.name}`);\n } else {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git pull origin ${sync.targetBranch} && git checkout ${audit.status.name}`);\n }\n });\n lines.push('');\n }\n\n if (conflictCount > 0) {\n lines.push(`${stepNumber}️⃣ RESOLVE MERGE CONFLICTS FIRST (blocking):`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git merge origin/${audit.status.conflictsWith}`);\n });\n lines.push(' Then resolve conflicts, commit, and push.');\n lines.push('');\n }\n\n if (result.versionIssues > 0) {\n lines.push(`${stepNumber}️⃣ FIX VERSION ISSUES (recommended before publish):`);\n stepNumber++;\n sortedAudits.filter(a => a.versionStatus && !a.versionStatus.isValid).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && kodrdriv development`);\n });\n lines.push('');\n }\n\n if (prCount > 0) {\n lines.push(`${stepNumber}️⃣ HANDLE EXISTING PRS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasOpenPR).forEach(audit => {\n lines.push(` • ${audit.packageName}: Review ${audit.status.prUrl}`);\n lines.push(` Option: Continue (publish will reuse PR) or close/merge it first`);\n });\n lines.push('');\n }\n\n if (branchInconsistentCount > 0) {\n lines.push(`${stepNumber}️⃣ ALIGN BRANCHES (if needed):`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.isOnExpectedBranch).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${audit.status.expectedBranch}`);\n });\n lines.push('');\n }\n\n if (behindCount > 0) {\n lines.push(`${stepNumber}️⃣ SYNC WITH REMOTE:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.needsSync && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git pull origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (unpushedCount > 0) {\n lines.push(`${stepNumber}️⃣ PUSH LOCAL COMMITS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasUnpushedCommits && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (noRemoteCount > 0) {\n lines.push(`${stepNumber}️⃣ CREATE REMOTE BRANCHES:`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.remoteExists).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push -u origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n lines.push('🔄 After fixing issues, re-run audit to verify:');\n lines.push(' kodrdriv tree publish --audit-branches');\n lines.push('');\n lines.push('✅ Once all clear, proceed with publish:');\n lines.push(' kodrdriv tree publish --parallel --model \"gpt-5-mini\"');\n }\n\n lines.push('╚══════════════════════════════════════════════════════════════╝');\n\n return lines.join('\\n');\n}\n\n/**\n * Auto-sync a package's branch with remote\n */\nexport async function autoSyncBranch(\n packagePath: string,\n options: {\n push?: boolean;\n pull?: boolean;\n checkout?: string;\n } = {}\n): Promise<{ success: boolean; actions: string[]; error?: string }> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n const actions: string[] = [];\n\n try {\n process.chdir(packagePath);\n\n // Checkout if requested\n if (options.checkout) {\n logger.verbose(`Checking out ${options.checkout}...`);\n await run(`git checkout ${options.checkout}`);\n actions.push(`Checked out ${options.checkout}`);\n }\n\n // Pull if requested\n if (options.pull) {\n logger.verbose(`Pulling from remote...`);\n try {\n await run('git pull --ff-only');\n actions.push('Pulled from remote');\n } catch (error: any) {\n if (error.message.includes('not possible to fast-forward')) {\n logger.warn(`BRANCH_STATE_NO_FAST_FORWARD: Cannot fast-forward merge | Reason: Divergent history | Resolution: May need manual merge`);\n return { success: false, actions, error: 'Fast-forward not possible' };\n }\n throw error;\n }\n }\n\n // Push if requested\n if (options.push) {\n logger.verbose(`Pushing to remote...`);\n await run('git push');\n actions.push('Pushed to remote');\n }\n\n return { success: true, actions };\n } catch (error: any) {\n logger.error(`BRANCH_STATE_AUTO_SYNC_FAILED: Failed to auto-sync package | Path: ${packagePath} | Error: ${error.message}`);\n return { success: false, actions, error: error.message };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n"],"names":["checkBranchStatus","packagePath","expectedBranch","targetBranch","checkPR","logger","getLogger","originalCwd","process","cwd","chdir","stdout","currentBranch","run","branch","trim","remoteExists","ahead","behind","revList","behindStr","aheadStr","split","parseInt","error","verbose","hasMergeConflicts","conflictsWith","mergeTree","includes","message","hasOpenPR","prUrl","prNumber","findOpenPullRequestByHeadRef","pr","html_url","number","isOnExpectedBranch","hasUnpushedCommits","needsSync","name","checkTargetBranchSync","localExists","localSha","remoteSha","exactMatch","canFastForward","needsReset","auditBranchState","packages","options","audits","checkConflicts","checkVersions","info","length","actualExpectedBranch","branchCounts","Map","i","pkg","status","path","set","get","maxCount","count","entries","issues","fixes","versionStatus","push","validateVersionForBranch","fs","pathModule","packageJsonPath","join","packageJsonContent","readFile","packageJson","JSON","parse","version","validation","isValid","valid","issue","fix","targetBranchSync","packageName","issuesFound","filter","a","versionIssues","targetBranchSyncIssues","goodPackages","totalPackages","formatAuditResults","result","lines","audit","commonBranch","padEnd","goodAudits","displayCount","Math","min","slice","forEach","versionInfo","versionIssueAudits","targetSyncIssueAudits","sync","substring","conflictCount","prCount","branchInconsistentCount","unpushedCount","behindCount","noRemoteCount","auditsWithIssues","sortedAudits","sort","b","aScore","bScore","index","hasCritical","prefix","syncStatus","icon","fixIndex","stepNumber"],"mappings":";;;AAyDA;;IAGO,eAAeA,iBAAAA,CAClBC,WAAmB,EACnBC,cAAuB,EACvBC,YAAAA,GAAuB,MAAM,EAC7BC,OAAAA,GAAmB,KAAK,EAAA;AAExB,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;IACf,MAAMC,WAAAA,GAAcC,QAAQC,GAAG,EAAA;IAE/B,IAAI;AACAD,QAAAA,OAAAA,CAAQE,KAAK,CAACT,WAAAA,CAAAA;;AAGd,QAAA,MAAM,EAAEU,MAAAA,EAAQC,aAAa,EAAE,GAAG,MAAMC,GAAAA,CAAI,iCAAA,CAAA;QAC5C,MAAMC,MAAAA,GAASF,cAAcG,IAAI,EAAA;;AAGjC,QAAA,IAAIC,YAAAA,GAAe,KAAA;QACnB,IAAI;AACA,YAAA,MAAMH,GAAAA,CAAI,CAAC,yCAAyC,EAAEC,MAAAA,CAAAA,CAAQ,CAAA;YAC9DE,YAAAA,GAAe,IAAA;AACnB,QAAA,CAAA,CAAE,OAAM;YACJA,YAAAA,GAAe,KAAA;AACnB,QAAA;;AAGA,QAAA,IAAIC,KAAAA,GAAQ,CAAA;AACZ,QAAA,IAAIC,MAAAA,GAAS,CAAA;AAEb,QAAA,IAAIF,YAAAA,EAAc;YACd,IAAI;AACA,gBAAA,MAAM,EAAEL,MAAAA,EAAQQ,OAAO,EAAE,GAAG,MAAMN,GAAAA,CAAI,CAAC,yCAAyC,EAAEC,MAAAA,CAAO,OAAO,CAAC,CAAA;gBACjG,MAAM,CAACM,WAAWC,QAAAA,CAAS,GAAGF,QAAQJ,IAAI,EAAA,CAAGO,KAAK,CAAC,IAAA,CAAA;gBACnDJ,MAAAA,GAASK,QAAAA,CAASH,WAAW,EAAA,CAAA,IAAO,CAAA;gBACpCH,KAAAA,GAAQM,QAAAA,CAASF,UAAU,EAAA,CAAA,IAAO,CAAA;AACtC,YAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;gBACZnB,MAAAA,CAAOoB,OAAO,CAAC,CAAC,sCAAsC,EAAExB,WAAAA,CAAY,EAAE,EAAEuB,KAAAA,CAAAA,CAAO,CAAA;AACnF,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIE,iBAAAA,GAAoB,KAAA;QACxB,IAAIC,aAAAA;AAEJ,QAAA,IAAIb,WAAWX,YAAAA,EAAc;YACzB,IAAI;;AAEAE,gBAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,oCAAoC,EAAExB,WAAAA,CAAY,GAAG,CAAC,CAAA;AACtE,gBAAA,MAAMY,GAAAA,CAAI,0BAAA,CAAA;AAEVR,gBAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,sCAAsC,EAAEtB,YAAAA,CAAa,GAAG,CAAC,CAAA;;AAEzE,gBAAA,MAAM,EAAEQ,MAAAA,EAAQiB,SAAS,EAAE,GAAG,MAAMf,IAAI,CAAC,gCAAgC,EAAEC,MAAAA,CAAO,QAAQ,EAAEX,YAAAA,CAAa,EAAE,EAAEW,MAAAA,CAAO,QAAQ,EAAEX,YAAAA,CAAAA,CAAc,CAAA;;gBAG5I,IAAIyB,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,IAAcD,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,IAAcD,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,EAAY;oBACjGH,iBAAAA,GAAoB,IAAA;oBACpBC,aAAAA,GAAgBxB,YAAAA;AAChBE,oBAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,sCAAsC,EAAEtB,YAAAA,CAAAA,CAAc,CAAA;AAC1E,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOqB,KAAAA,EAAY;;gBAEjBnB,MAAAA,CAAOoB,OAAO,CAAC,CAAC,oCAAoC,EAAExB,YAAY,EAAE,EAAEuB,KAAAA,CAAMM,OAAO,CAAA,CAAE,CAAA;AACzF,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIC,SAAAA,GAAY,KAAA;QAChB,IAAIC,KAAAA;QACJ,IAAIC,QAAAA;AAEJ,QAAA,IAAI7B,OAAAA,EAAS;YACT,IAAI;AACAC,gBAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,uCAAuC,CAAC,CAAA;AACxD,gBAAA,MAAM,EAAES,4BAA4B,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;gBACtD,MAAMC,EAAAA,GAAK,MAAMD,4BAAAA,CAA6BpB,MAAAA,CAAAA;AAC9C,gBAAA,IAAIqB,EAAAA,EAAI;oBACJJ,SAAAA,GAAY,IAAA;AACZC,oBAAAA,KAAAA,GAAQG,GAAGC,QAAQ;AACnBH,oBAAAA,QAAAA,GAAWE,GAAGE,MAAM;oBACpBhC,MAAAA,CAAOoB,OAAO,CAAC,CAAC,uBAAuB,EAAEQ,QAAAA,CAAS,EAAE,EAAED,KAAAA,CAAAA,CAAO,CAAA;AACjE,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOR,KAAAA,EAAY;gBACjBnB,MAAAA,CAAOoB,OAAO,CAAC,CAAC,2BAA2B,EAAExB,YAAY,EAAE,EAAEuB,KAAAA,CAAMM,OAAO,CAAA,CAAE,CAAA;AAChF,YAAA;AACJ,QAAA;QAEA,MAAMQ,kBAAAA,GAAqB,CAACpC,cAAAA,IAAkBY,MAAAA,KAAWZ,cAAAA;AACzD,QAAA,MAAMqC,qBAAqBtB,KAAAA,GAAQ,CAAA;AACnC,QAAA,MAAMuB,YAAYtB,MAAAA,GAAS,CAAA;QAE3B,OAAO;YACHuB,IAAAA,EAAM3B,MAAAA;AACNwB,YAAAA,kBAAAA;AACApC,YAAAA,cAAAA;AACAe,YAAAA,KAAAA;AACAC,YAAAA,MAAAA;AACAqB,YAAAA,kBAAAA;AACAC,YAAAA,SAAAA;AACAxB,YAAAA,YAAAA;AACAU,YAAAA,iBAAAA;AACAC,YAAAA,aAAAA;AACAI,YAAAA,SAAAA;AACAC,YAAAA,KAAAA;AACAC,YAAAA;AACJ,SAAA;IACJ,CAAA,QAAU;AACNzB,QAAAA,OAAAA,CAAQE,KAAK,CAACH,WAAAA,CAAAA;AAClB,IAAA;AACJ;AAEA;;AAEC,IACM,eAAemC,qBAAAA,CAClBzC,WAAmB,EACnBE,eAAuB,MAAM,EAAA;AAE7B,IAAA,MAAME,MAAAA,GAASC,SAAAA,EAAAA;IACf,MAAMC,WAAAA,GAAcC,QAAQC,GAAG,EAAA;IAE/B,IAAI;AACAD,QAAAA,OAAAA,CAAQE,KAAK,CAACT,WAAAA,CAAAA;;QAGd,IAAI;AACA,YAAA,MAAMY,GAAAA,CAAI,0BAAA,CAAA;AACd,QAAA,CAAA,CAAE,OAAOW,KAAAA,EAAY;YACjBnB,MAAAA,CAAOoB,OAAO,CAAC,CAAC,+BAA+B,EAAExB,YAAY,EAAE,EAAEuB,KAAAA,CAAMM,OAAO,CAAA,CAAE,CAAA;AACpF,QAAA;;AAGA,QAAA,IAAIa,WAAAA,GAAc,KAAA;QAClB,IAAIC,QAAAA;QACJ,IAAI;YACA,MAAM,EAAEjC,MAAM,EAAE,GAAG,MAAME,GAAAA,CAAI,CAAC,uBAAuB,EAAEV,YAAAA,CAAAA,CAAc,CAAA;AACrEyC,YAAAA,QAAAA,GAAWjC,OAAOI,IAAI,EAAA;YACtB4B,WAAAA,GAAc,IAAA;AAClB,QAAA,CAAA,CAAE,OAAM;YACJA,WAAAA,GAAc,KAAA;AAClB,QAAA;;AAGA,QAAA,IAAI3B,YAAAA,GAAe,KAAA;QACnB,IAAI6B,SAAAA;QACJ,IAAI;YACA,MAAM,EAAElC,MAAM,EAAE,GAAG,MAAME,GAAAA,CAAI,CAAC,qBAAqB,EAAEV,YAAAA,CAAAA,CAAc,CAAA;YACnE,IAAIQ,MAAAA,CAAOI,IAAI,EAAA,EAAI;AACf8B,gBAAAA,SAAAA,GAAYlC,MAAAA,CAAOW,KAAK,CAAC,KAAA,CAAM,CAAC,CAAA,CAAE;gBAClCN,YAAAA,GAAe,IAAA;AACnB,YAAA;AACJ,QAAA,CAAA,CAAE,OAAM;YACJA,YAAAA,GAAe,KAAA;AACnB,QAAA;;QAGA,MAAM8B,UAAAA,GAAaH,WAAAA,IAAe3B,YAAAA,IAAgB4B,QAAAA,KAAaC,SAAAA;AAC/D,QAAA,IAAIE,cAAAA,GAAiB,KAAA;AACrB,QAAA,IAAIC,UAAAA,GAAa,KAAA;QAEjB,IAAIL,WAAAA,IAAe3B,YAAAA,IAAgB,CAAC8B,UAAAA,EAAY;;YAE5C,IAAI;AACA,gBAAA,MAAMjC,IAAI,CAAC,6BAA6B,EAAEV,YAAAA,CAAa,QAAQ,EAAEA,YAAAA,CAAAA,CAAc,CAAA;gBAC/E4C,cAAAA,GAAiB,IAAA;gBACjBC,UAAAA,GAAa,KAAA;AACjB,YAAA,CAAA,CAAE,OAAM;;gBAEJD,cAAAA,GAAiB,KAAA;gBACjBC,UAAAA,GAAa,IAAA;AACjB,YAAA;AACJ,QAAA;QAEA,OAAO;AACH7C,YAAAA,YAAAA;AACAwC,YAAAA,WAAAA;AACA3B,YAAAA,YAAAA;AACA4B,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,UAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA;AACJ,SAAA;AACJ,IAAA,CAAA,CAAE,OAAOxB,KAAAA,EAAY;QACjB,OAAO;AACHrB,YAAAA,YAAAA;YACAwC,WAAAA,EAAa,KAAA;YACb3B,YAAAA,EAAc,KAAA;YACd8B,UAAAA,EAAY,KAAA;YACZC,cAAAA,EAAgB,KAAA;YAChBC,UAAAA,EAAY,KAAA;AACZxB,YAAAA,KAAAA,EAAOA,MAAMM;AACjB,SAAA;IACJ,CAAA,QAAU;AACNtB,QAAAA,OAAAA,CAAQE,KAAK,CAACH,WAAAA,CAAAA;AAClB,IAAA;AACJ;AAEA;;IAGO,eAAe0C,gBAAAA,CAClBC,QAA+C,EAC/ChD,cAAuB,EACvBiD,OAAAA,GAKI,EAAE,EAAA;AAEN,IAAA,MAAM9C,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAM8C,SAA+B,EAAE;IACvC,MAAMjD,YAAAA,GAAegD,OAAAA,CAAQhD,YAAY,IAAI,MAAA;AAC7C,IAAA,MAAMC,OAAAA,GAAU+C,OAAAA,CAAQ/C,OAAO,KAAK;AACpC,IAAA,MAAMiD,cAAAA,GAAiBF,OAAAA,CAAQE,cAAc,KAAK;AAClD,IAAA,MAAMC,aAAAA,GAAgBH,OAAAA,CAAQG,aAAa,KAAK;IAEhDjD,MAAAA,CAAOkD,IAAI,CAAC,CAAC,wEAAwE,EAAEL,QAAAA,CAASM,MAAM,CAAC,kCAAkC,CAAC,CAAA;;AAG1I,IAAA,IAAIC,oBAAAA,GAAuBvD,cAAAA;AAC3B,IAAA,IAAI,CAACA,cAAAA,EAAgB;AACjB,QAAA,MAAMwD,eAAe,IAAIC,GAAAA,EAAAA;AAEzBtD,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,+DAAA,CAAA;;AAGZ,QAAA,IAAK,IAAIK,CAAAA,GAAI,CAAA,EAAGA,IAAIV,QAAAA,CAASM,MAAM,EAAEI,CAAAA,EAAAA,CAAK;YACtC,MAAMC,GAAAA,GAAMX,QAAQ,CAACU,CAAAA,CAAE;AACvBvD,YAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,GAAG,EAAEK,IAAI,CAAA,CAAE,CAAC,EAAEV,QAAAA,CAASM,MAAM,CAAC,mBAAmB,EAAEK,GAAAA,CAAIpB,IAAI,CAAA,CAAE,CAAA;AAC1E,YAAA,MAAMqB,MAAAA,GAAS,MAAM9D,iBAAAA,CAAkB6D,GAAAA,CAAIE,IAAI,CAAA;AAC/CL,YAAAA,YAAAA,CAAaM,GAAG,CAACF,MAAAA,CAAOrB,IAAI,EAAE,CAACiB,YAAAA,CAAaO,GAAG,CAACH,MAAAA,CAAOrB,IAAI,CAAA,IAAK,CAAA,IAAK,CAAA,CAAA;AACzE,QAAA;;AAGA,QAAA,IAAIyB,QAAAA,GAAW,CAAA;AACf,QAAA,KAAK,MAAM,CAACpD,MAAAA,EAAQqD,MAAM,IAAIT,YAAAA,CAAaU,OAAO,EAAA,CAAI;AAClD,YAAA,IAAID,QAAQD,QAAAA,EAAU;gBAClBA,QAAAA,GAAWC,KAAAA;gBACXV,oBAAAA,GAAuB3C,MAAAA;AAC3B,YAAA;AACJ,QAAA;AAEAT,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,sBAAsB,EAAEE,oBAAAA,CAAqB,EAAE,EAAES,QAAAA,CAAS,CAAC,EAAEhB,QAAAA,CAASM,MAAM,CAAC,UAAU,CAAC,CAAA;AACzG,IAAA;AAEAnD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,yFAAyF,CAAC,CAAA;AACvG,IAAA,IAAK,IAAIK,CAAAA,GAAI,CAAA,EAAGA,IAAIV,QAAAA,CAASM,MAAM,EAAEI,CAAAA,EAAAA,CAAK;QACtC,MAAMC,GAAAA,GAAMX,QAAQ,CAACU,CAAAA,CAAE;AACvBvD,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,GAAG,EAAEK,IAAI,CAAA,CAAE,CAAC,EAAEV,QAAAA,CAASM,MAAM,CAAC,YAAY,EAAEK,GAAAA,CAAIpB,IAAI,CAAA,CAAE,CAAA;AAEnE,QAAA,MAAMqB,SAAS,MAAM9D,iBAAAA,CACjB6D,IAAIE,IAAI,EACRN,sBACAtD,YAAAA,EACAC,OAAAA,CAAAA;AAEJ,QAAA,MAAMiE,SAAmB,EAAE;AAC3B,QAAA,MAAMC,QAAkB,EAAE;QAC1B,IAAIC,aAAAA;;AAGJ,QAAA,IAAI,CAACT,MAAAA,CAAOxB,kBAAkB,IAAImB,oBAAAA,EAAsB;AACpDY,YAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,WAAW,EAAEV,MAAAA,CAAOrB,IAAI,CAAC,yBAAyB,EAAEgB,oBAAAA,CAAqB,EAAE,CAAC,CAAA;YACzFa,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,IAAIE,IAAI,CAAC,iBAAiB,EAAEN,oBAAAA,CAAAA,CAAsB,CAAA;AACvE,QAAA;AAEA,QAAA,IAAIJ,kBAAkBS,MAAAA,CAAOpC,iBAAiB,IAAIoC,MAAAA,CAAOnC,aAAa,EAAE;YACpE0C,MAAAA,CAAOG,IAAI,CAAC,CAAC,0BAA0B,EAAEV,MAAAA,CAAOnC,aAAa,CAAC,CAAC,CAAC,CAAA;AAChE2C,YAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,qBAAqB,EAAED,MAAAA,CAAOnC,aAAa,CAAC,8BAA8B,CAAC,CAAA;AACzG,QAAA;QAEA,IAAIvB,OAAAA,IAAW0D,MAAAA,CAAO/B,SAAS,EAAE;AAC7BsC,YAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,iBAAiB,EAAEV,MAAAA,CAAO7B,QAAQ,CAAC,EAAE,EAAE6B,MAAAA,CAAO9B,KAAK,CAAA,CAAE,CAAA;AAClEsC,YAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,aAAa,EAAEV,MAAAA,CAAO9B,KAAK,CAAA,CAAE,CAAA;AAC7C,QAAA;QAEA,IAAI8B,MAAAA,CAAOvB,kBAAkB,EAAE;YAC3B8B,MAAAA,CAAOG,IAAI,CAAC,CAAC,mBAAmB,EAAEV,MAAAA,CAAO7C,KAAK,CAAC,UAAU,CAAC,CAAA;AAC1DqD,YAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,oBAAoB,EAAED,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;AACjE,QAAA;QAEA,IAAIqB,MAAAA,CAAOtB,SAAS,EAAE;YAClB6B,MAAAA,CAAOG,IAAI,CAAC,CAAC,iBAAiB,EAAEV,MAAAA,CAAO5C,MAAM,CAAC,UAAU,CAAC,CAAA;AACzDoD,YAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,oBAAoB,EAAED,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;AACjE,QAAA;QAEA,IAAI,CAACqB,MAAAA,CAAO9C,YAAY,EAAE;AACtBqD,YAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAA;AAC1CF,YAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,uBAAuB,EAAED,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;AACpE,QAAA;;AAGA,QAAA,IAAIa,aAAAA,EAAe;YACf,IAAI;AACA,gBAAA,MAAM,EAAEmB,wBAAwB,EAAE,GAAG,MAAM,OAAO,oBAAA,CAAA;gBAClD,MAAMC,EAAAA,GAAK,MAAM,OAAO,aAAA,CAAA;gBACxB,MAAMC,UAAAA,GAAa,MAAM,OAAO,MAAA,CAAA;AAEhC,gBAAA,MAAMC,kBAAkBD,UAAAA,CAAWE,IAAI,CAAChB,GAAAA,CAAIE,IAAI,EAAE,cAAA,CAAA;AAClD,gBAAA,MAAMe,kBAAAA,GAAqB,MAAMJ,EAAAA,CAAGK,QAAQ,CAACH,eAAAA,EAAiB,OAAA,CAAA;gBAC9D,MAAMI,WAAAA,GAAcC,IAAAA,CAAKC,KAAK,CAACJ,kBAAAA,CAAAA;gBAC/B,MAAMK,OAAAA,GAAUH,YAAYG,OAAO;AAEnC,gBAAA,MAAMC,UAAAA,GAAaX,wBAAAA,CAAyBU,OAAAA,EAASrB,MAAAA,CAAOrB,IAAI,CAAA;gBAEhE8B,aAAAA,GAAgB;AACZY,oBAAAA,OAAAA;AACAE,oBAAAA,OAAAA,EAASD,WAAWE,KAAK;AACzBC,oBAAAA,KAAAA,EAAOH,WAAWG,KAAK;AACvBC,oBAAAA,GAAAA,EAAKJ,WAAWI;AACpB,iBAAA;gBAEA,IAAI,CAACJ,UAAAA,CAAWE,KAAK,EAAE;oBACnBjB,MAAAA,CAAOG,IAAI,CAAC,CAAC,SAAS,EAAEW,QAAQ,GAAG,EAAEC,UAAAA,CAAWG,KAAK,CAAA,CAAE,CAAA;AACvDjB,oBAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,4BAA4B,EAAEqB,UAAAA,CAAWI,GAAG,CAAA,CAAE,CAAA;AAC5E,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOhE,KAAAA,EAAY;AACjBnB,gBAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,4BAA4B,EAAEoC,GAAAA,CAAIpB,IAAI,CAAC,EAAE,EAAEjB,KAAAA,CAAMM,OAAO,CAAA,CAAE,CAAA;AAC9E,YAAA;AACJ,QAAA;;AAGA,QAAA,MAAM2D,gBAAAA,GAAmB,MAAM/C,qBAAAA,CAAsBmB,GAAAA,CAAIE,IAAI,EAAE5D,YAAAA,CAAAA;QAE/D,IAAIsF,gBAAAA,CAAiB9C,WAAW,IAAI8C,gBAAAA,CAAiBzE,YAAY,IAAI,CAACyE,gBAAAA,CAAiB3C,UAAU,EAAE;YAC/F,IAAI2C,gBAAAA,CAAiBzC,UAAU,EAAE;AAC7BqB,gBAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,eAAe,EAAErE,YAAAA,CAAa,iDAAiD,CAAC,CAAA;AAC7FmE,gBAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,iBAAiB,EAAE5D,YAAAA,CAAa,4BAA4B,EAAEA,YAAAA,CAAa,iBAAiB,EAAE2D,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;YACzI,CAAA,MAAO,IAAIgD,gBAAAA,CAAiB1C,cAAc,EAAE;AACxCsB,gBAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,eAAe,EAAErE,YAAAA,CAAa,qCAAqC,CAAC,CAAA;AACjFmE,gBAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,iBAAiB,EAAE5D,YAAAA,CAAa,oBAAoB,EAAEA,YAAAA,CAAa,iBAAiB,EAAE2D,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;YACjI,CAAA,MAAO;AACH4B,gBAAAA,MAAAA,CAAOG,IAAI,CAAC,CAAC,eAAe,EAAErE,YAAAA,CAAa,kCAAkC,CAAC,CAAA;AAC9EmE,gBAAAA,KAAAA,CAAME,IAAI,CAAC,CAAC,GAAG,EAAEX,GAAAA,CAAIE,IAAI,CAAC,iBAAiB,EAAE5D,YAAAA,CAAa,oBAAoB,EAAEA,YAAAA,CAAa,iBAAiB,EAAE2D,MAAAA,CAAOrB,IAAI,CAAA,CAAE,CAAA;AACjI,YAAA;AACJ,QAAA,CAAA,MAAO,IAAI,CAACgD,gBAAAA,CAAiB9C,WAAW,IAAI8C,gBAAAA,CAAiBzE,YAAY,EAAE;;AAEvEX,YAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,MAAM,EAAEtB,YAAAA,CAAa,kBAAkB,EAAE0D,GAAAA,CAAIpB,IAAI,CAAC,8BAA8B,CAAC,CAAA;QACrG,CAAA,MAAO,IAAIgD,gBAAAA,CAAiBjE,KAAK,EAAE;AAC/BnB,YAAAA,MAAAA,CAAOoB,OAAO,CAAC,CAAC,uCAAuC,EAAEoC,GAAAA,CAAIpB,IAAI,CAAC,EAAE,EAAEgD,gBAAAA,CAAiBjE,KAAK,CAAA,CAAE,CAAA;AAClG,QAAA;AAEA4B,QAAAA,MAAAA,CAAOoB,IAAI,CAAC;AACRkB,YAAAA,WAAAA,EAAa7B,IAAIpB,IAAI;AACrBsB,YAAAA,IAAAA,EAAMF,IAAIE,IAAI;AACdD,YAAAA,MAAAA;AACAS,YAAAA,aAAAA;AACAkB,YAAAA,gBAAAA;AACApB,YAAAA,MAAAA;AACAC,YAAAA;AACJ,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,MAAMqB,WAAAA,GAAcvC,MAAAA,CAAOwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACb,MAAM,GAAG,CAAA,CAAA,CAAGA,MAAM;AAClE,IAAA,MAAMsC,aAAAA,GAAgB1C,MAAAA,CAAOwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEtB,aAAa,IAAI,CAACsB,CAAAA,CAAEtB,aAAa,CAACc,OAAO,EAAE7B,MAAM;IAC5F,MAAMuC,sBAAAA,GAAyB3C,MAAAA,CAAOwC,MAAM,CAACC,CAAAA,IAAKA,CAAAA,CAAEJ,gBAAgB,IAAI,CAACI,CAAAA,CAAEJ,gBAAgB,CAAC3C,UAAU,IAAI+C,CAAAA,CAAEJ,gBAAgB,CAAC9C,WAAW,IAAIkD,CAAAA,CAAEJ,gBAAgB,CAACzE,YAAY,CAAA,CAAEwC,MAAM;AACnL,IAAA,MAAMwC,YAAAA,GAAe5C,MAAAA,CAAOwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACb,MAAM,KAAK,CAAA,CAAA,CAAGA,MAAM;AAErEnD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,kBAAkB,EAAEyC,YAAAA,CAAa,CAAC,EAAE9C,QAAAA,CAASM,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAC1F,IAAA,IAAImC,cAAc,CAAA,EAAG;AACjBtF,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,kBAAkB,EAAEoC,WAAAA,CAAY,WAAW,CAAC,CAAA;AAC7D,IAAA;IAEA,OAAO;AACHM,QAAAA,aAAAA,EAAe/C,SAASM,MAAM;AAC9BwC,QAAAA,YAAAA;AACAL,QAAAA,WAAAA;AACAG,QAAAA,aAAAA;AACAC,QAAAA,sBAAAA;AACA3C,QAAAA;AACJ,KAAA;AACJ;AAEA;;IAGO,SAAS8C,kBAAAA,CAAmBC,MAAyB,EAAA;AACxD,IAAA,MAAMC,QAAkB,EAAE;;AAG1B,IAAA,MAAM1C,eAAe,IAAIC,GAAAA,EAAAA;AACzB,IAAA,KAAK,MAAM0C,KAAAA,IAASF,MAAAA,CAAO/C,MAAM,CAAE;AAC/B,QAAA,MAAMtC,MAAAA,GAASuF,KAAAA,CAAMvC,MAAM,CAACrB,IAAI;QAChCiB,YAAAA,CAAaM,GAAG,CAAClD,MAAAA,EAAQ,CAAC4C,aAAaO,GAAG,CAACnD,MAAAA,CAAAA,IAAW,CAAA,IAAK,CAAA,CAAA;AAC/D,IAAA;IAEA,IAAIwF,YAAAA;AACJ,IAAA,IAAIpC,QAAAA,GAAW,CAAA;AACf,IAAA,KAAK,MAAM,CAACpD,MAAAA,EAAQqD,MAAM,IAAIT,YAAAA,CAAaU,OAAO,EAAA,CAAI;AAClD,QAAA,IAAID,QAAQD,QAAAA,EAAU;YAClBA,QAAAA,GAAWC,KAAAA;YACXmC,YAAAA,GAAexF,MAAAA;AACnB,QAAA;AACJ,IAAA;AAEAsF,IAAAA,KAAAA,CAAM5B,IAAI,CAAC,kEAAA,CAAA;AACX4B,IAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,uBAAuB,EAAE2B,MAAAA,CAAOF,aAAa,CAAC,UAAU,CAAC,CAACM,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AACnF,IAAA,IAAID,YAAAA,IAAgBpC,QAAAA,KAAaiC,MAAAA,CAAOF,aAAa,EAAE;QACnDG,KAAAA,CAAM5B,IAAI,CAAC,CAAC,oBAAoB,EAAE8B,YAAAA,CAAAA,CAAc,CAACC,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AAClE,IAAA,CAAA,MAAO,IAAID,YAAAA,EAAc;AACrBF,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,qBAAqB,EAAE8B,YAAAA,CAAa,EAAE,EAAEpC,QAAAA,CAAS,CAAC,EAAEiC,MAAAA,CAAOF,aAAa,CAAC,CAAC,CAAC,CAACM,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AACzG,IAAA;AACAH,IAAAA,KAAAA,CAAM5B,IAAI,CAAC,kEAAA,CAAA;AACX4B,IAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;IAEX,IAAI2B,MAAAA,CAAOH,YAAY,GAAG,CAAA,EAAG;AACzBI,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,cAAc,EAAE2B,OAAOH,YAAY,CAAC,QAAQ,EAAEG,OAAOH,YAAY,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AAElG,QAAA,MAAMQ,UAAAA,GAAaL,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACb,MAAM,KAAK,CAAA,CAAA;AACjE,QAAA,MAAMiD,eAAeC,IAAAA,CAAKC,GAAG,CAACH,UAAAA,CAAWhD,MAAM,EAAE,CAAA,CAAA;AACjDgD,QAAAA,UAAAA,CAAWI,KAAK,CAAC,CAAA,EAAGH,YAAAA,CAAAA,CAAcI,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACtC,YAAA,MAAMS,WAAAA,GAAcT,KAAAA,CAAM9B,aAAa,GAAG,CAAC,GAAG,EAAE8B,KAAAA,CAAM9B,aAAa,CAACY,OAAO,CAAC,CAAC,CAAC,GAAG,EAAA;YACjFiB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,GAAG,EAAE6B,KAAAA,CAAMX,WAAW,GAAGoB,WAAAA,CAAAA,CAAa,CAAA;AACtD,QAAA,CAAA,CAAA;QAEA,IAAIN,UAAAA,CAAWhD,MAAM,GAAGiD,YAAAA,EAAc;YAClCL,KAAAA,CAAM5B,IAAI,CAAC,CAAC,WAAW,EAAEgC,WAAWhD,MAAM,GAAGiD,YAAAA,CAAa,KAAK,CAAC,CAAA;AACpE,QAAA;AACAL,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,IAAA;;IAGA,IAAI2B,MAAAA,CAAOL,aAAa,GAAG,CAAA,EAAG;AAC1BM,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,oBAAoB,EAAE2B,OAAOL,aAAa,CAAC,QAAQ,EAAEK,OAAOL,aAAa,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AAE1G,QAAA,MAAMiB,kBAAAA,GAAqBZ,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEtB,aAAa,IAAI,CAACsB,CAAAA,CAAEtB,aAAa,CAACc,OAAO,CAAA;QAChG0B,kBAAAA,CAAmBF,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACvBD,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,GAAG,EAAE6B,KAAAA,CAAMX,WAAW,CAAA,CAAE,CAAA;YACpCU,KAAAA,CAAM5B,IAAI,CAAC,CAAC,aAAa,EAAE6B,KAAAA,CAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;YAC9C2D,KAAAA,CAAM5B,IAAI,CAAC,CAAC,cAAc,EAAE6B,KAAAA,CAAM9B,aAAa,CAAEY,OAAO,CAAA,CAAE,CAAA;YAC1DiB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,YAAY,EAAE6B,KAAAA,CAAM9B,aAAa,CAAEgB,KAAK,CAAA,CAAE,CAAA;YACtDa,KAAAA,CAAM5B,IAAI,CAAC,CAAC,UAAU,EAAE6B,KAAAA,CAAM9B,aAAa,CAAEiB,GAAG,CAAA,CAAE,CAAA;AAClDY,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;;IAGA,IAAI2B,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,8BAA8B,EAAE2B,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AACtIK,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,OAAO,EAAE2B,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,2CAA2C,CAAC,CAAA;AACxJK,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,uEAAuE,CAAC,CAAA;AACpF4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;QAEX,MAAMwC,qBAAAA,GAAwBb,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEJ,gBAAgB,IAAI,CAACI,EAAEJ,gBAAgB,CAAC3C,UAAU,IAAI+C,CAAAA,CAAEJ,gBAAgB,CAAC9C,WAAW,IAAIkD,CAAAA,CAAEJ,gBAAgB,CAACzE,YAAY,CAAA;QACjLgG,qBAAAA,CAAsBH,OAAO,CAACR,CAAAA,KAAAA,GAAAA;gBAIKY,cAAAA,EACAA,eAAAA;YAJ/B,MAAMA,IAAAA,GAAOZ,MAAMZ,gBAAgB;AACnCW,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,GAAG,EAAE6B,KAAAA,CAAMX,WAAW,CAAA,CAAE,CAAA;AACpCU,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,oBAAoB,EAAEyC,IAAAA,CAAK9G,YAAY,CAAA,CAAE,CAAA;AACrDiG,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,iBAAiB,EAAA,CAAEyC,iBAAAA,IAAAA,CAAKrE,QAAQ,MAAA,IAAA,IAAbqE,cAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAeC,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAG,GAAG,CAAC,CAAA;AAClEd,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,iBAAiB,EAAA,CAAEyC,kBAAAA,IAAAA,CAAKpE,SAAS,MAAA,IAAA,IAAdoE,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,gBAAgBC,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAG,GAAG,CAAC,CAAA;YACnE,IAAID,IAAAA,CAAKjE,UAAU,EAAE;AACjBoD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,gDAAgD,CAAC,CAAA;YACjE,CAAA,MAAO,IAAIyC,IAAAA,CAAKlE,cAAc,EAAE;AAC5BqD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAA;AAClD,YAAA;AACA4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;IAEA,IAAI2B,MAAAA,CAAOR,WAAW,GAAG,CAAA,EAAG;;AAExB,QAAA,MAAMwB,aAAAA,GAAgBhB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACpC,iBAAiB,EAAE8B,MAAM;AAClF,QAAA,MAAM4D,OAAAA,GAAUjB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAAC/B,SAAS,EAAEyB,MAAM;AACpE,QAAA,MAAM6D,uBAAAA,GAA0BlB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAE/B,MAAM,CAACxB,kBAAkB,EAAEkB,MAAM;AAC9F,QAAA,MAAM8D,aAAAA,GAAgBnB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACvB,kBAAkB,EAAEiB,MAAM;AACnF,QAAA,MAAM+D,WAAAA,GAAcpB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACtB,SAAS,EAAEgB,MAAM;AACxE,QAAA,MAAMgE,aAAAA,GAAgBrB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAE/B,MAAM,CAAC9C,YAAY,EAAEwC,MAAM;AAE9E,QAAA,IAAI2D,gBAAgB,CAAA,IAAKC,OAAAA,GAAU,KAAKjB,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACvEK,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAA;YAChC,IAAI2B,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,MAAM,EAAE2B,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,+BAA+B,CAAC,CAAA;AAC/I,YAAA;AACA,YAAA,IAAIoB,gBAAgB,CAAA,EAAG;AACnBf,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,OAAO,EAAE2C,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,qBAAqB,CAAC,CAAA;AACtG,YAAA;AACA,YAAA,IAAIC,UAAU,CAAA,EAAG;AACbhB,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,MAAM,EAAE4C,OAAAA,CAAQ,QAAQ,EAAEA,OAAAA,KAAY,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,kBAAkB,CAAC,CAAA;AACtF,YAAA;AACAhB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAA;QAChC,IAAI2B,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAGK,MAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE2B,OAAOJ,sBAAsB,CAAC,yBAAyB,EAAEI,MAAAA,CAAOJ,sBAAsB,KAAK,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACnK,QAAA,IAAIoB,aAAAA,GAAgB,CAAA,EAAGf,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE2C,aAAAA,CAAc,eAAe,EAAEA,aAAAA,KAAkB,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACzG,QAAA,IAAIC,OAAAA,GAAU,CAAA,EAAGhB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE4C,OAAAA,CAAQ,YAAY,EAAEA,OAAAA,KAAY,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACpF,QAAA,IAAIC,uBAAAA,GAA0B,CAAA,EAAGjB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6C,uBAAAA,CAAwB,oBAAoB,EAAEA,uBAAAA,KAA4B,CAAA,GAAI,MAAM,KAAA,CAAA,CAAO,CAAA;AAC/I,QAAA,IAAIC,gBAAgB,CAAA,EAAGlB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE8C,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,sBAAsB,CAAC,CAAA;AACxH,QAAA,IAAIC,cAAc,CAAA,EAAGnB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE+C,WAAAA,CAAY,QAAQ,EAAEA,WAAAA,KAAgB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,cAAc,CAAC,CAAA;AAC1G,QAAA,IAAIC,gBAAgB,CAAA,EAAGpB,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAEgD,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,sBAAsB,CAAC,CAAA;AACxHpB,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AAEX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+BAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;;AAGX,QAAA,MAAMiD,gBAAAA,GAAmBtB,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACb,MAAM,GAAG,CAAA,CAAA;AACrE,QAAA,MAAMkE,YAAAA,GAAeD,gBAAAA,CAAiBE,IAAI,CAAC,CAAC9B,CAAAA,EAAG+B,CAAAA,GAAAA;AAC3C,YAAA,MAAMC,SAAS,CAAChC,EAAE/B,MAAM,CAACpC,iBAAiB,GAAG,IAAA,GAAO,CAAA,KAAMmE,CAAAA,CAAE/B,MAAM,CAAC/B,SAAS,GAAG,MAAM,CAAA,CAAA;AACrF,YAAA,MAAM+F,SAAS,CAACF,EAAE9D,MAAM,CAACpC,iBAAiB,GAAG,IAAA,GAAO,CAAA,KAAMkG,CAAAA,CAAE9D,MAAM,CAAC/B,SAAS,GAAG,MAAM,CAAA,CAAA;AACrF,YAAA,OAAO+F,MAAAA,GAASD,MAAAA;AACpB,QAAA,CAAA,CAAA;QAEAH,YAAAA,CAAab,OAAO,CAAC,CAACR,KAAAA,EAAO0B,KAAAA,GAAAA;;YAEzB,MAAMC,WAAAA,GAAc3B,MAAMvC,MAAM,CAACpC,iBAAiB,IAAI2E,KAAAA,CAAMvC,MAAM,CAAC/B,SAAS;YAC5E,MAAMkG,MAAAA,GAASD,cAAc,aAAA,GAAgB,aAAA;AAE7C5B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAGyD,MAAAA,CAAO,EAAE,EAAEF,KAAAA,GAAQ,CAAA,CAAE,CAAC,EAAEL,aAAalE,MAAM,CAAC,EAAE,EAAE6C,KAAAA,CAAMX,WAAW,CAAA,CAAE,CAAA;AACjFU,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,UAAU,EAAE6B,KAAAA,CAAMtC,IAAI,CAAA,CAAE,CAAA;YACpCqC,KAAAA,CAAM5B,IAAI,CAAC,CAAC,QAAQ,EAAE6B,KAAAA,CAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;AAEzC,YAAA,IAAI4D,KAAAA,CAAMvC,MAAM,CAAC9C,YAAY,EAAE;AAC3B,gBAAA,MAAMkH,aAAa,EAAE;AACrB,gBAAA,IAAI7B,MAAMvC,MAAM,CAAC7C,KAAK,GAAG,GAAGiH,UAAAA,CAAW1D,IAAI,CAAC,CAAC,MAAM,EAAE6B,KAAAA,CAAMvC,MAAM,CAAC7C,KAAK,CAAA,CAAE,CAAA;AACzE,gBAAA,IAAIoF,MAAMvC,MAAM,CAAC5C,MAAM,GAAG,GAAGgH,UAAAA,CAAW1D,IAAI,CAAC,CAAC,OAAO,EAAE6B,KAAAA,CAAMvC,MAAM,CAAC5C,MAAM,CAAA,CAAE,CAAA;gBAC5E,IAAIgH,UAAAA,CAAW1E,MAAM,GAAG,CAAA,EAAG;oBACvB4C,KAAAA,CAAM5B,IAAI,CAAC,CAAC,MAAM,EAAE0D,UAAAA,CAAWrD,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC/C,gBAAA;YACJ,CAAA,MAAO;AACHuB,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAA;AACvC,YAAA;AAEA4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,SAAA,CAAA;AACX6B,YAAAA,KAAAA,CAAMhC,MAAM,CAACwC,OAAO,CAACtB,CAAAA,KAAAA,GAAAA;gBACjB,MAAM4C,IAAAA,GAAO5C,KAAAA,CAAM1D,QAAQ,CAAC,iBAAA,CAAA,GAAqB,QAAQ0D,KAAAA,CAAM1D,QAAQ,CAAC,IAAA,CAAA,GAAQ,KAAA,GAAQ,IAAA;gBACxFuE,KAAAA,CAAM5B,IAAI,CAAC,CAAC,EAAE,EAAE2D,IAAAA,CAAK,CAAC,EAAE5C,KAAAA,CAAAA,CAAO,CAAA;AACnC,YAAA,CAAA,CAAA;AAEAa,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,kCAAA,CAAA;AACX6B,YAAAA,KAAAA,CAAM/B,KAAK,CAACuC,OAAO,CAAC,CAACrB,GAAAA,EAAK4C,QAAAA,GAAAA;gBACtBhC,KAAAA,CAAM5B,IAAI,CAAC,CAAC,EAAE,EAAE4D,QAAAA,GAAW,CAAA,CAAE,EAAE,EAAE5C,GAAAA,CAAAA,CAAK,CAAA;AAC1C,YAAA,CAAA,CAAA;;AAGA,YAAA,IAAIa,KAAAA,CAAMvC,MAAM,CAACpC,iBAAiB,EAAE;AAChC0E,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,kCAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,8DAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,8CAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,wCAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,mDAAA,GAAsD6B,KAAAA,CAAMvC,MAAM,CAACrB,IAAI,CAAA;AAClF2D,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,wEAAA,CAAA;AACf,YAAA;AAEA,YAAA,IAAI6B,KAAAA,CAAMvC,MAAM,CAAC/B,SAAS,EAAE;AACxBqE,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,4BAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,wBAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,6EAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,0CAAA,CAAA;AACX4B,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,oDAAA,CAAA;AACf,YAAA;AAEA4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AAEA4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,0BAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AAEX,QAAA,IAAI6D,UAAAA,GAAa,CAAA;;QAGjB,IAAIlC,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,oDAAoD,CAAC,CAAA;AAC9EA,YAAAA,UAAAA,EAAAA;YACA,MAAMrB,qBAAAA,GAAwBb,MAAAA,CAAO/C,MAAM,CAACwC,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEJ,gBAAgB,IAAI,CAACI,EAAEJ,gBAAgB,CAAC3C,UAAU,IAAI+C,CAAAA,CAAEJ,gBAAgB,CAAC9C,WAAW,IAAIkD,CAAAA,CAAEJ,gBAAgB,CAACzE,YAAY,CAAA;YACjLgG,qBAAAA,CAAsBH,OAAO,CAACR,CAAAA,KAAAA,GAAAA;gBAC1B,MAAMY,IAAAA,GAAOZ,MAAMZ,gBAAgB;gBACnC,IAAIwB,IAAAA,CAAKjE,UAAU,EAAE;AACjBoD,oBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,iBAAiB,EAAEkD,IAAAA,CAAK9G,YAAY,CAAC,4BAA4B,EAAE8G,IAAAA,CAAK9G,YAAY,CAAC,iBAAiB,EAAEkG,KAAAA,CAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;gBACtL,CAAA,MAAO;AACH2D,oBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,iBAAiB,EAAEkD,IAAAA,CAAK9G,YAAY,CAAC,oBAAoB,EAAE8G,IAAAA,CAAK9G,YAAY,CAAC,iBAAiB,EAAEkG,KAAAA,CAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;AAC9K,gBAAA;AACJ,YAAA,CAAA,CAAA;AACA2D,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI2C,gBAAgB,CAAA,EAAG;AACnBf,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,6CAA6C,CAAC,CAAA;AACvEA,YAAAA,UAAAA,EAAAA;YACAX,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACpC,iBAAiB,CAAA,CAAEmF,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACzDD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,qBAAqB,EAAEsC,MAAMvC,MAAM,CAACnC,aAAa,CAAA,CAAE,CAAA;AAC9G,YAAA,CAAA,CAAA;AACAyE,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,8CAAA,CAAA;AACX4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;QAEA,IAAI2B,MAAAA,CAAOL,aAAa,GAAG,CAAA,EAAG;AAC1BM,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,oDAAoD,CAAC,CAAA;AAC9EA,YAAAA,UAAAA,EAAAA;AACAX,YAAAA,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,EAAEtB,aAAa,IAAI,CAACsB,CAAAA,CAAEtB,aAAa,CAACc,OAAO,CAAA,CAAEwB,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AAC1ED,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,wBAAwB,CAAC,CAAA;AACpF,YAAA,CAAA,CAAA;AACAqC,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI4C,UAAU,CAAA,EAAG;AACbhB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,wBAAwB,CAAC,CAAA;AAClDA,YAAAA,UAAAA,EAAAA;YACAX,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAAC/B,SAAS,CAAA,CAAE8E,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACjDD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,SAAS,EAAEW,KAAAA,CAAMvC,MAAM,CAAC9B,KAAK,CAAA,CAAE,CAAA;AACpEoE,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,qEAAqE,CAAC,CAAA;AACtF,YAAA,CAAA,CAAA;AACA4B,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI6C,0BAA0B,CAAA,EAAG;AAC7BjB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,+BAA+B,CAAC,CAAA;AACzDA,YAAAA,UAAAA,EAAAA;AACAX,YAAAA,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAE/B,MAAM,CAACxB,kBAAkB,CAAA,CAAEuE,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AAC3DD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,iBAAiB,EAAEsC,MAAMvC,MAAM,CAAC5D,cAAc,CAAA,CAAE,CAAA;AAC3G,YAAA,CAAA,CAAA;AACAkG,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI+C,cAAc,CAAA,EAAG;AACjBnB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,qBAAqB,CAAC,CAAA;AAC/CA,YAAAA,UAAAA,EAAAA;AACAX,YAAAA,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACtB,SAAS,IAAI,CAACqD,EAAE/B,MAAM,CAACpC,iBAAiB,CAAA,CAAEmF,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AAChFD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,oBAAoB,EAAEsC,MAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;AACpG,YAAA,CAAA,CAAA;AACA2D,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI8C,gBAAgB,CAAA,EAAG;AACnBlB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,uBAAuB,CAAC,CAAA;AACjDA,YAAAA,UAAAA,EAAAA;AACAX,YAAAA,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAE/B,MAAM,CAACvB,kBAAkB,IAAI,CAACsD,EAAE/B,MAAM,CAACpC,iBAAiB,CAAA,CAAEmF,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACzFD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,oBAAoB,EAAEsC,MAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;AACpG,YAAA,CAAA,CAAA;AACA2D,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAIgD,gBAAgB,CAAA,EAAG;AACnBpB,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAA,EAAG6D,UAAAA,CAAW,2BAA2B,CAAC,CAAA;AACrDA,YAAAA,UAAAA,EAAAA;AACAX,YAAAA,YAAAA,CAAa9B,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAE/B,MAAM,CAAC9C,YAAY,CAAA,CAAE6F,OAAO,CAACR,CAAAA,KAAAA,GAAAA;AACrDD,gBAAAA,KAAAA,CAAM5B,IAAI,CAAC,CAAC,KAAK,EAAE6B,KAAAA,CAAMX,WAAW,CAAC,KAAK,EAAEW,KAAAA,CAAMtC,IAAI,CAAC,uBAAuB,EAAEsC,MAAMvC,MAAM,CAACrB,IAAI,CAAA,CAAE,CAAA;AACvG,YAAA,CAAA,CAAA;AACA2D,YAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,+DAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,iDAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,2CAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,EAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,yCAAA,CAAA;AACX4B,QAAAA,KAAAA,CAAM5B,IAAI,CAAC,0DAAA,CAAA;AACf,IAAA;AAEA4B,IAAAA,KAAAA,CAAM5B,IAAI,CAAC,kEAAA,CAAA;IAEX,OAAO4B,KAAAA,CAAMvB,IAAI,CAAC,IAAA,CAAA;AACtB;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eldrforge/kodrdriv",
3
- "version": "1.2.26",
3
+ "version": "1.2.28",
4
4
  "description": "Create Intelligent Release Notes or Change Logs from Git",
5
5
  "main": "dist/main.js",
6
6
  "type": "module",
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Helper script to identify and suggest updates for test log assertions
4
+ * after migrating to AI-friendly logging format
5
+ */
6
+
7
+ const fs = require('fs');
8
+ const path = require('path');
9
+
10
+ // Mapping of old emoji-based messages to new structured format patterns
11
+ const logMessageMappings = {
12
+ // Success messages
13
+ '✅ ': 'SUCCESS: ',
14
+ '✓ ': 'SUCCESS: ',
15
+
16
+ // Error messages
17
+ '❌ ': 'FAILED: ',
18
+ '✗ ': 'FAILED: ',
19
+
20
+ // Warning messages
21
+ '⚠️ ': 'WARNING: ',
22
+
23
+ // Info messages
24
+ '🔄 ': '_SYNCING: ',
25
+ '📦 ': '_PACKAGE: ',
26
+ '🎯 ': '_TARGET: ',
27
+ '🏷️ ': '_TAG: ',
28
+ '📝 ': '_COMMIT: ',
29
+ '🚀 ': '_STARTING: ',
30
+ 'ℹ️ ': '_INFO: ',
31
+ '💡 ': '_HINT: ',
32
+ '🔧 ': '_RESOLUTION: ',
33
+ '📊 ': '_ANALYSIS: ',
34
+ '🎉 ': '_COMPLETE: ',
35
+ '🔍 ': '_CHECK: ',
36
+ '📁 ': '_FILE: ',
37
+ '🤖 ': '_AI: ',
38
+ '🎵 ': '_AUDIO: ',
39
+ '🎙️ ': '_RECORDING: ',
40
+ '🏁 ': '_MILESTONE: ',
41
+ '🔓 ': '_UNLINK: ',
42
+ '🔗 ': '_LINK: ',
43
+ };
44
+
45
+ console.log('AI-Friendly Logging Test Update Helper');
46
+ console.log('======================================\n');
47
+ console.log('This script helps identify test assertions that need updating');
48
+ console.log('after migrating to structured AI-friendly logging format.\n');
49
+
50
+ console.log('Common patterns to update in tests:\n');
51
+ console.log('OLD: expect(logger.info).toHaveBeenCalledWith(\'✅ Success message\')');
52
+ console.log('NEW: expect(logger.info).toHaveBeenCalledWith(\'OPERATION_SUCCESS: Success message | Status: completed\')\n');
53
+
54
+ console.log('OLD: expect(logger.warn).toHaveBeenCalledWith(\'⚠️ Warning message\')');
55
+ console.log('NEW: expect(logger.warn).toHaveBeenCalledWith(\'OPERATION_WARNING: Warning message | Impact: ...\')\n');
56
+
57
+ console.log('OLD: expect(logger.error).toHaveBeenCalledWith(\'❌ Error message\')');
58
+ console.log('NEW: expect(logger.error).toHaveBeenCalledWith(\'OPERATION_FAILED: Error message | Error: ...\')\n');
59
+
60
+ console.log('\nKey principles for new format:');
61
+ console.log('1. OPERATION_STATE: prefix (SNAKE_CASE)');
62
+ console.log('2. Pipe-separated key-value pairs');
63
+ console.log('3. Include context: Package, Status, Error, Purpose, Action, etc.');
64
+ console.log('4. No emojis in structured prefixes\n');
65
+
66
+ console.log('Run full test suite to see failures:');
67
+ console.log(' npm test -- --run\n');
68
+
69
+ console.log('Then update test assertions to match new log format.');
70
+ console.log('See AI-FRIENDLY-LOGGING-GUIDE.md for complete documentation.\n');
71
+
72
+ process.exit(0);
73
+