@grunnverk/commands-publish 1.5.7-dev.20260131224204.ba5749e → 1.5.7-dev.20260131231507.728276

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/commands/development.ts","../src/commands/check-development.ts","../src/commands/release.ts","../src/commands/publish.ts","../src/commands/validation.ts","../src/commands/dryRunReporter.ts","../src/utils/checkpoints.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Development command - Manages transition to working branch for active development\n *\n * This command handles the workflow of moving to the working branch from any other branch:\n *\n * New behavior:\n * 1. Fetch latest remote information\n * 2. Switch to the \"working\" branch (create if needed) and sync with remote\n * 3. Merge latest changes from \"development\" branch if it exists\n * 4. Run npm install and commit any changes (e.g., package-lock.json)\n * 5. Run `npm version pre<incrementLevel> --preid=<tag>` to bump version\n *\n * This is designed for reverse flow - taking you back to working for active development.\n */\n\nimport { getDryRunLogger, Config, findDevelopmentBranch, KODRDRIV_DEFAULTS, incrementPatchVersion, incrementMinorVersion, incrementMajorVersion } from '@grunnverk/core';\nimport { run, localBranchExists, getCurrentBranch, safeJsonParse, validatePackageJson } from '@grunnverk/git-tools';\nimport { createStorage } from '@grunnverk/shared';\n\n/**\n * Create retroactive working branch tags for past releases\n * Scans git history for X.X.X-dev.0 commits and tags them\n */\nasync function createRetroactiveTags(\n workingBranch: string,\n isDryRun: boolean,\n logger: any,\n tagPrefix: string = 'working/'\n): Promise<void> {\n logger.info('');\n logger.info('DEV_TAG_SCAN_STARTING: Scanning git history for past release points | Purpose: Create retroactive tags | Pattern: X.X.X-dev.0 version bumps');\n logger.info('DEV_TAG_SCAN_PATTERN: Looking for development version bump commits | Version Format: X.X.X-dev.0 | Purpose: Identify release points');\n logger.info('');\n\n try {\n // Get all commits on working branch with oneline format\n const { stdout } = await run(`git log ${workingBranch} --oneline --all`);\n const commits = stdout.trim().split('\\n');\n\n // Find commits that are version bumps to -dev.0 (these mark release points)\n const devCommits = commits.filter(line => {\n // Match patterns like: \"4.4.52-dev.0\" or \"chore: bump version to 4.4.52-dev.0\"\n return /\\b\\d+\\.\\d+\\.\\d+-dev\\.0\\b/.test(line);\n });\n\n logger.info(`DEV_TAG_COMMITS_FOUND: Found potential development version commits | Count: ${devCommits.length} | Status: Analyzing for tag creation`);\n\n const tagsCreated: string[] = [];\n const tagsSkipped: string[] = [];\n\n for (const commitLine of devCommits) {\n const [sha, ...messageParts] = commitLine.split(' ');\n const message = messageParts.join(' ');\n\n // Extract version from message (e.g., \"4.4.52-dev.0\" → \"4.4.52\")\n const versionMatch = message.match(/(\\d+\\.\\d+\\.\\d+)-dev\\.0/);\n if (!versionMatch) continue;\n\n const releaseVersion = versionMatch[1]; // e.g., \"4.4.52\"\n const workingTagName = `${tagPrefix}v${releaseVersion}`;\n\n // Check if tag already exists\n const tagExistsResult = await run(`git tag -l \"${workingTagName}\"`);\n const tagExists = tagExistsResult.stdout.trim() !== '';\n\n if (tagExists) {\n tagsSkipped.push(workingTagName);\n logger.verbose(` Skip: ${workingTagName} (already exists)`);\n continue;\n }\n\n if (!isDryRun) {\n // Tag the commit that represents the dev version bump\n // This is the commit AFTER the release, which marks the starting point\n logger.verbose(` Create: ${workingTagName} at ${sha.substring(0, 7)}`);\n await run(`git tag ${workingTagName} ${sha}`);\n tagsCreated.push(workingTagName);\n } else {\n logger.info(`DEV_TAG_DRY_RUN: Would create retroactive tag | Mode: dry-run | Tag: ${workingTagName} | Commit: ${sha.substring(0, 7)}`);\n tagsCreated.push(workingTagName);\n }\n }\n\n logger.info('');\n\n if (tagsCreated.length > 0 && !isDryRun) {\n logger.info(`DEV_TAG_PUSHING: Pushing retroactive tags to remote | Count: ${tagsCreated.length} | Remote: origin | Command: git push origin --tags`);\n await run('git push origin --tags');\n logger.info('');\n logger.info(`DEV_TAG_PUSH_SUCCESS: Successfully created and pushed retroactive tags | Count: ${tagsCreated.length} | Remote: origin | Status: completed`);\n tagsCreated.forEach(tag => logger.info(`DEV_TAG_CREATED: Retroactive tag created | Tag: ${tag} | Status: pushed`));\n } else if (tagsCreated.length > 0 && isDryRun) {\n logger.info(`DEV_TAG_DRY_RUN_SUMMARY: Would create and push retroactive tags | Mode: dry-run | Count: ${tagsCreated.length}`);\n tagsCreated.forEach(tag => logger.info(`DEV_TAG_DRY_RUN_TAG: Would create tag | Tag: ${tag} | Mode: dry-run`));\n }\n\n if (tagsSkipped.length > 0) {\n logger.verbose('');\n logger.verbose(`Skipped ${tagsSkipped.length} existing tags:`);\n tagsSkipped.forEach(tag => logger.verbose(` - ${tag}`));\n }\n\n if (tagsCreated.length === 0 && tagsSkipped.length === 0) {\n logger.info('DEV_TAG_NO_COMMITS: No development version commits found in history | Pattern: X.X.X-dev.0 | Status: Nothing to tag | Action: No retroactive tags created');\n }\n\n logger.info('');\n\n } catch (error: any) {\n logger.warn(`DEV_TAG_CREATION_FAILED: Unable to create retroactive tags | Error: ${error.message} | Impact: Past releases not tagged | Alternative: Manual tagging available`);\n logger.warn('DEV_TAG_MANUAL_OPTION: Manual tagging option available | Action: Use git tag manually for past releases | Purpose: Tag historical releases');\n // Don't throw - retroactive tagging is optional\n }\n}\n\n/**\n * Execute the development command\n */\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info('DEV_BRANCH_NAVIGATION: Navigating to working branch for development | Purpose: Start development cycle | Next: Version bump and sync');\n\n try {\n // Get current branch\n const currentBranch = isDryRun ? 'mock-branch' : await getCurrentBranch();\n logger.info(`DEV_CURRENT_BRANCH: Current branch identified | Branch: ${currentBranch} | Action: Determine working branch`);\n\n // Find the working/development branch from configuration\n let workingBranch = 'working'; // Default fallback\n\n if (runConfig.branches) {\n const configuredDevBranch = findDevelopmentBranch(runConfig.branches);\n if (configuredDevBranch) {\n workingBranch = configuredDevBranch;\n logger.info(`DEV_WORKING_BRANCH_CONFIGURED: Using configured working branch | Branch: ${workingBranch} | Source: config | Current: ${currentBranch}`);\n } else {\n logger.info(`DEV_WORKING_BRANCH_DEFAULT: No working branch configured | Branch: ${workingBranch} | Source: default | Current: ${currentBranch}`);\n }\n } else {\n logger.info(`DEV_WORKING_BRANCH_NO_CONFIG: No branch configuration found | Branch: ${workingBranch} | Source: default | Current: ${currentBranch}`);\n }\n\n // Track what actions are taken to determine the appropriate return message\n let branchCreated = false;\n let branchUpdated = false;\n let alreadyOnBranch = false;\n let mergedDevelopmentIntoWorking = false;\n\n // Determine prerelease tag and increment level from configuration\n const allBranchConfig = runConfig.branches || KODRDRIV_DEFAULTS.branches;\n let prereleaseTag = 'dev'; // Default\n let incrementLevel = 'patch'; // Default\n\n // Check for development command specific targetVersion override\n if (runConfig.development?.targetVersion) {\n const targetVersion = runConfig.development.targetVersion;\n\n // Validate targetVersion\n if (!['patch', 'minor', 'major'].includes(targetVersion) && !/^\\d+\\.\\d+\\.\\d+$/.test(targetVersion.replace(/^v/, ''))) {\n throw new Error(`Invalid target version: ${targetVersion}. Expected \"patch\", \"minor\", \"major\", or a valid version string like \"2.1.0\"`);\n }\n\n incrementLevel = targetVersion;\n } else if (allBranchConfig && (allBranchConfig as any)[workingBranch]) {\n const workingBranchConfig = (allBranchConfig as any)[workingBranch];\n if (workingBranchConfig.version) {\n if (workingBranchConfig.version.tag) {\n prereleaseTag = workingBranchConfig.version.tag;\n }\n if (workingBranchConfig.version.incrementLevel) {\n incrementLevel = workingBranchConfig.version.incrementLevel;\n }\n }\n }\n\n logger.info(`DEV_VERSION_CONFIG: Development version configuration | Prerelease Tag: ${prereleaseTag} | Increment Level: ${incrementLevel}`);\n logger.info(`DEV_VERSION_STRATEGY: Version increment strategy | Level: ${incrementLevel} | Tag: ${prereleaseTag} | Purpose: Development version management`);\n\n // Step 1: Fetch latest remote information\n if (!isDryRun) {\n logger.info('DEV_GIT_FETCH: Fetching latest remote information | Remote: origin | Purpose: Ensure sync before branch operations');\n try {\n await run('git fetch origin');\n logger.info('DEV_GIT_FETCH_SUCCESS: Successfully fetched remote information | Remote: origin | Status: up-to-date');\n } catch (error: any) {\n logger.warn(`DEV_GIT_FETCH_FAILED: Unable to fetch remote | Remote: origin | Error: ${error.message} | Impact: May have stale branch info`);\n }\n } else {\n logger.info('DEV_GIT_FETCH_DRY_RUN: Would fetch latest remote information | Mode: dry-run | Remote: origin');\n }\n\n // Special case: If currently on development branch, merge development into working\n if (currentBranch === 'development') {\n if (!isDryRun) {\n logger.info('DEV_MERGE_STARTING: Currently on development branch, merging into working | Source: development | Target: working | Purpose: Sync branches before development');\n await run(`git checkout ${workingBranch}`);\n await run(`git merge development --no-ff -m \"Merge development into working for continued development\"`);\n await run('npm install');\n\n // Check if npm install created any changes and commit them\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n await run('git add -A');\n await run('git commit -m \"chore: update dependencies after merge\"');\n }\n\n // Stay on working branch for development (removed checkout development)\n mergedDevelopmentIntoWorking = true;\n } else {\n logger.info('DEV_MERGE_DRY_RUN: Would merge development into working | Mode: dry-run | Source: development | Target: working');\n mergedDevelopmentIntoWorking = true;\n }\n }\n\n // Step 2: Switch to working branch (create if needed) - skip if we handled development branch case\n if (!isDryRun && !mergedDevelopmentIntoWorking) {\n const workingBranchExists = await localBranchExists(workingBranch);\n if (!workingBranchExists) {\n logger.info(`DEV_BRANCH_CREATING: Working branch does not exist, creating now | Branch: ${workingBranch} | Action: Create and checkout | Source: current HEAD`);\n await run(`git checkout -b ${workingBranch}`);\n logger.info(`DEV_BRANCH_CREATED: Successfully created and switched to branch | Branch: ${workingBranch} | Status: checked-out`);\n branchCreated = true;\n } else if (currentBranch !== workingBranch) {\n logger.info(`DEV_BRANCH_SWITCHING: Switching to working branch | Branch: ${workingBranch} | Action: checkout | Previous: ${currentBranch}`);\n await run(`git checkout ${workingBranch}`);\n logger.info(`DEV_BRANCH_SWITCHED: Successfully switched to branch | Branch: ${workingBranch} | Status: checked-out`);\n branchUpdated = true;\n } else {\n logger.info(`DEV_BRANCH_CURRENT: Already on working branch | Branch: ${workingBranch} | Status: no-switch-needed`);\n alreadyOnBranch = true;\n }\n } else if (!mergedDevelopmentIntoWorking) {\n // For dry run, we need to mock the logic\n const workingBranchExists = await localBranchExists(workingBranch);\n if (!workingBranchExists) {\n branchCreated = true;\n } else if (currentBranch !== workingBranch) {\n branchUpdated = true;\n } else {\n alreadyOnBranch = true;\n }\n logger.info(`DEV_BRANCH_DRY_RUN: Would switch to working branch | Mode: dry-run | Branch: ${workingBranch} | Action: Create if needed`);\n logger.info(`DEV_SYNC_DRY_RUN: Would sync branch with remote | Mode: dry-run | Branch: ${workingBranch} | Purpose: Avoid conflicts`);\n }\n\n // Step 2.1: Sync with remote working branch to avoid conflicts\n if (!isDryRun) {\n try {\n logger.info(`DEV_BRANCH_SYNCING: Synchronizing working branch with remote | Branch: ${workingBranch} | Remote: origin/${workingBranch} | Purpose: Avoid conflicts`);\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${workingBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n // Use explicit fetch+merge instead of pull to avoid git config conflicts\n await run(`git fetch origin ${workingBranch}`);\n await run(`git merge origin/${workingBranch} --no-edit`);\n logger.info(`DEV_BRANCH_SYNCED: Successfully synchronized with remote | Branch: ${workingBranch} | Remote: origin/${workingBranch} | Status: in-sync`);\n } else {\n logger.info(`DEV_REMOTE_BRANCH_NOT_FOUND: No remote branch exists | Branch: ${workingBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`DEV_MERGE_CONFLICTS: Merge conflicts detected when syncing with remote | Branch: ${workingBranch} | Remote: origin | Status: conflicts-detected`);\n logger.error(`DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Resume development | Command: kodrdriv development`);\n throw new Error(`Merge conflicts detected when syncing ${workingBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`DEV_SYNC_FAILED: Could not sync with remote | Branch: ${workingBranch} | Remote: origin | Error: ${error.message}`);\n }\n }\n }\n\n // Step 2.5: Sync with target branch (main) if it exists\n // This is a safety net for when publish fails or user ends up on target branch\n if (!isDryRun) {\n // Determine target branch from config\n const targetBranch = allBranchConfig && (allBranchConfig as any)[workingBranch]?.targetBranch || 'main';\n const targetBranchExists = await localBranchExists(targetBranch);\n\n if (targetBranchExists) {\n logger.info(`DEV_TARGET_SYNC: Syncing working branch with target branch | Working: ${workingBranch} | Target: ${targetBranch} | Strategy: fast-forward`);\n try {\n await run(`git merge ${targetBranch} --ff-only`);\n logger.info(`DEV_TARGET_MERGED_FF: Fast-forward merged target into working | Target: ${targetBranch} | Working: ${workingBranch} | Status: merged`);\n } catch (error: any) {\n // Fast-forward failed, might need regular merge\n if (error.message && error.message.includes('Not possible to fast-forward')) {\n logger.warn(`DEV_NO_FAST_FORWARD: Cannot fast-forward merge | Target: ${targetBranch} | Working: ${workingBranch} | Reason: Divergent history`);\n logger.info(`DEV_REGULAR_MERGE_ATTEMPTING: Attempting regular merge | Strategy: fast-forward preferred | Purpose: Sync branches`);\n try {\n await run(`git merge ${targetBranch} -m \"Merge ${targetBranch} into ${workingBranch} for sync\"`);\n logger.info(`DEV_TARGET_MERGED: Merged target into working | Target: ${targetBranch} | Working: ${workingBranch} | Status: merged`);\n\n // Run npm install after merge\n logger.info('DEV_POST_MERGE_INSTALL: Running npm install after merge | Command: npm install | Purpose: Update dependencies');\n await run('npm install');\n\n // Check if npm install created changes\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n logger.info('DEV_POST_MERGE_COMMIT: Committing changes from npm install | Purpose: Finalize merge');\n await run('git add -A');\n await run('git commit -m \"chore: update dependencies after merge\"');\n }\n } catch (mergeError: any) {\n if (mergeError.message && mergeError.message.includes('CONFLICT')) {\n logger.error(`DEV_MERGE_CONFLICTS: Merge conflicts detected | Target: ${targetBranch} | Working: ${workingBranch} | Status: conflicts-detected`);\n logger.error(`DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Update dependencies | Command: npm install`);\n logger.error(` Step 5: Resume development | Command: kodrdriv development`);\n throw new Error(`Merge conflicts detected when merging ${targetBranch} into ${workingBranch}. Please resolve conflicts manually.`);\n } else {\n throw mergeError;\n }\n }\n } else {\n logger.warn(`DEV_TARGET_MERGE_FAILED: Could not merge target into working | Target: ${targetBranch} | Working: ${workingBranch} | Error: ${error.message}`);\n }\n }\n } else {\n logger.info(`DEV_TARGET_NOT_EXISTS: Target branch does not exist | Branch: ${targetBranch} | Action: Skipping target sync | Status: no-target-branch`);\n }\n } else {\n logger.info('Would sync working branch with target branch (main) if it exists');\n }\n\n // Step 3: Merge latest changes from development branch if it exists\n if (!isDryRun) {\n const developmentBranchExists = await localBranchExists('development');\n if (mergedDevelopmentIntoWorking) {\n logger.info('DEV_ALREADY_MERGED: Already merged from development | Reason: Was on development branch | Action: Skipping');\n } else if (developmentBranchExists) {\n logger.info('DEV_DEVELOPMENT_MERGE: Merging latest changes from development branch | Source: development | Target: ' + workingBranch + ' | Purpose: Sync development changes');\n\n try {\n await run(`git merge development --no-ff -m \"Merge latest development changes into ${workingBranch}\"`);\n logger.info('DEV_DEVELOPMENT_MERGED: Successfully merged development changes | Source: development | Target: ' + workingBranch + ' | Status: merged');\n\n // Run npm install after merge to update dependencies\n logger.info('DEV_DEVELOPMENT_INSTALL: Running npm install after merge | Command: npm install | Purpose: Update dependencies');\n await run('npm install');\n\n // Check if npm install created any changes (e.g., package-lock.json)\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n logger.info('DEV_POST_MERGE_COMMIT: Committing changes from npm install | Purpose: Finalize merge');\n await run('git add -A');\n await run(`git commit -m \"chore: update package-lock.json after merge\"`);\n logger.info('DEV_CHANGES_COMMITTED: Changes committed successfully | Status: committed');\n }\n\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`DEV_DEV_MERGE_CONFLICTS: Merge conflicts detected | Source: development | Target: ${workingBranch} | Status: conflicts-detected`);\n logger.error(`DEV_DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Update dependencies | Command: npm install`);\n logger.error(` Step 5: Bump version | Command: npm version pre${incrementLevel} --preid=${prereleaseTag}`);\n throw new Error(`Merge conflicts detected when merging development into ${workingBranch}. Please resolve conflicts manually.`);\n } else {\n logger.error(`DEV_DEV_MERGE_FAILED: Failed to merge development branch | Source: development | Target: ${workingBranch} | Error: ${error.message}`);\n throw error;\n }\n }\n } else {\n logger.info('DEV_NO_DEV_BRANCH: Development branch does not exist | Branch: development | Action: Skipping merge step | Status: not-found');\n }\n } else {\n logger.info('DEV_DEV_MERGE_DRY_RUN: Would merge development if exists | Mode: dry-run | Source: development | Target: working');\n logger.info('DEV_INSTALL_DRY_RUN: Would run npm install after merge | Mode: dry-run | Command: npm install');\n logger.info('DEV_COMMIT_DRY_RUN: Would commit npm install changes | Mode: dry-run');\n }\n\n // Step 4.5: Create retroactive tags if requested (one-time operation)\n if (runConfig.development?.createRetroactiveTags) {\n const tagPrefix = runConfig.development?.workingTagPrefix || 'working/';\n await createRetroactiveTags(workingBranch, isDryRun, logger, tagPrefix);\n }\n\n // Step 5: Check if we already have a proper development version\n if (alreadyOnBranch && !mergedDevelopmentIntoWorking) {\n // Check if current version is already a development version with the right tag\n const fs = await import('fs/promises');\n try {\n const packageJson = JSON.parse(await fs.readFile('package.json', 'utf-8'));\n const currentVersion = packageJson.version;\n\n // If current version already has the dev tag, check if base version is published\n if (currentVersion.includes(`-${prereleaseTag}.`)) {\n // Check if base version is already published on npm\n const baseVersion = currentVersion.split('-')[0];\n const { getNpmPublishedVersion } = await import('@grunnverk/core');\n const publishedVersion = await getNpmPublishedVersion(packageJson.name);\n\n if (publishedVersion !== baseVersion) {\n logger.info(`DEV_ALREADY_DEV_VERSION: Already on working branch with development version | Branch: ${workingBranch} | Version: ${currentVersion} | Status: no-bump-needed`);\n return 'Already on working branch with development version';\n }\n\n logger.warn(`DEV_VERSION_CONFLICT: Base version already published | Current: ${currentVersion} | Published: ${publishedVersion} | Action: Will bump to next dev version`);\n // Continue with version bump logic\n }\n } catch {\n logger.debug('Could not check current version, proceeding with version bump');\n }\n }\n\n // Step 5.5: Tag working branch with current release version BEFORE bumping\n if (runConfig.development?.tagWorkingBranch !== false) {\n try {\n const fs = await import('fs/promises');\n const packageJson = JSON.parse(await fs.readFile('package.json', 'utf-8'));\n const currentVersion = packageJson.version;\n\n // Only tag if current version is a release version (not already a dev version)\n const isReleaseVersion = currentVersion &&\n !currentVersion.includes('-dev.') &&\n !currentVersion.includes('-alpha.') &&\n !currentVersion.includes('-beta.') &&\n !currentVersion.includes('-rc.');\n\n if (isReleaseVersion) {\n const tagPrefix = runConfig.development?.workingTagPrefix || 'working/';\n const workingTagName = `${tagPrefix}v${currentVersion}`;\n\n if (!isDryRun) {\n logger.info(`DEV_TAG_RELEASE_VERSION: Current version is release version | Version: ${currentVersion} | Type: release | Action: Will tag before bump`);\n logger.verbose(`Checking if tag ${workingTagName} exists...`);\n\n // Check if tag already exists\n const tagExistsResult = await run(`git tag -l \"${workingTagName}\"`);\n const tagExists = tagExistsResult.stdout.trim() !== '';\n\n if (tagExists) {\n logger.info(`DEV_TAG_EXISTS: Tag already exists | Tag: ${workingTagName} | Action: Skipping tag creation | Status: already-tagged`);\n } else {\n // Create tag on current commit (working branch at release version)\n logger.verbose(`Creating tag ${workingTagName} at current HEAD...`);\n await run(`git tag ${workingTagName}`);\n\n // Push tag to remote\n logger.verbose(`Pushing tag ${workingTagName} to origin...`);\n await run(`git push origin ${workingTagName}`);\n\n logger.info(`DEV_TAG_CREATED: Tagged working branch | Tag: ${workingTagName} | Version: ${currentVersion} | Status: tagged-and-pushed`);\n logger.info(`DEV_TAG_RELEASE_NOTES_HINT: Release notes can be generated | Version: v${currentVersion} | Command: kodrdriv release --from {previous-tag} --to ${workingTagName}`);\n }\n } else {\n logger.info(`DEV_TAG_DRY_RUN: Would tag working branch | Mode: dry-run | Tag: ${workingTagName} | Version: ${currentVersion}`);\n }\n } else if (currentVersion) {\n logger.verbose(`Current version is ${currentVersion} (prerelease), skipping tag creation`);\n } else {\n logger.debug('Could not determine current version, skipping tag creation');\n }\n } catch (error: any) {\n if (!isDryRun) {\n logger.warn(`DEV_TAG_FAILED: Could not tag working branch | Error: ${error.message} | Impact: Not critical | Alternative: Manual tagging`);\n logger.warn('DEV_TAG_MANUAL: Manual tagging option available | Action: Tag manually later | Purpose: Mark release point');\n } else {\n logger.info('Would tag working branch with current release version if applicable');\n }\n // Don't throw - tagging is optional, continue with version bump\n }\n } else if (isDryRun) {\n logger.info('Tagging disabled (--no-tag-working-branch)');\n }\n\n // Step 6: Bump version manually to avoid npm version's automatic git add\n // Note: npm version --no-git-tag-version still runs \"git add package.json package-lock.json\"\n // which fails when package-lock.json is gitignored\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n logger.info(`DEV_VERSION_BUMPING: Bumping version with prerelease tag | Level: ${incrementLevel} | Tag: ${prereleaseTag}`);\n } else {\n logger.info(`DEV_VERSION_EXPLICIT: Setting explicit version | Version: ${incrementLevel}-${prereleaseTag}.0 | Type: explicit`);\n }\n\n if (!isDryRun) {\n try {\n const storage = createStorage();\n\n // CRITICAL FIX: After publish, we need to use the target branch's version as the base\n // for incrementing, not the working branch's version (which might be an old dev version).\n // This ensures that after publishing v0.0.15, we bump to 0.0.16-dev.0, not 0.0.15-dev.0.\n const targetBranch = allBranchConfig && (allBranchConfig as any)[workingBranch]?.targetBranch || 'main';\n let currentVersion: string;\n\n try {\n // Try to read version from target branch (main) to get the released version\n const targetPackageResult = await run(`git show ${targetBranch}:package.json`);\n const targetPackageJson = safeJsonParse(targetPackageResult.stdout, 'package.json from target branch');\n const validatedTargetPkg = validatePackageJson(targetPackageJson, 'package.json from target branch');\n currentVersion = validatedTargetPkg.version;\n logger.info(`DEV_VERSION_SOURCE: Using version from target branch | Branch: ${targetBranch} | Version: ${currentVersion} | Purpose: Ensure proper increment after release`);\n } catch (error: any) {\n // Fallback: If target branch doesn't exist or can't be read, use current working branch version\n logger.warn(`DEV_VERSION_FALLBACK: Could not read version from target branch ${targetBranch} | Error: ${error.message} | Fallback: Using current branch version`);\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n currentVersion = validatedPkgJson.version;\n }\n\n let newVersion: string;\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n // First increment the base version, then add prerelease tag\n let baseVersion: string;\n switch (incrementLevel) {\n case 'patch':\n baseVersion = incrementPatchVersion(currentVersion);\n break;\n case 'minor':\n baseVersion = incrementMinorVersion(currentVersion);\n break;\n case 'major':\n baseVersion = incrementMajorVersion(currentVersion);\n break;\n default:\n baseVersion = incrementPatchVersion(currentVersion);\n }\n newVersion = `${baseVersion}-${prereleaseTag}.0`;\n } else {\n // Explicit version like \"3.5.0\"\n const cleanVersion = incrementLevel.replace(/^v/, '');\n newVersion = `${cleanVersion}-${prereleaseTag}.0`;\n }\n\n // Read current package.json from working branch to update\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n\n // Update package.json with new version\n validatedPkgJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(validatedPkgJson, null, 2) + '\\n', 'utf-8');\n\n logger.info(`DEV_VERSION_BUMPED: Version bumped successfully | New Version: ${newVersion} | Status: completed`);\n\n // Manually commit the version bump (package-lock.json is ignored)\n await run('git add package.json');\n await run(`git commit -m \"chore: bump to ${newVersion}\"`);\n\n // Return appropriate message based on what actions were taken\n if (mergedDevelopmentIntoWorking) {\n return 'Merged development into working and ready for development';\n } else if (branchCreated) {\n return 'Created working branch with development version';\n } else if (branchUpdated) {\n return 'Updated working branch with development version';\n } else if (alreadyOnBranch) {\n return 'Already on working branch with development version';\n } else {\n return `Ready for development on ${workingBranch} with version ${newVersion}`;\n }\n } catch (error: any) {\n logger.error(`DEV_VERSION_BUMP_FAILED: Failed to bump version | Error: ${error.message} | Impact: Version not updated`);\n throw new Error(`Failed to bump ${incrementLevel} version: ${error.message}`);\n }\n } else {\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n logger.info(`Would bump version with prerelease tag: ${incrementLevel} --preid=${prereleaseTag}`);\n } else {\n logger.info(`Would set explicit version: ${incrementLevel}-${prereleaseTag}.0`);\n }\n\n // Return appropriate message based on what actions were taken\n if (mergedDevelopmentIntoWorking) {\n return 'Merged development into working and ready for development';\n } else if (branchCreated) {\n return 'Created working branch with development version';\n } else if (branchUpdated) {\n return 'Updated working branch with development version';\n } else if (alreadyOnBranch) {\n return 'Already on working branch with development version';\n } else {\n return `Ready for development on ${workingBranch} (dry run)`;\n }\n }\n\n } catch (error: any) {\n logger.error('Failed to prepare working branch for development:', error.message);\n throw error;\n }\n};\n","#!/usr/bin/env node\n/**\n * Check Development Command - Verifies development readiness\n *\n * This command checks:\n * 1. Branch status (not on main/master)\n * 2. Remote sync status\n * 3. Dev version status\n * 4. Link status for local dependencies\n * 5. Open PRs from working branch\n */\n\nimport { Config, getLogger } from '@grunnverk/core';\nimport { scanForPackageJsonFiles } from '@grunnverk/tree-core';\nimport { getGitStatusSummary, getLinkedDependencies, run } from '@grunnverk/git-tools';\nimport { getOctokit } from '@grunnverk/github-tools';\nimport { isDevelopmentVersion } from '@grunnverk/core';\nimport { readFile, access } from 'fs/promises';\nimport * as path from 'path';\n\n/**\n * Default patterns for subprojects to exclude from scanning\n */\nconst DEFAULT_EXCLUDE_SUBPROJECTS = [\n 'doc/',\n 'docs/',\n 'examples/',\n 'test-*/',\n];\n\n/**\n * Checks if .gitignore contains required patterns to prevent publishing\n * development artifacts and sensitive files.\n */\nasync function checkGitignorePatterns(directory: string, checks: any): Promise<void> {\n const logger = getLogger();\n const gitignorePath = path.join(directory, '.gitignore');\n\n // Required patterns that must be present in .gitignore\n const requiredPatterns = [\n 'node_modules',\n 'dist',\n 'package-lock.json',\n '.env',\n 'output/',\n 'coverage',\n '.kodrdriv*'\n ];\n\n // Check if .gitignore exists\n try {\n await access(gitignorePath);\n } catch {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push('.gitignore file not found');\n checks.gitignore.issues.push(`Create .gitignore with patterns: ${requiredPatterns.join(', ')}`);\n return;\n }\n\n // Read .gitignore content\n let gitignoreContent: string;\n try {\n gitignoreContent = await readFile(gitignorePath, 'utf-8');\n } catch (error: any) {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push(`Failed to read .gitignore: ${error.message}`);\n return;\n }\n\n // Parse .gitignore into lines, ignoring comments and empty lines\n const gitignoreLines = gitignoreContent\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('#'));\n\n // Check for missing patterns\n const missingPatterns: string[] = [];\n for (const pattern of requiredPatterns) {\n // Check if the pattern exists in any of the gitignore lines\n const found = gitignoreLines.some(line => {\n // Exact match\n if (line === pattern) return true;\n\n // Pattern with wildcard - check if the pattern or any matching line exists\n if (pattern.includes('*')) {\n const basePattern = pattern.replace('*', '');\n // Accept exact wildcard pattern, base pattern, or any line starting with base\n return line === pattern || line === basePattern || line.startsWith(basePattern);\n }\n\n // Pattern with trailing slash - check both with and without slash\n if (pattern.endsWith('/')) {\n const basePattern = pattern.slice(0, -1);\n return line === basePattern || line === pattern || line.startsWith(pattern);\n }\n\n // Line with trailing slash - check if it matches the pattern (e.g., \"node_modules/\" matches \"node_modules\")\n if (line.endsWith('/')) {\n const lineBase = line.slice(0, -1);\n return lineBase === pattern || line.startsWith(pattern + '/');\n }\n\n return false;\n });\n\n if (!found) {\n missingPatterns.push(pattern);\n }\n }\n\n // Report missing patterns (relaxed check - allow variations)\n const criticalMissing = missingPatterns.filter(p => !p.includes('coverage') && p !== 'package-lock.json');\n if (criticalMissing.length > 0) {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push(`Missing required patterns: ${criticalMissing.join(', ')}`);\n checks.gitignore.issues.push('These patterns prevent committing build artifacts and sensitive files');\n }\n\n logger.debug(`Gitignore check: ${checks.gitignore.passed ? 'passed' : 'failed'}`);\n}\n\n/**\n * Execute check-development command\n */\nexport async function execute(config: Config): Promise<string> {\n const logger = getLogger();\n // Get directory from config - check multiple possible locations\n const directory = (config as any).directory ||\n config.tree?.directories?.[0] ||\n process.cwd();\n\n // Get validateRelease flag - controls merge conflicts and open PRs checks\n const validateRelease = (config as any).validateReleaseWorkflow ?? false;\n\n logger.info(`Checking development readiness in ${directory}${validateRelease ? ' (full release validation)' : ' (quick check)'}`);\n\n // Build exclusion patterns\n const excludedPatterns = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.git/**',\n ...DEFAULT_EXCLUDE_SUBPROJECTS.map((pattern: string) => {\n const normalized = pattern.endsWith('/') ? pattern.slice(0, -1) : pattern;\n return `**/${normalized}/**`;\n }),\n ];\n\n // Determine if this is a tree or single package\n const packageJsonFiles = await scanForPackageJsonFiles(directory, excludedPatterns);\n const isTree = packageJsonFiles.length > 1;\n\n logger.info(`Detected ${isTree ? 'tree' : 'single package'} with ${packageJsonFiles.length} package(s)`);\n\n const checks = {\n gitignore: { passed: true, issues: [] as string[] },\n branch: { passed: true, issues: [] as string[] },\n remoteSync: { passed: true, issues: [] as string[] },\n mergeConflicts: { passed: true, issues: [] as string[], warnings: [] as string[] },\n devVersion: { passed: true, issues: [] as string[] },\n linkStatus: { passed: true, issues: [] as string[], warnings: [] as string[] },\n openPRs: { passed: true, issues: [] as string[], warnings: [] as string[] },\n releaseWorkflow: { passed: true, issues: [] as string[], warnings: [] as string[] },\n };\n\n const packagesToCheck = isTree ? packageJsonFiles : [path.join(directory, 'package.json')];\n\n // Check .gitignore patterns (required for publish to succeed)\n await checkGitignorePatterns(directory, checks);\n\n // Build a set of all local package names for link status checking\n const localPackageNames = new Set<string>();\n for (const pkgJsonPath of packagesToCheck) {\n try {\n const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(pkgJsonContent);\n if (pkgJson.name) {\n localPackageNames.add(pkgJson.name);\n }\n } catch {\n // Skip packages we can't read\n }\n }\n\n for (const pkgJsonPath of packagesToCheck) {\n const pkgDir = path.dirname(pkgJsonPath);\n const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(pkgJsonContent);\n const pkgName = pkgJson.name || path.basename(pkgDir);\n\n // 1. Check branch status\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n if (gitStatus.branch === 'main' || gitStatus.branch === 'master') {\n checks.branch.passed = false;\n checks.branch.issues.push(`${pkgName} is on ${gitStatus.branch} branch`);\n }\n } catch (error: any) {\n checks.branch.issues.push(`${pkgName}: Could not check branch - ${error.message || error}`);\n }\n\n // 2. Check remote sync status\n try {\n await run('git fetch', { cwd: pkgDir });\n const { stdout: statusOutput } = await run('git status -sb', { cwd: pkgDir });\n\n if (statusOutput.includes('behind')) {\n checks.remoteSync.passed = false;\n const match = statusOutput.match(/behind (\\d+)/);\n const count = match ? match[1] : 'some';\n checks.remoteSync.issues.push(`${pkgName} is ${count} commits behind remote`);\n }\n } catch (error: any) {\n checks.remoteSync.issues.push(`${pkgName}: Could not check remote sync - ${error.message || error}`);\n }\n\n // 3. Check for merge conflicts with target branch (main) - ALWAYS CHECK THIS\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n const currentBranch = gitStatus.branch;\n const targetBranch = 'main'; // The branch we'll merge into during publish\n\n // Skip if we're already on main\n if (currentBranch !== 'main' && currentBranch !== 'master') {\n // Fetch latest to ensure we have up-to-date refs\n await run('git fetch origin', { cwd: pkgDir });\n\n // Try a test merge to detect conflicts\n // Use --no-commit --no-ff to simulate the merge without actually doing it\n try {\n // Check if there would be conflicts using git merge --no-commit --no-ff\n // This is safer as it doesn't modify the working tree\n await run(\n `git merge --no-commit --no-ff origin/${targetBranch}`,\n { cwd: pkgDir }\n );\n\n // If we get here, check if there are conflicts\n const { stdout: statusAfterMerge } = await run('git status --porcelain', { cwd: pkgDir });\n\n if (statusAfterMerge.includes('UU ') || statusAfterMerge.includes('AA ') ||\n statusAfterMerge.includes('DD ') || statusAfterMerge.includes('AU ') ||\n statusAfterMerge.includes('UA ') || statusAfterMerge.includes('DU ') ||\n statusAfterMerge.includes('UD ')) {\n checks.mergeConflicts.passed = false;\n checks.mergeConflicts.issues.push(\n `${pkgName}: Merge conflicts detected with ${targetBranch} branch`\n );\n }\n\n // Abort the test merge (only if there's actually a merge in progress)\n try {\n await run('git merge --abort', { cwd: pkgDir, suppressErrorLogging: true });\n } catch {\n // Ignore - there might not be a merge to abort if it was a fast-forward\n }\n } catch (mergeError: any) {\n // Abort any partial merge\n try {\n await run('git merge --abort', { cwd: pkgDir, suppressErrorLogging: true });\n } catch {\n // Ignore abort errors\n }\n\n // If merge failed, there are likely conflicts\n if (mergeError.message?.includes('CONFLICT') || mergeError.stderr?.includes('CONFLICT') || mergeError.stdout?.includes('CONFLICT')) {\n checks.mergeConflicts.passed = false;\n checks.mergeConflicts.issues.push(\n `${pkgName}: Merge conflicts detected with ${targetBranch} branch`\n );\n } else {\n // Some other error - log as warning\n checks.mergeConflicts.warnings.push(\n `${pkgName}: Could not check for merge conflicts - ${mergeError.message || mergeError}`\n );\n }\n }\n }\n } catch (error: any) {\n checks.mergeConflicts.warnings.push(\n `${pkgName}: Could not check for merge conflicts - ${error.message || error}`\n );\n }\n\n // 4. Check dev version status\n const version = pkgJson.version;\n if (!version) {\n checks.devVersion.issues.push(`${pkgName}: No version field in package.json`);\n } else if (!isDevelopmentVersion(version)) {\n checks.devVersion.passed = false;\n checks.devVersion.issues.push(`${pkgName} has non-dev version: ${version}`);\n } else {\n // Check if base version exists on npm\n const baseVersion = version.split('-')[0];\n try {\n const { stdout } = await run(`npm view ${pkgName}@${baseVersion} version`, { cwd: pkgDir, suppressErrorLogging: true });\n if (stdout.trim() === baseVersion) {\n checks.devVersion.passed = false;\n checks.devVersion.issues.push(\n `${pkgName}: Base version ${baseVersion} already published (current: ${version})`\n );\n }\n } catch {\n // Version doesn't exist on npm, which is good\n }\n }\n\n // 5. Check link status (warning only - links are recommended but not required)\n if (pkgJson.dependencies || pkgJson.devDependencies) {\n try {\n const linkedDeps = await getLinkedDependencies(pkgDir);\n const allDeps = {\n ...pkgJson.dependencies,\n ...pkgJson.devDependencies,\n };\n\n const localDeps = Object.keys(allDeps).filter(dep => localPackageNames.has(dep));\n const unlinkedLocal = localDeps.filter(dep => !linkedDeps.has(dep));\n\n if (unlinkedLocal.length > 0) {\n // Don't fail the check, just warn - links are recommended but not required\n checks.linkStatus.warnings.push(\n `${pkgName}: Local dependencies not linked (recommended): ${unlinkedLocal.join(', ')}`\n );\n }\n } catch (error: any) {\n checks.linkStatus.warnings.push(`${pkgName}: Could not check link status - ${error.message || error}`);\n }\n }\n\n // 6. Check for open PRs from working branch - only if validateRelease is true\n if (validateRelease && pkgJson.repository?.url) {\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n const currentBranch = gitStatus.branch;\n\n // Extract owner/repo from repository URL\n const repoUrl = pkgJson.repository.url;\n const match = repoUrl.match(/github\\.com[:/]([^/]+)\\/([^/.]+)/);\n\n if (match) {\n const [, owner, repo] = match;\n\n try {\n const octokit = getOctokit();\n const { data: openPRs } = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${currentBranch}`,\n });\n\n if (openPRs.length > 0) {\n checks.openPRs.passed = false;\n for (const pr of openPRs) {\n const prInfo = `PR #${pr.number}: ${pr.title} (${pr.html_url})`;\n checks.openPRs.issues.push(`${pkgName}: ${prInfo}`);\n }\n }\n } catch (prError: any) {\n // Only log if it's not a 404 (repo might not exist on GitHub)\n if (!prError.message?.includes('404') && (!prError.status || prError.status !== 404)) {\n checks.openPRs.warnings.push(\n `${pkgName}: Could not check PRs - ${prError.message || prError}`\n );\n }\n }\n }\n } catch (error: any) {\n // Don't fail the check if we can't check PRs\n checks.openPRs.warnings.push(\n `${pkgName}: Could not check for open PRs - ${error.message || error}`\n );\n }\n }\n\n // 7. Check release workflow readiness (validate build, test, publish dry-run)\n // This check validates that the package can be successfully published\n // Only run if explicitly requested via config flag\n if ((config as any).validateReleaseWorkflow) {\n try {\n logger.info(`${pkgName}: Validating release workflow readiness...`);\n\n // Check 1: Build succeeds\n try {\n await run('npm run build', { cwd: pkgDir });\n logger.debug(`${pkgName}: Build check passed`);\n } catch (buildError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Build fails - ${buildError.message || buildError}`\n );\n }\n\n // Check 2: Tests pass\n try {\n await run('npm test', { cwd: pkgDir });\n logger.debug(`${pkgName}: Test check passed`);\n } catch (testError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Tests fail - ${testError.message || testError}`\n );\n }\n\n // Check 3: Publish dry-run succeeds\n try {\n await run('npm publish --dry-run', { cwd: pkgDir });\n logger.debug(`${pkgName}: Publish dry-run check passed`);\n } catch (publishError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Publish dry-run fails - ${publishError.message || publishError}`\n );\n }\n\n // Check 4: NPM_TOKEN environment variable\n if (!process.env.NPM_TOKEN) {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: NPM_TOKEN environment variable not set (required for publishing)`\n );\n }\n\n // Check 5: GitHub workflow file exists\n const workflowPath = path.join(pkgDir, '.github', 'workflows', 'npm-publish.yml');\n try {\n await readFile(workflowPath, 'utf-8');\n logger.debug(`${pkgName}: GitHub workflow file exists`);\n } catch {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: GitHub workflow file not found at .github/workflows/npm-publish.yml`\n );\n }\n\n } catch (error: any) {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: Could not validate release workflow - ${error.message || error}`\n );\n }\n }\n }\n\n // Build summary - linkStatus and releaseWorkflow are not included in allPassed (recommendations)\n // mergeConflicts is ALWAYS checked (critical for preventing post-merge failures)\n // openPRs is only checked when validateRelease is true\n const allPassed = checks.gitignore.passed &&\n checks.branch.passed &&\n checks.remoteSync.passed &&\n checks.mergeConflicts.passed &&\n checks.devVersion.passed &&\n (validateRelease ? checks.openPRs.passed : true);\n\n const hasWarnings = checks.linkStatus.warnings.length > 0 ||\n checks.mergeConflicts.warnings.length > 0 ||\n checks.openPRs.warnings.length > 0 ||\n checks.releaseWorkflow.warnings.length > 0;\n\n // Log results\n let summary = `\\n${'='.repeat(60)}\\n`;\n summary += `Development Readiness Check${validateRelease ? ' (Full Release Validation)' : ' (Quick Check)'}\\n`;\n summary += `${'='.repeat(60)}\\n\\n`;\n summary += `Type: ${isTree ? 'Tree (monorepo)' : 'Single package'}\\n`;\n summary += `Packages checked: ${packagesToCheck.length}\\n\\n`;\n\n if (allPassed) {\n summary += `✅ Status: READY FOR DEVELOPMENT\\n\\n`;\n summary += `All required checks passed:\\n`;\n summary += ` ✓ Gitignore patterns\\n`;\n summary += ` ✓ Branch status\\n`;\n summary += ` ✓ Remote sync\\n`;\n summary += ` ✓ No merge conflicts with main\\n`;\n summary += ` ✓ Dev versions\\n`;\n if (validateRelease) {\n summary += ` ✓ No open PRs\\n`;\n }\n if (!hasWarnings) {\n summary += ` ✓ All local dependencies linked\\n`;\n }\n } else {\n summary += `⚠️ Status: NOT READY\\n\\n`;\n\n if (!checks.gitignore.passed) {\n summary += `❌ Gitignore Issues:\\n`;\n checks.gitignore.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.branch.passed) {\n summary += `❌ Branch Issues:\\n`;\n checks.branch.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.remoteSync.passed) {\n summary += `❌ Remote Sync Issues:\\n`;\n checks.remoteSync.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.mergeConflicts.passed) {\n summary += `❌ Merge Conflict Issues:\\n`;\n checks.mergeConflicts.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n summary += ` To resolve merge conflicts:\\n`;\n summary += ` 1. Fetch latest: git fetch origin main\\n`;\n summary += ` 2. Merge main into your branch: git merge origin/main\\n`;\n summary += ` 3. Resolve conflicts in your editor\\n`;\n summary += ` 4. Commit the merge: git add . && git commit\\n`;\n summary += ` 5. Run check-development again to verify\\n`;\n summary += `\\n`;\n }\n\n if (!checks.devVersion.passed) {\n summary += `❌ Dev Version Issues:\\n`;\n checks.devVersion.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (validateRelease && !checks.openPRs.passed) {\n summary += `❌ Open PR Issues:\\n`;\n checks.openPRs.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.releaseWorkflow.passed) {\n summary += `❌ Release Workflow Issues:\\n`;\n checks.releaseWorkflow.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n }\n\n // Log warnings separately (non-blocking)\n if (hasWarnings) {\n summary += `⚠️ Recommendations:\\n`;\n checks.linkStatus.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n checks.mergeConflicts.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n if (validateRelease) {\n checks.openPRs.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n }\n checks.releaseWorkflow.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n summary += `\\n`;\n }\n\n summary += `${'='.repeat(60)}\\n`;\n\n return summary;\n}\n","#!/usr/bin/env node\nimport { Formatter, Model } from '@kjerneverk/riotprompt';\nimport 'dotenv/config';\nimport type { ChatCompletionMessageParam } from 'openai/resources';\nimport { getDefaultFromRef, getCurrentBranch, safeJsonParse } from '@grunnverk/git-tools';\nimport {\n Config,\n Log,\n Diff,\n DEFAULT_EXCLUDED_PATTERNS,\n DEFAULT_TO_COMMIT_ALIAS,\n DEFAULT_OUTPUT_DIRECTORY,\n DEFAULT_MAX_DIFF_BYTES,\n improveContentWithLLM,\n toAIConfig,\n createStorageAdapter,\n createLoggerAdapter,\n getDryRunLogger,\n getOutputPath,\n getTimestampedRequestFilename,\n getTimestampedResponseFilename,\n getTimestampedReleaseNotesFilename,\n validateReleaseSummary,\n ReleaseSummary,\n filterContent,\n type LLMImprovementConfig,\n} from '@grunnverk/core';\nimport {\n createCompletionWithRetry,\n getUserChoice,\n editContentInEditor,\n getLLMFeedbackInEditor,\n requireTTY,\n STANDARD_CHOICES,\n ReleaseContext,\n runAgenticRelease,\n generateReflectionReport,\n createReleasePrompt,\n} from '@grunnverk/ai-service';\nimport { createStorage } from '@grunnverk/shared';\nimport * as GitHub from '@grunnverk/github-tools';\n\n// Helper function to read context files\nasync function readContextFiles(contextFiles: string[] | undefined, logger: any): Promise<string> {\n if (!contextFiles || contextFiles.length === 0) {\n return '';\n }\n\n const storage = createStorage();\n const contextParts: string[] = [];\n\n for (const filePath of contextFiles) {\n try {\n const content = await storage.readFile(filePath, 'utf8');\n contextParts.push(`## Context from ${filePath}\\n\\n${content}\\n`);\n logger.debug(`Read context from file: ${filePath}`);\n } catch (error: any) {\n logger.warn(`Failed to read context file ${filePath}: ${error.message}`);\n }\n }\n\n return contextParts.join('\\n---\\n\\n');\n}\n\n// Helper function to edit release notes using editor\nasync function editReleaseNotesInteractively(releaseSummary: ReleaseSummary): Promise<ReleaseSummary> {\n const templateLines = [\n '# Edit your release notes below. Lines starting with \"#\" will be ignored.',\n '# The first line is the title, everything else is the body.',\n '# Save and close the editor when you are done.'\n ];\n\n const content = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n const result = await editContentInEditor(content, templateLines, '.md');\n\n const lines = result.content.split('\\n');\n const title = lines[0].trim();\n const body = lines.slice(1).join('\\n').trim();\n\n return { title, body };\n}\n\n// Helper function to improve release notes using LLM\nasync function improveReleaseNotesWithLLM(\n releaseSummary: ReleaseSummary,\n runConfig: Config,\n promptConfig: any,\n promptContext: any,\n outputDirectory: string,\n logContent: string,\n diffContent: string\n): Promise<ReleaseSummary> {\n // Get user feedback on what to improve using the editor\n const releaseNotesContent = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n const userFeedback = await getLLMFeedbackInEditor('release notes', releaseNotesContent);\n\n const improvementConfig: LLMImprovementConfig = {\n contentType: 'release notes',\n createImprovedPrompt: async (promptConfig, currentSummary, promptContext) => {\n const improvementPromptContent = {\n logContent: logContent,\n diffContent: diffContent,\n releaseFocus: `Please improve these release notes based on the user's feedback: \"${userFeedback}\".\n\nCurrent release notes:\nTitle: \"${currentSummary.title}\"\nBody: \"${currentSummary.body}\"\n\nPlease revise the release notes according to the user's feedback while maintaining accuracy and following good release note practices.`,\n };\n const promptResult = await createReleasePrompt(promptConfig, improvementPromptContent, promptContext);\n // Format the prompt into a proper request with messages\n const aiConfig = toAIConfig(runConfig);\n const modelToUse = aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o-mini';\n return Formatter.create({ logger: getDryRunLogger(false) }).formatPrompt(modelToUse as Model, promptResult.prompt);\n },\n callLLM: async (request, runConfig, outputDirectory) => {\n const aiConfig = toAIConfig(runConfig);\n const aiStorageAdapter = createStorageAdapter(outputDirectory);\n const aiLogger = createLoggerAdapter(false);\n const modelToUse = aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o-mini';\n const openaiReasoning = aiConfig.commands?.release?.reasoning || aiConfig.reasoning;\n return await createCompletionWithRetry(\n request.messages as ChatCompletionMessageParam[],\n {\n model: modelToUse,\n openaiReasoning,\n responseFormat: { type: 'json_object' },\n debug: runConfig.debug,\n debugRequestFile: getOutputPath(outputDirectory, getTimestampedRequestFilename('release-improve')),\n debugResponseFile: getOutputPath(outputDirectory, getTimestampedResponseFilename('release-improve')),\n storage: aiStorageAdapter,\n logger: aiLogger,\n }\n );\n },\n processResponse: (response: any) => {\n return validateReleaseSummary(response);\n }\n };\n\n return await improveContentWithLLM(\n releaseSummary,\n runConfig,\n promptConfig,\n promptContext,\n outputDirectory,\n improvementConfig\n );\n}\n\n// Helper function to generate self-reflection output for release notes using observability module\nasync function generateSelfReflection(\n agenticResult: any,\n outputDirectory: string,\n storage: any,\n logger: any\n): Promise<void> {\n try {\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];\n const reflectionPath = getOutputPath(outputDirectory, `agentic-reflection-release-${timestamp}.md`);\n\n // Use new observability reflection generator\n const report = await generateReflectionReport({\n iterations: agenticResult.iterations || 0,\n toolCallsExecuted: agenticResult.toolCallsExecuted || 0,\n maxIterations: agenticResult.maxIterations || 30,\n toolMetrics: agenticResult.toolMetrics || [],\n conversationHistory: agenticResult.conversationHistory || [],\n releaseNotes: agenticResult.releaseNotes,\n logger\n });\n\n // Save the report to output directory\n await storage.writeFile(reflectionPath, report, 'utf8');\n\n logger.info('');\n logger.info('═'.repeat(80));\n logger.info('📊 SELF-REFLECTION REPORT GENERATED');\n logger.info('═'.repeat(80));\n logger.info('');\n logger.info('📁 Location: %s', reflectionPath);\n logger.info('');\n logger.info('📈 Report Summary:');\n const iterations = agenticResult.iterations || 0;\n const toolCalls = agenticResult.toolCallsExecuted || 0;\n const uniqueTools = new Set((agenticResult.toolMetrics || []).map((m: any) => m.name)).size;\n logger.info(` • ${iterations} iterations completed`);\n logger.info(` • ${toolCalls} tool calls executed`);\n logger.info(` • ${uniqueTools} unique tools used`);\n logger.info('');\n logger.info('💡 Use this report to:');\n logger.info(' • Understand which tools were most effective');\n logger.info(' • Identify performance bottlenecks');\n logger.info(' • Optimize tool selection and usage patterns');\n logger.info(' • Improve agentic release notes generation');\n logger.info('');\n logger.info('═'.repeat(80));\n } catch (error: any) {\n logger.warn('Failed to generate self-reflection report: %s', error.message);\n }\n}\n\n// Interactive feedback loop for release notes\nasync function handleInteractiveReleaseFeedback(\n releaseSummary: ReleaseSummary,\n runConfig: Config,\n promptConfig: any,\n promptContext: any,\n outputDirectory: string,\n storage: any,\n logContent: string,\n diffContent: string\n): Promise<{ action: 'confirm' | 'skip', finalSummary: ReleaseSummary }> {\n const logger = getDryRunLogger(false);\n let currentSummary = releaseSummary;\n\n while (true) {\n // Display the current release notes\n logger.info('\\nRELEASE_NOTES_GENERATED: Generated release notes from AI | Title Length: ' + currentSummary.title.length + ' | Body Length: ' + currentSummary.body.length);\n logger.info('─'.repeat(50));\n logger.info('RELEASE_NOTES_TITLE: %s', currentSummary.title);\n logger.info('');\n logger.info('RELEASE_NOTES_BODY: Release notes content:');\n logger.info(currentSummary.body);\n logger.info('─'.repeat(50));\n\n // Get user choice\n const userChoice = await getUserChoice(\n '\\nWhat would you like to do with these release notes?',\n [\n STANDARD_CHOICES.CONFIRM,\n STANDARD_CHOICES.EDIT,\n STANDARD_CHOICES.SKIP,\n STANDARD_CHOICES.IMPROVE\n ],\n {\n nonTtyErrorSuggestions: ['Use --dry-run to see the generated content without interaction']\n }\n );\n\n switch (userChoice) {\n case 'c':\n return { action: 'confirm', finalSummary: currentSummary };\n\n case 'e':\n try {\n currentSummary = await editReleaseNotesInteractively(currentSummary);\n } catch (error: any) {\n logger.error(`RELEASE_NOTES_EDIT_FAILED: Unable to edit release notes | Error: ${error.message} | Impact: Using original notes`);\n // Continue the loop to show options again\n }\n break;\n\n case 's':\n return { action: 'skip', finalSummary: currentSummary };\n\n case 'i':\n try {\n currentSummary = await improveReleaseNotesWithLLM(\n currentSummary,\n runConfig,\n promptConfig,\n promptContext,\n outputDirectory,\n logContent,\n diffContent\n );\n } catch (error: any) {\n logger.error(`RELEASE_NOTES_IMPROVE_FAILED: Unable to improve release notes | Error: ${error.message} | Impact: Using current version`);\n // Continue the loop to show options again\n }\n break;\n\n default:\n // This shouldn't happen, but continue the loop\n break;\n }\n }\n}\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n // Get current branch to help determine best tag comparison\n const currentBranch = runConfig.release?.currentBranch || await getCurrentBranch();\n\n // Resolve the from reference with fallback logic if not explicitly provided\n const fromRef = runConfig.release?.from ?? await getDefaultFromRef(\n runConfig.release?.fromMain || false,\n currentBranch\n );\n const toRef = runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS;\n\n logger.debug(`Using git references: from=${fromRef}, to=${toRef}`);\n\n const log = await Log.create({\n from: fromRef,\n to: toRef,\n limit: runConfig.release?.messageLimit\n });\n let logContent = '';\n\n const maxDiffBytes = runConfig.release?.maxDiffBytes ?? DEFAULT_MAX_DIFF_BYTES;\n const diff = await Diff.create({\n from: fromRef,\n to: toRef,\n excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS,\n maxDiffBytes\n });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const promptConfig = {\n overridePaths: runConfig.discoveredConfigDirs || [],\n overrides: runConfig.overrides || false,\n };\n // Helper function to determine versions for milestone lookup\n const determineVersionsForMilestones = async (): Promise<string[]> => {\n const versions: string[] = [];\n\n // Get current package.json version to determine likely release version\n try {\n const storage = createStorage();\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const packageJson = safeJsonParse(packageJsonContents, 'package.json');\n const currentVersion = packageJson.version;\n\n if (currentVersion) {\n // If it's a dev version (e.g., \"0.1.1-dev.0\"), extract base version\n if (currentVersion.includes('-dev.')) {\n const baseVersion = currentVersion.split('-')[0];\n versions.push(baseVersion);\n logger.debug(`Detected dev version ${currentVersion}, will check milestone for ${baseVersion}`);\n } else {\n // Use current version as-is\n versions.push(currentVersion);\n logger.debug(`Using current version ${currentVersion} for milestone lookup`);\n }\n }\n } catch (error: any) {\n logger.debug(`Failed to read package.json version: ${error.message}`);\n }\n\n // Handle edge case: if publish targetVersion is different from current version\n if (runConfig.publish?.targetVersion &&\n runConfig.publish.targetVersion !== 'patch' &&\n runConfig.publish.targetVersion !== 'minor' &&\n runConfig.publish.targetVersion !== 'major') {\n\n const targetVersion = runConfig.publish.targetVersion;\n if (!versions.includes(targetVersion)) {\n versions.push(targetVersion);\n logger.debug(`Added target version ${targetVersion} for milestone lookup`);\n }\n }\n\n return versions;\n };\n\n // Get milestone issues if enabled\n let milestoneIssuesContent = '';\n const milestonesEnabled = !runConfig.release?.noMilestones;\n\n if (milestonesEnabled) {\n logger.info('RELEASE_MILESTONE_CHECK: Checking for milestone issues | Purpose: Include in release notes | Source: GitHub milestones');\n const versions = await determineVersionsForMilestones();\n\n if (versions.length > 0) {\n milestoneIssuesContent = await GitHub.getMilestoneIssuesForRelease(versions, 50000);\n if (milestoneIssuesContent) {\n logger.info('RELEASE_MILESTONE_INCLUDED: Incorporated milestone issues into context | Count: ' + (milestoneIssuesContent?.length || 0) + ' | Purpose: Enrich release notes');\n } else {\n logger.debug('No milestone issues found to incorporate');\n }\n } else {\n logger.debug('No versions determined for milestone lookup');\n }\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n // Always ensure output directory exists for request/response files\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const storage = createStorage();\n await storage.ensureDirectory(outputDirectory);\n\n // Create adapters for ai-service\n const aiConfig = toAIConfig(runConfig);\n const aiStorageAdapter = createStorageAdapter(outputDirectory);\n const aiLogger = createLoggerAdapter(isDryRun);\n\n // Read context from files if provided\n const contextFromFiles = await readContextFiles(runConfig.release?.contextFiles, logger);\n\n // Combine file context with existing context\n const combinedContext = [\n runConfig.release?.context,\n contextFromFiles\n ].filter(Boolean).join('\\n\\n---\\n\\n');\n\n // Run agentic release notes generation\n const agenticResult = await runAgenticRelease({\n fromRef,\n toRef,\n logContent,\n diffContent,\n milestoneIssues: milestoneIssuesContent,\n releaseFocus: runConfig.release?.focus,\n userContext: combinedContext || undefined,\n targetVersion: runConfig.release?.version, // Pass explicit version if provided by publish command\n model: aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o',\n maxIterations: runConfig.release?.maxAgenticIterations || 30,\n debug: runConfig.debug,\n debugRequestFile: getOutputPath(outputDirectory, getTimestampedRequestFilename('release')),\n debugResponseFile: getOutputPath(outputDirectory, getTimestampedResponseFilename('release')),\n storage: aiStorageAdapter,\n logger: aiLogger,\n openaiReasoning: aiConfig.commands?.release?.reasoning || aiConfig.reasoning,\n });\n\n const iterations = agenticResult.iterations || 0;\n const toolCalls = agenticResult.toolCallsExecuted || 0;\n logger.info(`🔍 Analysis complete: ${iterations} iterations, ${toolCalls} tool calls`);\n\n // Generate self-reflection output if enabled\n if (runConfig.release?.selfReflection) {\n await generateSelfReflection(agenticResult, outputDirectory, storage, logger);\n }\n\n // Apply stop-context filtering to release notes\n const titleFilterResult = filterContent(agenticResult.releaseNotes.title, runConfig.stopContext);\n const bodyFilterResult = filterContent(agenticResult.releaseNotes.body, runConfig.stopContext);\n let releaseSummary: ReleaseSummary = {\n title: titleFilterResult.filtered,\n body: bodyFilterResult.filtered,\n };\n\n // Handle interactive mode\n if (runConfig.release?.interactive && !isDryRun) {\n requireTTY('Interactive mode requires a terminal. Use --dry-run instead.');\n\n const interactivePromptContext: ReleaseContext = {\n context: combinedContext || undefined,\n directories: runConfig.contextDirectories,\n };\n\n const interactiveResult = await handleInteractiveReleaseFeedback(\n releaseSummary,\n runConfig,\n promptConfig,\n interactivePromptContext,\n outputDirectory,\n storage,\n logContent,\n diffContent\n );\n\n if (interactiveResult.action === 'skip') {\n logger.info('RELEASE_ABORTED: Release notes generation aborted by user | Reason: User choice | Status: cancelled');\n } else {\n logger.info('RELEASE_FINALIZED: Release notes finalized and accepted | Status: ready | Next: Create release or save');\n }\n\n releaseSummary = interactiveResult.finalSummary;\n }\n\n // Save timestamped copy of release notes to output directory\n try {\n const timestampedFilename = getTimestampedReleaseNotesFilename();\n const outputPath = getOutputPath(outputDirectory, timestampedFilename);\n\n // Format the release notes as markdown\n const releaseNotesContent = `# ${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n\n await storage.writeFile(outputPath, releaseNotesContent, 'utf-8');\n logger.debug('Saved timestamped release notes: %s', outputPath);\n } catch (error: any) {\n logger.warn('RELEASE_SAVE_FAILED: Failed to save timestamped release notes | Error: %s | Impact: Notes not persisted to file', error.message);\n }\n\n if (isDryRun) {\n logger.info('RELEASE_SUMMARY_COMPLETE: Generated release summary successfully | Status: completed');\n logger.info('RELEASE_SUMMARY_TITLE: %s', releaseSummary.title);\n logger.info('RELEASE_SUMMARY_BODY: %s', releaseSummary.body);\n }\n\n return releaseSummary;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport * as Commit from '@grunnverk/commands-git';\nimport * as Release from './release';\nimport fs from 'fs/promises';\n\nimport { getLogger, getDryRunLogger, Config, PullRequest, Diff, getOutputPath, checkIfTagExists, confirmVersionInteractively, calculateBranchDependentVersion, DEFAULT_OUTPUT_DIRECTORY, KODRDRIV_DEFAULTS, runGitWithLock, filterContent } from '@grunnverk/core';\nimport { run, runWithDryRunSupport, runSecure, validateGitRef, safeJsonParse, validatePackageJson, isBranchInSyncWithRemote, safeSyncBranchWithRemote, localBranchExists, remoteBranchExists } from '@grunnverk/git-tools';\nimport * as GitHub from '@grunnverk/github-tools';\nimport { createStorage, incrementPatchVersion, calculateTargetVersion } from '@grunnverk/shared';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const logger = getLogger();\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n\n } catch (error: any) {\n logger.warn(`NPMRC_READ_FAILED: Unable to read .npmrc configuration file | Path: ${npmrcPath} | Error: ${error.message}`);\n logger.verbose('NPMRC_READ_IMPACT: Environment variable detection for publishing may be affected due to failed .npmrc read');\n }\n } else {\n logger.debug('NPMRC_NOT_FOUND: No .npmrc file present in current directory | Action: Skipping environment variable scan | Path: ' + npmrcPath);\n }\n\n return envVars;\n};\n\n/**\n * Checks if .gitignore contains required patterns to prevent publishing\n * development artifacts and sensitive files.\n */\nconst checkGitignorePatterns = async (storage: any, isDryRun: boolean): Promise<void> => {\n const logger = getDryRunLogger(isDryRun);\n const gitignorePath = path.join(process.cwd(), '.gitignore');\n\n // Required patterns that must be present in .gitignore\n const requiredPatterns = [\n 'node_modules',\n 'dist',\n 'package-lock.json',\n '.env',\n 'output/',\n 'coverage',\n '.kodrdriv*'\n ];\n\n // Check if .gitignore exists\n if (!await storage.exists(gitignorePath)) {\n logger.error('GITIGNORE_MISSING: .gitignore file not found | Path: ' + gitignorePath + ' | Impact: Critical files may be committed');\n logger.error('');\n logger.error('GITIGNORE_REQUIRED: .gitignore is required for kodrdriv to work properly');\n logger.error('GITIGNORE_PURPOSE: Prevents committing development artifacts and sensitive files');\n logger.error('');\n logger.error('GITIGNORE_CREATE: Create .gitignore with these patterns:');\n for (const pattern of requiredPatterns) {\n logger.error(` ${pattern}`);\n }\n logger.error('');\n throw new Error('.gitignore file is required but not found. Please create it with the required patterns.');\n }\n\n // Read .gitignore content\n let gitignoreContent: string;\n try {\n gitignoreContent = await storage.readFile(gitignorePath, 'utf-8');\n } catch (error: any) {\n logger.error(`GITIGNORE_READ_FAILED: Unable to read .gitignore | Path: ${gitignorePath} | Error: ${error.message}`);\n throw new Error(`Failed to read .gitignore: ${error.message}`);\n }\n\n // Parse .gitignore into lines, ignoring comments and empty lines\n const gitignoreLines = gitignoreContent\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('#'));\n\n // Check for missing patterns\n const missingPatterns: string[] = [];\n for (const pattern of requiredPatterns) {\n // Check if the pattern exists in any of the gitignore lines\n const found = gitignoreLines.some(line => {\n // Exact match\n if (line === pattern) return true;\n\n // Pattern with wildcard - check if the pattern or any matching line exists\n if (pattern.includes('*')) {\n const basePattern = pattern.replace('*', '');\n // Accept exact wildcard pattern, base pattern, or any line starting with base\n return line === pattern || line === basePattern || line.startsWith(basePattern);\n }\n\n // Pattern with trailing slash - check both with and without slash\n if (pattern.endsWith('/')) {\n const basePattern = pattern.slice(0, -1);\n return line === basePattern || line === pattern || line.startsWith(pattern);\n }\n\n // Line with trailing slash - check if it matches the pattern (e.g., \"node_modules/\" matches \"node_modules\")\n if (line.endsWith('/')) {\n const lineBase = line.slice(0, -1);\n return lineBase === pattern || line.startsWith(pattern + '/');\n }\n\n return false;\n });\n\n if (!found) {\n missingPatterns.push(pattern);\n }\n }\n\n // Report missing patterns (relaxed check - allow variations)\n const criticalMissing = missingPatterns.filter(p => !p.includes('coverage') && p !== 'package-lock.json');\n if (criticalMissing.length > 0) {\n logger.error('GITIGNORE_INCOMPLETE: Required patterns missing from .gitignore | Path: ' + gitignorePath + ' | Count: ' + criticalMissing.length);\n logger.error('');\n logger.error('GITIGNORE_MISSING_PATTERNS: The following patterns must be added to .gitignore:');\n for (const pattern of criticalMissing) {\n logger.error(` ${pattern}`);\n }\n logger.error('');\n logger.error('GITIGNORE_WHY_REQUIRED: These patterns are required because:');\n logger.error(' node_modules - Dependencies should not be committed');\n logger.error(' dist - Build artifacts should not be committed');\n logger.error(' .env - Environment variables may contain secrets');\n logger.error(' output/ - Build output directory should not be committed');\n logger.error(' .kodrdriv* - kodrdriv internal files should not be committed');\n logger.error('');\n throw new Error(`Missing required .gitignore patterns: ${criticalMissing.join(', ')}. Please add them to your .gitignore file.`);\n } else if (missingPatterns.length > 0) {\n logger.warn('GITIGNORE_VARIATION: Some patterns have variations in .gitignore (acceptable) | Patterns: ' + missingPatterns.join(', '));\n }\n\n logger.verbose('GITIGNORE_VERIFIED: All required patterns present in .gitignore | Path: ' + gitignorePath + ' | Status: valid');\n};\n\n/**\n * Checks if package-lock.json contains file: dependencies (from npm link)\n * and cleans them up if found by removing package-lock.json and regenerating it.\n */\nconst cleanupNpmLinkReferences = async (isDryRun: boolean): Promise<void> => {\n const logger = getDryRunLogger(isDryRun);\n const packageLockPath = path.join(process.cwd(), 'package-lock.json');\n\n try {\n // Check if package-lock.json exists\n try {\n await fs.access(packageLockPath);\n } catch {\n // No package-lock.json, nothing to clean\n logger.verbose('PACKAGE_LOCK_NOT_FOUND: No package-lock.json file exists | Action: Skipping npm link cleanup | Path: ' + packageLockPath);\n return;\n }\n\n // Read and parse package-lock.json\n const packageLockContent = await fs.readFile(packageLockPath, 'utf-8');\n const packageLock = safeJsonParse(packageLockContent, packageLockPath);\n\n // Check for file: dependencies in the lockfile\n let hasFileReferences = false;\n\n // Check in packages (npm v7+)\n if (packageLock.packages) {\n for (const [pkgPath, pkgInfo] of Object.entries(packageLock.packages as Record<string, any>)) {\n if (pkgInfo.resolved && typeof pkgInfo.resolved === 'string' && pkgInfo.resolved.startsWith('file:')) {\n // Check if it's a relative path (from npm link) rather than a workspace path\n const resolvedPath = pkgInfo.resolved.replace('file:', '');\n if (resolvedPath.startsWith('../') || resolvedPath.startsWith('./')) {\n hasFileReferences = true;\n logger.verbose(`NPM_LINK_DETECTED: Found npm link reference in packages section | Package: ${pkgPath} | Resolved: ${pkgInfo.resolved} | Type: relative_file_dependency`);\n break;\n }\n }\n }\n }\n\n // Check in dependencies (npm v6)\n if (!hasFileReferences && packageLock.dependencies) {\n for (const [pkgName, pkgInfo] of Object.entries(packageLock.dependencies as Record<string, any>)) {\n if (pkgInfo.version && typeof pkgInfo.version === 'string' && pkgInfo.version.startsWith('file:')) {\n const versionPath = pkgInfo.version.replace('file:', '');\n if (versionPath.startsWith('../') || versionPath.startsWith('./')) {\n hasFileReferences = true;\n logger.verbose(`NPM_LINK_DETECTED: Found npm link reference in dependencies section | Package: ${pkgName} | Version: ${pkgInfo.version} | Type: relative_file_dependency`);\n break;\n }\n }\n }\n }\n\n if (hasFileReferences) {\n logger.info('NPM_LINK_CLEANUP_REQUIRED: Detected npm link references in package-lock.json | File: package-lock.json | Impact: Must be cleaned before publish');\n logger.info('NPM_LINK_CLEANUP_STARTING: Removing package-lock.json and regenerating clean version | Action: Remove file with relative dependencies');\n\n if (isDryRun) {\n logger.info('DRY_RUN_OPERATION: Would remove package-lock.json and regenerate it | Mode: dry-run | File: package-lock.json');\n } else {\n // Remove package-lock.json\n await fs.unlink(packageLockPath);\n logger.verbose('NPM_LINK_CLEANUP_FILE_REMOVED: Deleted package-lock.json containing npm link references | Path: ' + packageLockPath);\n\n // Regenerate clean package-lock.json\n logger.verbose('NPM_LOCK_REGENERATING: Executing npm install to regenerate package-lock.json from package.json | Command: npm install --package-lock-only --no-audit --no-fund');\n await runWithDryRunSupport('npm install --package-lock-only --no-audit --no-fund', isDryRun);\n logger.info('NPM_LOCK_REGENERATED: Successfully regenerated clean package-lock.json without link references | Path: ' + packageLockPath);\n }\n } else {\n logger.verbose('NPM_LINK_CHECK_CLEAN: No npm link references found in package-lock.json | Status: Ready for publish | File: ' + packageLockPath);\n }\n } catch (error: any) {\n // Log warning but don't fail - let npm update handle any issues\n logger.warn(`NPM_LINK_CHECK_FAILED: Unable to check or clean npm link references | Error: ${error.message} | Impact: Continuing with publish, npm will handle issues`);\n logger.verbose('PUBLISH_PROCESS_CONTINUING: Proceeding with publish workflow despite npm link check failure | Next: Standard npm publish validation');\n }\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getDryRunLogger(isDryRun);\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`ENV_VARS_MISSING: Required environment variables not set | Variables: ${missingEnvVars.join(', ')} | Mode: dry-run | Impact: Would fail in real publish`);\n } else {\n logger.error(`ENV_VARS_MISSING: Required environment variables not set | Variables: ${missingEnvVars.join(', ')} | Action: Must set before publish | Source: .npmrc configuration`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config, targetBranch?: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n logger.info('PRECHECK_STARTING: Executing publish prechecks | Phase: validation | Target: ' + (targetBranch || 'default'));\n\n // Check .gitignore patterns first (critical requirement)\n logger.info('PRECHECK_GITIGNORE: Verifying .gitignore contains required patterns | Requirement: Must ignore development artifacts and sensitive files');\n if (isDryRun) {\n logger.info('PRECHECK_GITIGNORE: Would verify .gitignore patterns | Mode: dry-run | Patterns: node_modules, dist, package-lock.json, .env, output/, coverage, .kodrdriv*');\n } else {\n await checkGitignorePatterns(storage, isDryRun);\n }\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('PRECHECK_GIT_REPO: Would verify git repository | Mode: dry-run | Command: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Not in a git repository or git command failed: ${originalMessage}. Please run this command from within a git repository.`);\n }\n }\n\n // Check for uncommitted changes\n logger.info('PRECHECK_GIT_STATUS: Checking for uncommitted changes | Command: git status --porcelain | Requirement: Clean working directory');\n try {\n if (isDryRun) {\n logger.info('PRECHECK_GIT_STATUS: Would verify clean working directory | Mode: dry-run | Command: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Failed to check git status: ${originalMessage}. Please ensure you are in a valid git repository and try again.`);\n }\n }\n\n // Use the passed target branch or fallback to config/default\n const effectiveTargetBranch = targetBranch || runConfig.publish?.targetBranch || 'main';\n\n // Check that we're not running from the target branch\n logger.info('PRECHECK_BRANCH: Verifying current branch is not target branch | Target: ' + effectiveTargetBranch + ' | Requirement: Must run from feature branch');\n if (isDryRun) {\n logger.info(`PRECHECK_BRANCH: Would verify current branch is not target branch | Mode: dry-run | Target: ${effectiveTargetBranch}`);\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (currentBranch === effectiveTargetBranch) {\n throw new Error(`Cannot run publish from the target branch '${effectiveTargetBranch}'. Please switch to a different branch before running publish.`);\n }\n }\n\n // Check target branch sync with remote\n logger.info(`PRECHECK_BRANCH_SYNC: Checking target branch sync with remote | Branch: ${effectiveTargetBranch} | Remote: origin | Requirement: Branches must be synchronized`);\n if (isDryRun) {\n logger.info(`PRECHECK_BRANCH_SYNC: Would verify target branch is in sync with remote | Mode: dry-run | Branch: ${effectiveTargetBranch} | Remote: origin`);\n } else {\n // Only check if local target branch exists (it's okay if it doesn't exist locally)\n const targetBranchExists = await localBranchExists(effectiveTargetBranch);\n if (targetBranchExists) {\n const syncStatus = await isBranchInSyncWithRemote(effectiveTargetBranch);\n\n if (!syncStatus.inSync) {\n logger.error(`BRANCH_SYNC_FAILED: Target branch not synchronized with remote | Branch: ${effectiveTargetBranch} | Status: out-of-sync | Impact: Cannot proceed with publish`);\n logger.error('');\n\n if (syncStatus.error) {\n logger.error(`BRANCH_SYNC_ERROR: ${syncStatus.error}`);\n } else if (syncStatus.localSha && syncStatus.remoteSha) {\n logger.error(`BRANCH_SYNC_DIVERGENCE: Local and remote commits differ | Local SHA: ${syncStatus.localSha.substring(0, 8)} | Remote SHA: ${syncStatus.remoteSha.substring(0, 8)}`);\n }\n\n logger.error('');\n logger.error('RESOLUTION_STEPS: Manual intervention required to sync branches:');\n logger.error(` Step 1: Switch to target branch | Command: git checkout ${effectiveTargetBranch}`);\n logger.error(` Step 2: Pull latest changes | Command: git pull origin ${effectiveTargetBranch}`);\n logger.error(' Step 3: Resolve merge conflicts if present');\n logger.error(' Step 4: Return to feature branch and retry publish');\n logger.error('');\n logger.error(`ALTERNATIVE_OPTION: Automatic sync available | Command: kodrdriv publish --sync-target | Branch: ${effectiveTargetBranch}`);\n\n throw new Error(`Target branch '${effectiveTargetBranch}' is not in sync with remote. Please sync the branch before running publish.`);\n } else {\n logger.info(`BRANCH_SYNC_VERIFIED: Target branch is synchronized with remote | Branch: ${effectiveTargetBranch} | Status: in-sync`);\n }\n } else {\n logger.info(`BRANCH_NOT_LOCAL: Target branch does not exist locally | Branch: ${effectiveTargetBranch} | Action: Will be created during publish process`);\n }\n }\n\n // Check GitHub Actions workflow configuration\n logger.info('PRECHECK_WORKFLOW: Checking GitHub Actions workflow configuration | Target: PR automation | Requirement: Workflows should trigger on pull requests');\n if (isDryRun) {\n logger.info('PRECHECK_WORKFLOW: Would check if GitHub Actions workflows are configured for pull requests | Mode: dry-run');\n } else {\n try {\n // TODO: Re-enable when checkWorkflowConfiguration is exported from github-tools\n // const workflowConfig = await GitHub.checkWorkflowConfiguration(effectiveTargetBranch);\n const workflowConfig = {\n hasWorkflows: true,\n hasPullRequestTriggers: true,\n workflowCount: 0,\n triggeredWorkflowNames: [] as string[]\n };\n\n if (!workflowConfig.hasWorkflows) {\n logger.warn('WORKFLOW_NOT_CONFIGURED: No GitHub Actions workflows found in repository | Impact: PR will be created but no automated checks will run | Recommendation: Add workflow file at .github/workflows/ci.yml');\n logger.warn('WORKFLOW_BEHAVIOR: Publish process will proceed without waiting for checks | PR State: Will be created | Check Status: None');\n logger.warn('WORKFLOW_RECOMMENDATION: Consider adding CI workflow to validate PRs automatically | Example: .github/workflows/ci.yml with PR triggers');\n } else if (!workflowConfig.hasPullRequestTriggers) {\n logger.warn(`WORKFLOW_NO_PR_TRIGGER: Found workflows but none trigger on pull requests | Workflow Count: ${workflowConfig.workflowCount} | Target Branch: ${effectiveTargetBranch} | Impact: No checks will run on PR`);\n logger.warn('WORKFLOW_BEHAVIOR: Publish process will create PR without automated checks | PR State: Will be created | Check Status: None');\n logger.warn(`WORKFLOW_RECOMMENDATION: Update workflow triggers to include PR events | Configuration: on.pull_request.branches: [${effectiveTargetBranch}]`);\n } else {\n logger.info(`WORKFLOW_CONFIGURED: Found workflows that will trigger on pull requests | Target Branch: ${effectiveTargetBranch} | Workflow Count: ${workflowConfig.triggeredWorkflowNames.length}`);\n for (const workflowName of workflowConfig.triggeredWorkflowNames) {\n logger.info(`WORKFLOW_ACTIVE: ${workflowName} | Trigger: pull_request | Target: ${effectiveTargetBranch}`);\n }\n }\n } catch (error: any) {\n // Don't fail the precheck if we can't verify workflows\n // The wait logic will handle it later\n logger.debug(`WORKFLOW_CHECK_FAILED: Unable to verify workflow configuration | Error: ${error.message} | Impact: Will proceed with publish | Note: Wait logic will handle checks later`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('PRECHECK_PREPUBLISH: Checking for prepublishOnly script in package.json | Requirement: Must exist to run pre-flight checks | Expected: clean, lint, build, test');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('PACKAGE_JSON_NOT_FOUND: No package.json in current directory | Mode: dry-run | Impact: Cannot verify prepublishOnly script | Path: ' + packageJsonPath);\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, packageJsonPath);\n packageJson = validatePackageJson(parsed, packageJsonPath);\n\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('PACKAGE_JSON_PARSE_FAILED: Unable to parse package.json | Mode: dry-run | Impact: Cannot verify prepublishOnly script | Path: ' + packageJsonPath + ' | Requirement: Valid JSON format');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('PREPUBLISH_SCRIPT_MISSING: No prepublishOnly script found in package.json | Mode: dry-run | Requirement: Script must exist | Expected Tasks: clean, lint, build, test | Path: ' + packageJsonPath);\n }\n }\n }\n\n // Check required environment variables\n logger.verbose('PRECHECK_ENV_VARS: Checking required environment variables | Source: Configuration and .npmrc | Requirement: All required vars must be set');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`ENV_VARS_REQUIRED: Environment variables needed for publish | Variables: ${allRequiredEnvVars.join(', ')} | Count: ${allRequiredEnvVars.length} | Source: config + .npmrc`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose('ENV_VARS_NONE: No required environment variables specified | Status: No validation needed | Source: config + .npmrc');\n }\n\n logger.info('PRECHECK_COMPLETE: All publish prechecks passed successfully | Status: Ready to proceed | Next: Execute publish workflow');\n};\n\n// Helper: deep-sort object keys for stable comparison\nconst sortObjectKeys = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(sortObjectKeys);\n }\n if (value && typeof value === 'object') {\n const sorted: any = {};\n Object.keys(value).sort().forEach((key) => {\n sorted[key] = sortObjectKeys(value[key]);\n });\n return sorted;\n }\n return value;\n};\n\n// Determine if there are substantive changes compared to the target branch (beyond just version bump)\nconst isReleaseNecessaryComparedToTarget = async (targetBranch: string, isDryRun: boolean): Promise<{ necessary: boolean; reason: string }> => {\n const logger = getDryRunLogger(isDryRun);\n\n // We compare current HEAD branch to the provided target branch\n const currentBranch = await GitHub.getCurrentBranchName();\n\n // Check if target branch exists before trying to compare\n try {\n // Validate target branch exists and is accessible\n await runSecure('git', ['rev-parse', '--verify', targetBranch]);\n } catch (error: any) {\n // Target branch doesn't exist or isn't accessible\n logger.verbose(`RELEASE_CHECK_NO_TARGET: Target branch does not exist or is not accessible | Branch: ${targetBranch} | Action: Proceeding with publish | Reason: First release to this branch`);\n return { necessary: true, reason: `Target branch '${targetBranch}' does not exist; first release to this branch` };\n }\n\n // If branches are identical, nothing to release\n const { stdout: namesStdout } = await runSecure('git', ['diff', '--name-only', `${targetBranch}..${currentBranch}`]);\n const changedFiles = namesStdout.split('\\n').map(s => s.trim()).filter(Boolean);\n\n if (changedFiles.length === 0) {\n // No definitive signal; proceed with publish rather than skipping\n return { necessary: true, reason: 'No detectable changes via diff; proceeding conservatively' };\n }\n\n // If any files changed other than package.json (package-lock.json is gitignored), a release is necessary\n const nonVersionFiles = changedFiles.filter(f => f !== 'package.json');\n if (nonVersionFiles.length > 0) {\n return { necessary: true, reason: `Changed files beyond version bump: ${nonVersionFiles.join(', ')}` };\n }\n\n // Only package.json changed. Verify package.json change is only the version field\n try {\n // Read package.json content from both branches\n const { stdout: basePkgStdout } = await runSecure('git', ['show', `${targetBranch}:package.json`]);\n const { stdout: headPkgStdout } = await runSecure('git', ['show', `${currentBranch}:package.json`]);\n\n const basePkg = validatePackageJson(safeJsonParse(basePkgStdout, `${targetBranch}:package.json`), `${targetBranch}:package.json`);\n const headPkg = validatePackageJson(safeJsonParse(headPkgStdout, `${currentBranch}:package.json`), `${currentBranch}:package.json`);\n\n const { version: _baseVersion, ...baseWithoutVersion } = basePkg;\n const { version: _headVersion, ...headWithoutVersion } = headPkg;\n\n const baseSorted = sortObjectKeys(baseWithoutVersion);\n const headSorted = sortObjectKeys(headWithoutVersion);\n\n const equalExceptVersion = JSON.stringify(baseSorted) === JSON.stringify(headSorted);\n if (equalExceptVersion) {\n const currentVersion = headPkg.version;\n const targetVersion = basePkg.version;\n return {\n necessary: false,\n reason: `No meaningful changes detected:\\n • Current version: ${currentVersion}\\n • Target branch version: ${targetVersion}\\n • Only package.json version field differs\\n\\n To force republish: Add meaningful code changes or use --force (not yet implemented)`\n };\n }\n\n // Other fields changed inside package.json\n return { necessary: true, reason: 'package.json changes beyond version field' };\n } catch (error: any) {\n // Conservative: if we cannot prove it is only a version change, proceed with release\n logger.verbose(`RELEASE_CHECK_COMPARISON_FAILED: Unable to conclusively compare package.json changes | Error: ${error.message} | Action: Proceeding conservatively with publish | Reason: Cannot verify version-only change`);\n return { necessary: true, reason: 'Could not compare package.json safely' };\n }\n};\n\nconst handleTargetBranchSyncRecovery = async (runConfig: Config, targetBranch: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info(`BRANCH_SYNC_ATTEMPTING: Initiating sync of target branch with remote | Branch: ${targetBranch} | Remote: origin | Operation: fetch + merge`);\n\n if (isDryRun) {\n logger.info(`BRANCH_SYNC_DRY_RUN: Would attempt to sync branch with remote | Mode: dry-run | Branch: ${targetBranch} | Remote: origin`);\n return;\n }\n\n const syncResult = await safeSyncBranchWithRemote(targetBranch);\n\n if (syncResult.success) {\n logger.info(`BRANCH_SYNC_SUCCESS: Successfully synchronized branch with remote | Branch: ${targetBranch} | Remote: origin | Status: in-sync`);\n logger.info('BRANCH_SYNC_NEXT_STEP: Ready to proceed with publish | Action: Re-run publish command | Branch: ' + targetBranch);\n } else if (syncResult.conflictResolutionRequired) {\n logger.error(`BRANCH_SYNC_CONFLICTS: Sync failed due to merge conflicts | Branch: ${targetBranch} | Status: conflicts-detected | Resolution: Manual intervention required`);\n logger.error('');\n logger.error('CONFLICT_RESOLUTION_STEPS: Manual conflict resolution required:');\n logger.error(` Step 1: Switch to target branch | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull and resolve conflicts | Command: git pull origin ${targetBranch}`);\n logger.error(' Step 3: Commit resolved changes | Command: git commit');\n logger.error(' Step 4: Return to feature branch and retry | Command: kodrdriv publish');\n logger.error('');\n throw new Error(`Target branch '${targetBranch}' has conflicts that require manual resolution.`);\n } else {\n logger.error(`BRANCH_SYNC_FAILED: Sync operation failed | Branch: ${targetBranch} | Error: ${syncResult.error} | Remote: origin`);\n throw new Error(`Failed to sync target branch: ${syncResult.error}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n // Get current branch for branch-dependent targeting\n let currentBranch: string;\n if (isDryRun) {\n currentBranch = 'mock-branch';\n } else {\n currentBranch = await GitHub.getCurrentBranchName();\n }\n\n // Determine target branch EARLY (before expensive operations) for early necessity check\n let targetBranch = runConfig.publish?.targetBranch || 'main';\n let branchDependentVersioning = false;\n\n // Check for branches configuration\n if (runConfig.branches && runConfig.branches[currentBranch]) {\n branchDependentVersioning = true;\n\n const branchConfig = runConfig.branches[currentBranch];\n\n if (branchConfig.targetBranch) {\n targetBranch = branchConfig.targetBranch;\n }\n\n logger.info(`BRANCH_DEPENDENT_TARGETING: Branch-specific configuration active | Source: ${currentBranch} | Target: ${targetBranch} | Feature: Branch-dependent versioning and targeting`);\n logger.info(`BRANCH_CONFIGURATION_SOURCE: Current branch | Branch: ${currentBranch} | Type: source`);\n logger.info(`BRANCH_CONFIGURATION_TARGET: Target branch for publish | Branch: ${targetBranch} | Type: destination`);\n\n // Look at target branch config to show version strategy\n const targetBranchConfig = runConfig.branches[targetBranch];\n if (targetBranchConfig?.version) {\n const versionType = targetBranchConfig.version.type;\n const versionTag = targetBranchConfig.version.tag;\n const versionIncrement = targetBranchConfig.version.increment;\n\n logger.info(`VERSION_STRATEGY: Target branch version configuration | Branch: ${targetBranch} | Type: ${versionType} | Tag: ${versionTag || 'none'} | Increment: ${versionIncrement ? 'enabled' : 'disabled'}`);\n }\n } else {\n logger.debug(`BRANCH_TARGETING_DEFAULT: No branch-specific configuration found | Branch: ${currentBranch} | Action: Using default target | Target: ${targetBranch}`);\n }\n\n // Handle --sync-target flag\n if (runConfig.publish?.syncTarget) {\n await handleTargetBranchSyncRecovery(runConfig, targetBranch);\n return; // Exit after sync operation\n }\n\n // OPTIMIZATION: Early check if release is necessary BEFORE expensive operations\n // This can save 2-4 minutes for packages with no changes by skipping:\n // - git fetch (~30-60s)\n // - current branch sync (~30-60s)\n // - target branch setup (~30-60s)\n // - prechecks (~30-60s)\n if (!isDryRun) {\n logger.info('RELEASE_NECESSITY_CHECK_EARLY: Quick check if release is required | Comparison: current branch vs target | Target: ' + targetBranch + ' | Purpose: Skip expensive operations for unchanged packages');\n try {\n const necessity = await isReleaseNecessaryComparedToTarget(targetBranch, isDryRun);\n if (!necessity.necessary) {\n logger.info(`\\nRELEASE_SKIPPED_EARLY: No meaningful changes detected, skipping publish | Reason: ${necessity.reason} | Target: ${targetBranch} | Time saved: ~2-4 minutes`);\n // Emit a machine-readable marker so tree mode can detect skip and avoid propagating versions\n // CRITICAL: Use console.log to write to stdout (logger.info goes to stderr via winston)\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIPPED');\n return;\n } else {\n logger.verbose(`RELEASE_PROCEEDING_EARLY: Meaningful changes detected, continuing with full publish workflow | Reason: ${necessity.reason} | Target: ${targetBranch}`);\n }\n } catch (error: any) {\n // If early check fails (e.g., target branch doesn't exist yet), continue with normal flow\n logger.verbose(`RELEASE_NECESSITY_CHECK_EARLY_SKIPPED: Unable to perform early check | Error: ${error.message} | Action: Continuing with full workflow | Reason: Target branch may not exist yet or other setup needed`);\n }\n }\n\n // Now perform expensive operations only if we're proceeding with publish\n if (!isDryRun) {\n // Fetch latest remote information to avoid conflicts\n logger.info('GIT_FETCH_STARTING: Fetching latest remote information | Remote: origin | Purpose: Avoid conflicts during publish | Command: git fetch origin');\n try {\n await run('git fetch origin');\n logger.info('GIT_FETCH_SUCCESS: Successfully fetched latest remote information | Remote: origin | Status: up-to-date');\n } catch (error: any) {\n logger.warn(`GIT_FETCH_FAILED: Unable to fetch from remote | Remote: origin | Error: ${error.message} | Impact: May cause conflicts if remote has changes`);\n }\n\n // Sync current branch with remote to avoid conflicts\n logger.info(`CURRENT_BRANCH_SYNC: Synchronizing current branch with remote | Branch: ${currentBranch} | Remote: origin | Purpose: Avoid conflicts during publish`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${currentBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n // Use explicit fetch+merge instead of pull to avoid git config conflicts\n await runGitWithLock(process.cwd(), async () => {\n await run(`git fetch origin ${currentBranch}`);\n await run(`git merge origin/${currentBranch} --no-edit`);\n }, `sync ${currentBranch}`);\n logger.info(`CURRENT_BRANCH_SYNCED: Successfully synchronized current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Status: in-sync`);\n } else {\n logger.info(`REMOTE_BRANCH_NOT_FOUND: No remote branch exists | Branch: ${currentBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`MERGE_CONFLICTS_DETECTED: Conflicts found when syncing current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Status: conflicts-require-resolution`);\n logger.error(`CONFLICT_RESOLUTION_REQUIRED: Manual intervention needed to resolve conflicts and continue:`);\n logger.error(` Step 1: Resolve conflicts in affected files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Commit resolution | Command: git commit`);\n logger.error(` Step 4: Retry publish | Command: kodrdriv publish`);\n throw new Error(`Merge conflicts detected when syncing ${currentBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`CURRENT_BRANCH_SYNC_FAILED: Unable to sync current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Error: ${error.message} | Impact: May cause issues during publish`);\n }\n }\n }\n\n // Check if target branch exists and create it if needed\n logger.info(`TARGET_BRANCH_CHECK: Verifying target branch existence | Branch: ${targetBranch} | Action: Create if missing | Source: Current HEAD`);\n if (isDryRun) {\n logger.info(`TARGET_BRANCH_CHECK: Would verify target branch exists and create if needed | Mode: dry-run | Branch: ${targetBranch}`);\n } else {\n const targetBranchExists = await localBranchExists(targetBranch);\n if (!targetBranchExists) {\n // Check if it exists on remote\n const remoteExists = await remoteBranchExists(targetBranch);\n\n if (remoteExists) {\n logger.info(`TARGET_BRANCH_TRACKING: Target branch exists on remote but not locally, tracking origin/${targetBranch} | Branch: ${targetBranch}`);\n try {\n await runGitWithLock(process.cwd(), async () => {\n // Create local branch tracking remote\n await runSecure('git', ['branch', targetBranch, `origin/${targetBranch}`]);\n logger.info(`TARGET_BRANCH_CREATED: Successfully created local tracking branch | Branch: ${targetBranch} | Source: origin/${targetBranch}`);\n }, `track target branch ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to track target branch '${targetBranch}': ${error.message}`);\n }\n } else {\n logger.info(`TARGET_BRANCH_CREATING: Target branch does not exist locally or on remote, creating from current branch | Branch: ${targetBranch} | Source: HEAD | Remote: origin`);\n try {\n // Wrap git branch and push operations with lock\n await runGitWithLock(process.cwd(), async () => {\n // Create the target branch from the current HEAD\n await runSecure('git', ['branch', targetBranch, 'HEAD']);\n logger.info(`TARGET_BRANCH_CREATED: Successfully created target branch locally | Branch: ${targetBranch} | Source: HEAD`);\n\n // Push the new branch to origin\n await runSecure('git', ['push', 'origin', targetBranch]);\n logger.info(`TARGET_BRANCH_PUSHED: Successfully pushed new target branch to remote | Branch: ${targetBranch} | Remote: origin/${targetBranch}`);\n }, `create and push target branch ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to create target branch '${targetBranch}': ${error.message}`);\n }\n }\n } else {\n logger.info(`TARGET_BRANCH_EXISTS: Target branch already exists locally | Branch: ${targetBranch} | Status: ready`);\n }\n }\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig, targetBranch);\n\n logger.info('RELEASE_PROCESS_STARTING: Initiating release workflow | Target: ' + targetBranch + ' | Phase: dependency updates and version management');\n\n\n let pr: PullRequest | null = null;\n let newVersion: string = ''; // Will be set during version determination phase\n\n if (isDryRun) {\n logger.info('PR_CHECK: Would check for existing pull request | Mode: dry-run | Action: Skip PR lookup');\n logger.info('PR_ASSUMPTION: Assuming no existing PR found | Mode: dry-run | Purpose: Demo workflow');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`PR_FOUND: Existing pull request detected for current branch | URL: ${pr.html_url} | Status: open`);\n } else {\n logger.info('PR_NOT_FOUND: No open pull request exists for current branch | Action: Starting new release publishing process | Next: Prepare dependencies and version');\n\n // STEP 1: Prepare for release (update dependencies and run prepublish checks) with NO version bump yet\n logger.verbose('RELEASE_PREP_STARTING: Preparing for release | Phase: dependency management | Action: Switch from workspace to remote dependencies | Version Bump: Not yet applied');\n\n // Clean up any npm link references before updating dependencies\n if (!runConfig.publish?.skipLinkCleanup) {\n logger.verbose('NPM_LINK_CHECK: Scanning package-lock.json for npm link references | File: package-lock.json | Purpose: Remove development symlinks before publish');\n await cleanupNpmLinkReferences(isDryRun);\n } else {\n logger.verbose('NPM_LINK_CLEANUP_SKIPPED: Skipping package-lock cleanup (tree publish workflow) | Reason: package-lock.json not included in npm publish');\n }\n\n // Update inter-project dependencies if --update-deps flag is present\n const updateDepsScope = runConfig.publish?.updateDeps;\n if (updateDepsScope) {\n logger.info(`INTER_PROJECT_DEPS_UPDATE: Updating inter-project dependencies | Scope: ${updateDepsScope} | Type: inter-project | Command: kodrdriv updates`);\n const Updates = await import('@grunnverk/commands-tree');\n const updatesConfig: Config = {\n ...runConfig,\n dryRun: isDryRun,\n updates: {\n scope: updateDepsScope,\n interProject: true\n }\n };\n await Updates.updates(updatesConfig);\n }\n\n logger.verbose('DEPS_UPDATE_REGISTRY: Updating dependencies to latest versions from npm registry | Source: registry | Target: package.json');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`DEPS_UPDATE_PATTERNS: Updating dependencies matching specified patterns | Patterns: ${updatePatterns.join(', ')} | Count: ${updatePatterns.length} | Command: npm update`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`npm update ${patternsArg} --legacy-peer-deps`, isDryRun);\n } else {\n logger.verbose('DEPS_UPDATE_ALL: No dependency patterns specified, updating all dependencies | Scope: all | Command: npm update');\n await runWithDryRunSupport('npm update --legacy-peer-deps', isDryRun);\n }\n\n logger.info('PREPUBLISH_SCRIPT_RUNNING: Executing prepublishOnly script | Script: prepublishOnly | Purpose: Run pre-flight checks (clean, lint, build, test)');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun, {}, true); // Use inherited stdio\n\n // STEP 2: Commit dependency updates if any (still no version bump)\n logger.verbose('DEPS_STAGING: Staging dependency updates for commit | Files: package.json | Command: git add | Note: Version bump not yet applied, package-lock.json ignored');\n // Skip package-lock.json as it's in .gitignore to avoid private registry refs\n const filesToStage = 'package.json';\n\n // Wrap git operations with repository lock to prevent .git/index.lock conflicts\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git add ${filesToStage}`, isDryRun);\n }, 'stage dependency updates');\n\n logger.verbose('DEPS_COMMIT_CHECK: Checking for staged dependency updates | Command: git status | Purpose: Determine if commit needed');\n if (isDryRun) {\n logger.verbose('DEPS_COMMIT_DRY_RUN: Would create dependency update commit if changes are staged | Mode: dry-run');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('DEPS_COMMIT_CREATING: Staged dependency changes detected, creating commit | Files: ' + filesToStage + ' | Action: Execute commit command');\n // Commit also needs git lock\n await runGitWithLock(process.cwd(), async () => {\n await Commit.commit(runConfig);\n }, 'commit dependency updates');\n } else {\n logger.verbose('DEPS_COMMIT_SKIPPED: No dependency changes to commit | Files: ' + filesToStage + ' | Action: Skipping commit step');\n }\n }\n\n // STEP 3: Merge target branch into working branch (optional - now skipped by default since post-publish sync keeps branches in sync)\n const skipPreMerge = runConfig.publish?.skipPrePublishMerge !== false; // Default to true (skip)\n\n if (skipPreMerge) {\n logger.verbose(`PRE_MERGE_SKIPPED: Skipping pre-publish merge of target branch | Reason: Post-publish sync handles branch synchronization | Target: ${targetBranch} | Config: skipPrePublishMerge=true`);\n } else {\n logger.info(`PRE_MERGE_STARTING: Merging target branch into current branch | Target: ${targetBranch} | Purpose: Avoid version conflicts | Phase: pre-publish`);\n if (isDryRun) {\n logger.info(`Would merge ${targetBranch} into current branch`);\n } else {\n // Wrap entire merge process with git lock (involves fetch, merge, checkout, add, commit)\n await runGitWithLock(process.cwd(), async () => {\n // Fetch the latest target branch\n try {\n await run(`git fetch origin ${targetBranch}:${targetBranch}`);\n logger.info(`TARGET_BRANCH_FETCHED: Successfully fetched latest target branch | Branch: ${targetBranch} | Remote: origin/${targetBranch} | Purpose: Pre-merge sync`);\n } catch (fetchError: any) {\n logger.warn(`TARGET_BRANCH_FETCH_FAILED: Unable to fetch target branch | Branch: ${targetBranch} | Error: ${fetchError.message} | Impact: Proceeding without merge, PR may have conflicts`);\n logger.warn('MERGE_SKIPPED_NO_FETCH: Continuing without pre-merge | Reason: Target branch fetch failed | Impact: PR may require manual conflict resolution');\n }\n\n // Check if merge is needed (avoid unnecessary merge commits)\n try {\n const { stdout: mergeBase } = await run(`git merge-base HEAD ${targetBranch}`);\n const { stdout: targetCommit } = await run(`git rev-parse ${targetBranch}`);\n\n if (mergeBase.trim() === targetCommit.trim()) {\n logger.info(`MERGE_NOT_NEEDED: Current branch already up-to-date with target | Branch: ${targetBranch} | Status: in-sync | Action: Skipping merge`);\n } else {\n // Try to merge target branch into current branch\n let mergeSucceeded = false;\n try {\n await run(`git merge ${targetBranch} --no-edit -m \"Merge ${targetBranch} to sync before version bump\"`);\n logger.info(`MERGE_SUCCESS: Successfully merged target branch into current branch | Target: ${targetBranch} | Purpose: Sync before version bump`);\n mergeSucceeded = true;\n } catch (mergeError: any) {\n // If merge conflicts occur, check if they're only in version-related files\n const errorText = [mergeError.message || '', mergeError.stdout || '', mergeError.stderr || ''].join(' ');\n if (errorText.includes('CONFLICT')) {\n logger.warn(`MERGE_CONFLICTS_DETECTED: Merge conflicts found, attempting automatic resolution | Target: ${targetBranch} | Strategy: Auto-resolve version files`);\n\n // Get list of conflicted files\n const { stdout: conflictedFiles } = await run('git diff --name-only --diff-filter=U');\n const conflicts = conflictedFiles.trim().split('\\n').filter(Boolean);\n\n logger.verbose(`MERGE_CONFLICTS_LIST: Conflicted files detected | Files: ${conflicts.join(', ')} | Count: ${conflicts.length}`);\n\n // Check if conflicts are only in package.json (package-lock.json is gitignored)\n const versionFiles = ['package.json'];\n const nonVersionConflicts = conflicts.filter(f => !versionFiles.includes(f));\n\n if (nonVersionConflicts.length > 0) {\n logger.error(`MERGE_AUTO_RESOLVE_FAILED: Cannot auto-resolve conflicts in non-version files | Files: ${nonVersionConflicts.join(', ')} | Count: ${nonVersionConflicts.length} | Resolution: Manual intervention required`);\n logger.error('');\n logger.error('CONFLICT_RESOLUTION_REQUIRED: Manual steps to resolve conflicts:');\n logger.error(' Step 1: Resolve conflicts in the files listed above');\n logger.error(' Step 2: Stage resolved files | Command: git add <resolved-files>');\n logger.error(' Step 3: Complete merge commit | Command: git commit');\n logger.error(' Step 4: Resume publish process | Command: kodrdriv publish');\n logger.error('');\n throw new Error(`Merge conflicts in non-version files. Please resolve manually.`);\n }\n\n // Auto-resolve version conflicts by accepting current branch versions\n // (keep our working branch's version, which is likely already updated)\n logger.info(`MERGE_AUTO_RESOLVING: Automatically resolving version conflicts | Strategy: Keep current branch versions | Files: ${versionFiles.join(', ')}`);\n for (const file of conflicts) {\n if (versionFiles.includes(file)) {\n await run(`git checkout --ours ${file}`);\n await run(`git add ${file}`);\n logger.verbose(`MERGE_FILE_RESOLVED: Resolved file using current branch version | File: ${file} | Strategy: checkout --ours`);\n }\n }\n\n // Complete the merge\n await run(`git commit --no-edit -m \"Merge ${targetBranch} to sync before version bump (auto-resolved version conflicts)\"`);\n logger.info(`MERGE_AUTO_RESOLVE_SUCCESS: Successfully auto-resolved version conflicts and completed merge | Target: ${targetBranch} | Files: ${versionFiles.join(', ')}`);\n mergeSucceeded = true;\n } else {\n // Not a conflict error, re-throw\n throw mergeError;\n }\n }\n\n // Only run npm install if merge actually happened\n if (mergeSucceeded) {\n // Run npm install to update package-lock.json based on merged package.json\n logger.info('POST_MERGE_NPM_INSTALL: Running npm install after merge | Purpose: Update package-lock.json based on merged package.json | Command: npm install');\n await run('npm install');\n logger.info('POST_MERGE_NPM_COMPLETE: npm install completed successfully | Status: Dependencies synchronized');\n\n // Commit any changes from npm install (e.g., package-lock.json updates)\n const { stdout: mergeChangesStatus } = await run('git status --porcelain');\n if (mergeChangesStatus.trim()) {\n logger.verbose('POST_MERGE_CHANGES_DETECTED: Changes detected after npm install | Action: Staging for commit | Command: git add');\n // Skip package-lock.json as it's in .gitignore to avoid private registry refs\n const filesToStagePostMerge = 'package.json';\n await run(`git add ${filesToStagePostMerge}`);\n\n if (await Diff.hasStagedChanges()) {\n logger.verbose('POST_MERGE_COMMIT: Committing post-merge changes | Files: ' + filesToStagePostMerge + ' | Purpose: Finalize merge');\n await Commit.commit(runConfig);\n }\n }\n }\n }\n } catch (error: any) {\n // Only catch truly unexpected errors here\n logger.error(`MERGE_UNEXPECTED_ERROR: Unexpected error during merge process | Error: ${error.message} | Target: ${targetBranch} | Action: Aborting publish`);\n throw error;\n }\n }, `merge ${targetBranch} into current branch`);\n }\n }\n\n // STEP 4: Determine and set target version AFTER checks, dependency commit, and target branch merge\n logger.info('Determining target version...');\n\n if (isDryRun) {\n logger.info('Would determine target version and update package.json');\n newVersion = '1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, 'package.json');\n const packageJson = validatePackageJson(parsed, 'package.json');\n const currentVersion = packageJson.version;\n\n let proposedVersion: string;\n let finalTargetBranch = targetBranch;\n\n if (branchDependentVersioning && runConfig.branches) {\n // Use branch-dependent versioning logic\n const branchDependentResult = await calculateBranchDependentVersion(\n currentVersion,\n currentBranch,\n runConfig.branches,\n targetBranch\n );\n proposedVersion = branchDependentResult.version;\n finalTargetBranch = branchDependentResult.targetBranch;\n\n logger.info(`VERSION_BRANCH_DEPENDENT_CALCULATED: Branch-dependent version calculated | Current: ${currentVersion} | Proposed: ${proposedVersion} | Strategy: branch-dependent`);\n logger.info(`TARGET_BRANCH_FINAL: Final target branch determined | Branch: ${finalTargetBranch} | Source: branch-dependent config`);\n\n // Update targetBranch for the rest of the function\n targetBranch = finalTargetBranch;\n } else {\n // Use existing logic for backward compatibility\n const targetVersionInput = runConfig.publish?.targetVersion || 'patch';\n proposedVersion = calculateTargetVersion(currentVersion, targetVersionInput);\n }\n\n const targetTagName = `v${proposedVersion}`;\n const tagExists = await checkIfTagExists(targetTagName);\n\n // Smart tag conflict handling\n if (tagExists) {\n const { getNpmPublishedVersion, getTagInfo } = await import('@grunnverk/core');\n\n logger.warn(`TAG_ALREADY_EXISTS: Tag already exists in repository | Tag: ${targetTagName} | Status: conflict | Action: Check npm registry`);\n\n // Check if this version is published on npm\n const npmVersion = await getNpmPublishedVersion(packageJson.name);\n const tagInfo = await getTagInfo(targetTagName);\n\n if (npmVersion === proposedVersion) {\n // Version is already published on npm\n logger.info(`VERSION_ALREADY_PUBLISHED: Version already published on npm registry | Version: ${proposedVersion} | Status: published | Action: Skipping`);\n logger.info(`PUBLISH_SKIPPED_DUPLICATE: Skipping publish operation | Reason: Package already at target version | Version: ${proposedVersion}`);\n logger.info('');\n logger.info('REPUBLISH_OPTIONS: Options if you need to republish:');\n logger.info(` Option 1: Bump version | Command: npm version patch (or minor/major)`);\n logger.info(` Option 2: Re-run publish | Command: kodrdriv publish`);\n logger.info('');\n\n if (runConfig.publish?.skipAlreadyPublished) {\n logger.info('PUBLISH_SKIPPED_FLAG: Skipping package due to flag | Flag: --skip-already-published | Version: ' + proposedVersion + ' | Status: skipped');\n // Emit skip marker for tree mode detection with reason\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIPPED');\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIP_REASON:already-published');\n return; // Exit without error\n } else {\n throw new Error(`Version ${proposedVersion} already published. Use --skip-already-published to continue.`);\n }\n } else {\n // Tag exists but version not on npm - likely failed previous publish\n logger.warn('');\n logger.warn('PUBLISH_SITUATION_ANALYSIS: Analyzing publish conflict situation | Tag: ' + targetTagName + ' | npm: ' + (npmVersion || 'not published'));\n logger.warn(`PUBLISH_ANALYSIS_TAG_EXISTS: Tag exists locally | Tag: ${targetTagName} | Commit: ${tagInfo?.commit?.substring(0, 8)}`);\n logger.warn(`PUBLISH_ANALYSIS_NPM_STATUS: npm registry status | Version: ${npmVersion || 'not published'} | Status: ${npmVersion ? 'published' : 'missing'}`);\n logger.warn(`PUBLISH_ANALYSIS_CONCLUSION: Previous publish likely failed after tag creation | Reason: Tag exists but not on npm | Resolution: Recovery needed`);\n logger.warn('');\n logger.warn('PUBLISH_RECOVERY_OPTIONS: Recovery options available:');\n logger.warn(' OPTION_1_FORCE: Force republish by deleting tag | Command: kodrdriv publish --force-republish');\n logger.warn(' OPTION_2_BUMP: Skip version and bump | Command: npm version patch && kodrdriv publish');\n logger.warn(' OPTION_3_MANUAL: Manually delete tag:');\n logger.warn(` Command: git tag -d ${targetTagName}`);\n logger.warn(` Command: git push origin :refs/tags/${targetTagName}`);\n logger.warn('');\n\n if (runConfig.publish?.forceRepublish) {\n logger.info('PUBLISH_FORCE_REPUBLISH: Force republish mode enabled | Action: Deleting existing tag | Tag: ' + targetTagName + ' | Purpose: Allow republish');\n\n if (!isDryRun) {\n const { runSecure } = await import('@grunnverk/git-tools');\n\n // Delete local tag\n try {\n await runSecure('git', ['tag', '-d', targetTagName]);\n logger.info(`TAG_DELETED_LOCAL: Deleted local tag | Tag: ${targetTagName} | Status: removed-local`);\n } catch (error: any) {\n logger.debug(`Could not delete local tag: ${error.message}`);\n }\n\n // Delete remote tag\n try {\n await runSecure('git', ['push', 'origin', `:refs/tags/${targetTagName}`]);\n logger.info(`TAG_DELETED_REMOTE: Deleted remote tag | Tag: ${targetTagName} | Remote: origin | Status: removed-remote`);\n } catch (error: any) {\n logger.debug(`Could not delete remote tag: ${error.message}`);\n }\n\n logger.info('PUBLISH_TAG_CLEANUP_COMPLETE: Tag deleted successfully | Status: ready-for-publish | Next: Continue with publish workflow');\n } else {\n logger.info('Would delete tags and continue with publish');\n }\n } else {\n throw new Error(`Tag ${targetTagName} already exists. Use --force-republish to override.`);\n }\n }\n }\n\n if (runConfig.publish?.interactive) {\n newVersion = await confirmVersionInteractively(currentVersion, proposedVersion, runConfig.publish?.targetVersion);\n const confirmedTagName = `v${newVersion}`;\n const confirmedTagExists = await checkIfTagExists(confirmedTagName);\n\n if (confirmedTagExists) {\n const { getNpmPublishedVersion } = await import('@grunnverk/core');\n const npmVersion = await getNpmPublishedVersion(packageJson.name);\n\n if (npmVersion === newVersion) {\n throw new Error(`Tag ${confirmedTagName} already exists and version is published on npm. Please choose a different version.`);\n } else if (!runConfig.publish?.forceRepublish) {\n throw new Error(`Tag ${confirmedTagName} already exists. Use --force-republish to override.`);\n }\n // If forceRepublish is set, we'll continue (tag will be deleted later)\n }\n } else {\n newVersion = proposedVersion;\n }\n\n logger.info(`Bumping version from ${currentVersion} to ${newVersion}`);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version updated in package.json: ${newVersion}`);\n }\n\n // STEP 5: Commit version bump as a separate commit\n logger.verbose('Staging version bump for commit');\n // Skip package-lock.json as it's in .gitignore to avoid private registry refs\n const filesToStageVersionBump = 'package.json';\n\n // Wrap git operations with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git add ${filesToStageVersionBump}`, isDryRun);\n }, 'stage version bump');\n\n if (isDryRun) {\n logger.verbose('Would create version bump commit');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Creating version bump commit...');\n await runGitWithLock(process.cwd(), async () => {\n await Commit.commit(runConfig);\n }, 'commit version bump');\n } else {\n logger.verbose('No version changes to commit.');\n }\n }\n\n logger.info('Generating release notes...');\n\n // Use the existing currentBranch variable for tag detection\n logger.debug(`Current branch for release notes: ${currentBranch}`);\n\n // Create a modified config for release notes generation that includes the publish --from, --interactive, and --from-main options\n const releaseConfig = { ...runConfig };\n releaseConfig.release = {\n ...runConfig.release,\n currentBranch: currentBranch, // Pass current branch\n version: newVersion, // Pass the target release version explicitly\n ...(runConfig.publish?.from && { from: runConfig.publish.from }),\n ...(runConfig.publish?.interactive && { interactive: runConfig.publish.interactive }),\n ...(runConfig.publish?.fromMain && { fromMain: runConfig.publish.fromMain })\n };\n if (runConfig.publish?.from) {\n logger.verbose(`Using custom 'from' reference for release notes: ${runConfig.publish.from}`);\n }\n if (runConfig.publish?.interactive) {\n logger.verbose('Interactive mode enabled for release notes generation');\n }\n if (runConfig.publish?.fromMain) {\n logger.verbose('Forcing comparison against main branch for release notes');\n }\n // Log self-reflection settings for debugging\n if (releaseConfig.release?.selfReflection) {\n logger.verbose('Self-reflection enabled for release notes generation');\n }\n\n const releaseSummary = await Release.execute(releaseConfig);\n\n if (isDryRun) {\n logger.info('Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info('Pushing to origin...');\n // Get current branch name and push explicitly to avoid pushing to wrong remote/branch\n const branchName = await GitHub.getCurrentBranchName();\n\n // Wrap git push with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git push origin ${branchName}`, isDryRun);\n }, `push ${branchName}`);\n\n logger.info('Creating pull request...');\n if (isDryRun) {\n logger.info('Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: rawCommitTitle } = await run('git log -1 --pretty=%B');\n\n // Apply stop-context filtering to PR title and body\n const commitTitle = filterContent(rawCommitTitle, runConfig.stopContext).filtered;\n const prBody = filterContent('Automated release PR.', runConfig.stopContext).filtered;\n\n pr = await GitHub.createPullRequest(commitTitle, prBody, branchName, targetBranch);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url} (${branchName} → ${targetBranch})`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Check if we already know from prechecks that no workflows will trigger\n let shouldSkipWait = false;\n try {\n // TODO: Re-enable when checkWorkflowConfiguration is exported from github-tools\n // const workflowConfig = await GitHub.checkWorkflowConfiguration(targetBranch);\n const workflowConfig = {\n hasWorkflows: true,\n hasPullRequestTriggers: true,\n workflowCount: 0,\n triggeredWorkflowNames: [] as string[]\n };\n if (!workflowConfig.hasWorkflows || !workflowConfig.hasPullRequestTriggers) {\n logger.info('PUBLISH_CHECK_WAIT_SKIPPED: Skipping check wait | Reason: No workflows configured for PR | Status: no-workflows | Next: Proceed with merge');\n shouldSkipWait = true;\n }\n } catch (error: any) {\n // If we can't verify, proceed with waiting to be safe\n logger.debug(`Could not verify workflow configuration for wait skip: ${error.message}`);\n }\n\n if (!shouldSkipWait) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || KODRDRIV_DEFAULTS.publish.checksTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n try {\n await GitHub.mergePullRequest(pr!.number, mergeMethod, false); // Don't delete branch\n } catch (error: any) {\n // Check if this is a merge conflict error\n if (error.message && (\n error.message.includes('not mergeable') ||\n error.message.includes('Pull Request is not mergeable') ||\n error.message.includes('merge conflict')\n )) {\n logger.error(`PR_MERGE_CONFLICTS: Pull request has merge conflicts | PR Number: ${pr!.number} | Status: conflicts | Resolution: Manual intervention required`);\n logger.error('');\n logger.error('PR_CONFLICT_RESOLUTION: Steps to resolve conflicts:');\n logger.error(` Step 1: Visit pull request | URL: ${pr!.html_url}`);\n logger.error(' Step 2: Resolve merge conflicts | Method: GitHub UI or local');\n logger.error(' Step 3: Re-run publish command | Command: kodrdriv publish');\n logger.error('');\n logger.error('PR_AUTO_CONTINUE: Command will auto-detect existing PR | Behavior: Continues from where it left off | No re-creation needed');\n throw new Error(`Merge conflicts detected in PR #${pr!.number}. Please resolve conflicts and re-run the command.`);\n } else {\n // Re-throw other merge errors\n throw error;\n }\n }\n }\n\n // Switch to target branch and pull latest changes\n logger.info(`Checking out target branch: ${targetBranch}...`);\n\n // Check for uncommitted changes and stash them if necessary\n let hasStashedChanges = false;\n if (!isDryRun) {\n const { stdout: statusOutput } = await runSecure('git', ['status', '--porcelain']);\n if (statusOutput.trim()) {\n logger.info('PUBLISH_STASH_SAVING: Stashing uncommitted changes before checkout | Command: git stash push | Purpose: Protect changes during branch switch');\n await runSecure('git', ['stash', 'push', '-m', 'kodrdriv: stash before checkout target branch']);\n hasStashedChanges = true;\n logger.info('PUBLISH_STASH_SUCCESS: Successfully stashed uncommitted changes | Status: saved | Name: kodrdriv stash');\n }\n }\n\n try {\n // Wrap git checkout and pull with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git checkout ${targetBranch}`, isDryRun);\n }, `checkout ${targetBranch}`);\n\n // Sync target branch with remote to avoid conflicts during PR creation\n if (!isDryRun) {\n logger.info(`PUBLISH_TARGET_SYNCING: Syncing target branch with remote | Branch: ${targetBranch} | Remote: origin | Purpose: Avoid PR conflicts`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${targetBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await runGitWithLock(process.cwd(), async () => {\n await run(`git fetch origin ${targetBranch}`);\n await run(`git merge origin/${targetBranch} --no-edit`);\n }, `sync ${targetBranch}`);\n logger.info(`PUBLISH_TARGET_SYNCED: Successfully synced target with remote | Branch: ${targetBranch} | Remote: origin | Status: in-sync`);\n } else {\n logger.info(`PUBLISH_TARGET_NO_REMOTE: No remote target branch found | Branch: ${targetBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (syncError: any) {\n if (syncError.message && syncError.message.includes('CONFLICT')) {\n logger.error(`PUBLISH_SYNC_CONFLICTS: Merge conflicts during target sync | Branch: ${targetBranch} | Remote: origin | Status: conflicts-detected`);\n logger.error(`PUBLISH_SYNC_RESOLUTION: Manual conflict resolution steps:`);\n logger.error(` Step 1: Checkout target | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull and merge | Command: git pull origin ${targetBranch}`);\n logger.error(` Step 3: Resolve conflicts in files`);\n logger.error(` Step 4: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 5: Complete merge | Command: git commit`);\n logger.error(` Step 6: Return to branch | Command: git checkout ${currentBranch}`);\n logger.error(` Step 7: Resume publish | Command: kodrdriv publish`);\n throw syncError;\n } else {\n logger.warn(`PUBLISH_SYNC_WARNING: Could not sync target with remote | Branch: ${targetBranch} | Remote: origin | Error: ${syncError.message}`);\n // Continue with publish process, but log the warning\n }\n }\n } else {\n logger.info(`Would sync ${targetBranch} with remote to avoid PR conflicts`);\n }\n } catch (error: any) {\n // Check if this is a merge conflict or sync issue\n if (!isDryRun && (error.message.includes('conflict') ||\n error.message.includes('CONFLICT') ||\n error.message.includes('diverged') ||\n error.message.includes('non-fast-forward'))) {\n\n logger.error(`PUBLISH_TARGET_SYNC_FAILED: Failed to sync target branch with remote | Branch: ${targetBranch} | Remote: origin | Impact: Cannot proceed safely`);\n logger.error('');\n logger.error('PUBLISH_SYNC_RECOVERY_OPTIONS: Available recovery options:');\n logger.error(` OPTION_1_AUTO: Attempt automatic resolution | Command: kodrdriv publish --sync-target`);\n logger.error(` OPTION_2_MANUAL: Manually resolve conflicts:`);\n logger.error(` Step 1: Checkout target | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull from remote | Command: git pull origin ${targetBranch}`);\n logger.error(` Step 3: Resolve conflicts and commit`);\n logger.error(` Step 4: Re-run publish | Command: kodrdriv publish`);\n logger.error('');\n logger.error('PUBLISH_STOPPED_SAFETY: Publish process stopped | Reason: Prevent data loss | Status: safe-to-recover');\n\n throw new Error(`Target branch '${targetBranch}' sync failed. Use recovery options above to resolve.`);\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n\n // Restore stashed changes if we stashed them\n if (hasStashedChanges) {\n logger.info('PUBLISH_STASH_RESTORING: Restoring previously stashed changes | Command: git stash pop | Purpose: Restore working directory state');\n try {\n await runSecure('git', ['stash', 'pop']);\n logger.info('PUBLISH_STASH_RESTORED: Successfully restored stashed changes | Status: restored | Stash: removed');\n } catch (stashError: any) {\n logger.warn(`PUBLISH_STASH_RESTORE_FAILED: Could not restore stashed changes | Error: ${stashError.message} | Impact: Changes still in stash`);\n logger.warn('PUBLISH_STASH_AVAILABLE: Changes available in git stash | Command: git stash list | Purpose: View and restore manually');\n }\n }\n\n // Update package.json on target branch to release version and commit\n // This ensures the tag points to a commit with the correct release version\n if (!isDryRun) {\n logger.info(`PUBLISH_VERSION_UPDATE_TARGET: Updating package.json on target branch to release version | Version: ${newVersion} | Branch: ${targetBranch}`);\n\n // Read current package.json on target branch\n const targetPackageJsonContents = await storage.readFile('package.json', 'utf-8');\n const targetPackageJson = safeJsonParse(targetPackageJsonContents, 'package.json');\n\n // Check if version update is needed\n if (targetPackageJson.version !== newVersion) {\n logger.info(`PUBLISH_VERSION_MISMATCH: Version mismatch detected on target | Current: ${targetPackageJson.version} | Expected: ${newVersion} | Action: Updating`);\n\n // Update version in package.json\n targetPackageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(targetPackageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`PUBLISH_VERSION_UPDATED: Updated package.json version on target branch | Version: ${newVersion} | Branch: ${targetBranch}`);\n\n // Stage and commit the version update\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['add', 'package.json']);\n }, 'stage version update on target');\n\n // Check if there are staged changes before committing\n if (await Diff.hasStagedChanges()) {\n logger.info('PUBLISH_VERSION_COMMITTING: Committing version update to target branch | Purpose: Ensure tag points to correct version');\n await runGitWithLock(process.cwd(), async () => {\n await Commit.commit(runConfig);\n }, 'commit version update on target');\n logger.info('PUBLISH_VERSION_COMMITTED: Version update committed successfully');\n\n // Push the version update to remote\n logger.info(`PUBLISH_VERSION_PUSHING: Pushing version update to remote | Branch: ${targetBranch} | Remote: origin`);\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['push', 'origin', targetBranch]);\n }, `push version update to ${targetBranch}`);\n logger.info('PUBLISH_VERSION_PUSHED: Version update pushed to remote successfully');\n } else {\n logger.verbose('PUBLISH_VERSION_NO_CHANGES: No changes to commit (version already correct)');\n }\n } else {\n logger.info(`PUBLISH_VERSION_CORRECT: Version already correct on target branch | Version: ${newVersion} | Branch: ${targetBranch}`);\n }\n }\n\n // Now create and push the tag on the target branch\n logger.info('Creating release tag...');\n let tagName: string;\n if (isDryRun) {\n logger.info('Would read package.json version and create git tag');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n // Use the newVersion we just set instead of reading from package.json\n // This ensures consistency even if the file read fails\n tagName = `v${newVersion}`;\n\n // Check if tag already exists locally\n try {\n // Validate tag name to prevent injection\n if (!validateGitRef(tagName)) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n const { stdout } = await runSecure('git', ['tag', '-l', tagName]);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['tag', tagName]);\n }, `create tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n } catch (error) {\n // If git tag -l fails, create the tag anyway\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['tag', tagName]);\n }, `create tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n\n // Check if tag exists on remote before pushing\n let tagWasPushed = false;\n try {\n const { stdout } = await runSecure('git', ['ls-remote', 'origin', `refs/tags/${tagName}`]);\n if (stdout.trim()) {\n logger.info(`Tag ${tagName} already exists on remote, skipping push`);\n } else {\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['push', 'origin', tagName]);\n }, `push tag ${tagName}`);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n }\n } catch (error) {\n // If ls-remote fails, try to push anyway (might be a new remote)\n try {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n } catch (pushError: any) {\n if (pushError.message && pushError.message.includes('already exists')) {\n logger.info(`Tag ${tagName} already exists on remote, continuing...`);\n } else {\n throw pushError;\n }\n }\n }\n\n // If we just pushed a new tag, wait for GitHub to process it\n if (tagWasPushed) {\n logger.verbose('Waiting for GitHub to process the pushed tag...');\n await new Promise(resolve => setTimeout(resolve, 5000)); // 5 second delay\n }\n }\n\n logger.info('Creating GitHub release...');\n if (isDryRun) {\n logger.info('Would read package.json version and create GitHub release with retry logic');\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('Would close milestone for released version');\n } else {\n logger.info('Would skip milestone closure (--no-milestones)');\n }\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n\n // Create release with retry logic to handle GitHub tag processing delays\n let retries = 3;\n while (retries > 0) {\n try {\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n logger.info(`GitHub release created successfully for tag: ${tagName}`);\n\n // Close milestone for this version if enabled\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('PUBLISH_MILESTONE_CLOSING: Closing milestone for released version | Action: Close GitHub milestone | Purpose: Mark release complete');\n const version = tagName.replace(/^v/, ''); // Remove 'v' prefix if present\n await GitHub.closeMilestoneForVersion(version);\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n break; // Success - exit retry loop\n } catch (error: any) {\n // Check if this is a tag-not-found error that we can retry\n const isTagNotFoundError = error.message && (\n error.message.includes('not found') ||\n error.message.includes('does not exist') ||\n error.message.includes('Reference does not exist')\n );\n\n if (isTagNotFoundError && retries > 1) {\n logger.verbose(`Tag ${tagName} not yet available on GitHub, retrying in 3 seconds... (${retries - 1} retries left)`);\n await new Promise(resolve => setTimeout(resolve, 3000));\n retries--;\n } else if (isTagNotFoundError) {\n // Tag not found error and we're out of retries\n throw new Error(`Tag ${tagName} was not found on GitHub after ${3 - retries + 1} attempts. This may indicate a problem with tag creation or GitHub synchronization.`);\n } else {\n // Not a tag-not-found error - re-throw the original error\n throw error;\n }\n }\n }\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info('Waiting for release workflows...');\n if (isDryRun) {\n logger.info('Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || KODRDRIV_DEFAULTS.publish.releaseWorkflowsTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n // Get workflow names - either from config or auto-detect\n let workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n if (!workflowNames || workflowNames.length === 0) {\n logger.info('No specific workflow names configured, auto-detecting workflows triggered by release events...');\n try {\n workflowNames = await GitHub.getWorkflowsTriggeredByRelease();\n if (workflowNames.length === 0) {\n logger.info('No workflows found that are triggered by release events.');\n } else {\n logger.info(`Auto-detected release workflows: ${workflowNames.join(', ')}`);\n }\n } catch (error: any) {\n logger.warn(`Failed to auto-detect release workflows: ${error.message}`);\n workflowNames = undefined; // Fall back to monitoring all workflows\n }\n }\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose('Skipping waiting for release workflows (disabled in config).');\n }\n\n // Switch back to source branch and sync with target\n logger.info('');\n logger.info(`PUBLISH_POST_SYNC: Syncing source branch with target after publish | Purpose: Keep branches synchronized | Strategy: Reset and force push`);\n await runWithDryRunSupport(`git checkout ${currentBranch}`, isDryRun);\n\n if (!isDryRun) {\n // Sync target into source\n // Note: With squash merging, fast-forward will fail because commit histories diverge\n if (mergeMethod === 'squash') {\n // For squash merges, reset to target branch to avoid conflicts\n // The squash merge created a single commit on target that represents all source commits\n logger.info(`Resetting ${currentBranch} to ${targetBranch} (squash merge)...`);\n await run(`git reset --hard ${targetBranch}`);\n logger.info(`PUBLISH_BRANCH_RESET: Reset source branch to target | Source: ${currentBranch} | Target: ${targetBranch} | Status: synchronized`);\n\n // After squash merge and reset, we need to force push\n // This is safe because we just merged to main and are syncing working branch\n logger.info(`PUBLISH_FORCE_PUSHING: Force pushing synchronized branch | Branch: ${currentBranch} | Remote: origin | Purpose: Complete post-publish sync`);\n\n try {\n // Verify that remote working branch is ancestor of main (safety check)\n try {\n await run(`git fetch origin ${currentBranch}`, { suppressErrorLogging: true });\n await run(`git merge-base --is-ancestor origin/${currentBranch} ${targetBranch}`, { suppressErrorLogging: true });\n logger.verbose(`✓ Safety check passed: origin/${currentBranch} is ancestor of ${targetBranch}`);\n } catch {\n // Remote branch might not exist yet, or already in sync - both OK\n logger.verbose(`Remote ${currentBranch} does not exist or is already synced`);\n }\n\n // Use --force-with-lease for safer force push\n await run(`git push --force-with-lease origin ${currentBranch}`);\n logger.info(`PUBLISH_FORCE_PUSH_SUCCESS: Successfully force pushed to remote | Branch: ${currentBranch} | Remote: origin | Status: synchronized`);\n } catch (pushError: any) {\n // If force push fails, provide helpful message\n logger.warn(`PUBLISH_FORCE_PUSH_FAILED: Could not force push branch | Branch: ${currentBranch} | Remote: origin | Error: ${pushError.message}`);\n logger.warn(`PUBLISH_MANUAL_PUSH_NEEDED: Manual force push required | Action: Push manually`);\n logger.warn(`PUBLISH_MANUAL_PUSH_COMMAND: Force push command | Command: git push --force-with-lease origin ${currentBranch}`);\n }\n } else {\n // For merge/rebase methods, try to merge target back into source\n logger.info(`PUBLISH_MERGE_TARGET_BACK: Merging target back into source | Target: ${targetBranch} | Source: ${currentBranch} | Purpose: Sync branches after publish`);\n\n // Try fast-forward first (works with merge/rebase methods)\n // Use runSecure to avoid error output for expected failure\n let fastForwardSucceeded = false;\n try {\n await runSecure('git', ['merge', targetBranch, '--ff-only']);\n fastForwardSucceeded = true;\n logger.info(`PUBLISH_MERGE_FF_SUCCESS: Fast-forward merged target into source | Target: ${targetBranch} | Source: ${currentBranch} | Status: merged`);\n } catch {\n logger.verbose(`Fast-forward merge not possible, performing regular merge...`);\n }\n\n if (!fastForwardSucceeded) {\n await run(`git merge ${targetBranch} --no-edit`);\n logger.info(`PUBLISH_MERGE_SUCCESS: Merged target into source | Target: ${targetBranch} | Source: ${currentBranch} | Status: merged`);\n }\n }\n\n // Determine version bump based on branch configuration\n let versionCommand = 'prepatch'; // Default\n let versionTag = 'dev'; // Default\n\n if (branchDependentVersioning && runConfig.branches) {\n const sourceBranchConfig = runConfig.branches[currentBranch];\n if (sourceBranchConfig?.version) {\n // Use configured version strategy for source branch\n if (sourceBranchConfig.version.incrementLevel) {\n versionCommand = `pre${sourceBranchConfig.version.incrementLevel}`;\n }\n if (sourceBranchConfig.version.tag) {\n versionTag = sourceBranchConfig.version.tag;\n }\n }\n }\n\n // Bump to next development version\n // Note: We manually update package.json instead of using npm version to avoid\n // npm's automatic \"git add package.json package-lock.json\" which fails when\n // package-lock.json is gitignored\n logger.info(`PUBLISH_DEV_VERSION_BUMPING: Bumping to next development version | Tag: ${versionTag} | Purpose: Prepare for next cycle`);\n try {\n // Read current package.json\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n const currentVer = validatedPkgJson.version;\n\n // Import incrementPrereleaseVersion from core\n const { incrementPrereleaseVersion } = await import('@grunnverk/core');\n // After publishing a release version, we need to increment the patch first,\n // then add the prerelease tag. This ensures we don't go back to the same dev version.\n // Example: 1.0.1-dev.0 -> publish 1.0.1 -> increment to 1.0.2-dev.0 (not 1.0.1-dev.0)\n const incrementedPatchVersion = incrementPatchVersion(currentVer);\n const newVersion = incrementPrereleaseVersion(incrementedPatchVersion, versionTag);\n\n // Update package.json with new version\n validatedPkgJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(validatedPkgJson, null, 2) + '\\n', 'utf-8');\n\n logger.info(`PUBLISH_DEV_VERSION_BUMPED: Version bumped successfully | New Version: ${newVersion} | Type: development | Status: completed`);\n\n // Manually commit the version bump (package-lock.json is ignored)\n await runGitWithLock(process.cwd(), async () => {\n await run('git add package.json');\n await run(`git commit -m \"chore: bump to ${newVersion}\"`);\n }, 'commit dev version bump');\n } catch (versionError: any) {\n logger.warn(`PUBLISH_DEV_VERSION_BUMP_FAILED: Failed to bump version | Error: ${versionError.message} | Impact: Version not updated`);\n logger.warn('PUBLISH_MANUAL_VERSION_BUMP: Manual version bump may be needed | Action: Bump manually for next cycle | Command: npm version');\n }\n\n // Push updated source branch\n logger.info(`PUBLISH_PUSH_SOURCE: Pushing updated source branch | Branch: ${currentBranch} | Remote: origin | Purpose: Push development version`);\n try {\n await runGitWithLock(process.cwd(), async () => {\n await run(`git push origin ${currentBranch}`);\n }, `push ${currentBranch}`);\n logger.info(`PUBLISH_PUSH_SOURCE_SUCCESS: Pushed source branch successfully | Branch: ${currentBranch} | Remote: origin | Status: pushed`);\n } catch (pushError: any) {\n logger.warn(`PUBLISH_PUSH_SOURCE_FAILED: Failed to push source branch | Branch: ${currentBranch} | Error: ${pushError.message} | Impact: Need manual push`);\n logger.warn(`PUBLISH_MANUAL_PUSH_COMMAND: Manual push command | Command: git push origin ${currentBranch}`);\n }\n } else {\n logger.info(`PUBLISH_MERGE_DRY_RUN: Would merge target into source | Mode: dry-run | Target: ${targetBranch} | Source: ${currentBranch} | Strategy: ff-only`);\n logger.info(`PUBLISH_VERSION_DRY_RUN: Would bump version to next development | Mode: dry-run | Action: Version bump`);\n logger.info(`PUBLISH_PUSH_DRY_RUN: Would push source to remote | Mode: dry-run | Branch: ${currentBranch} | Remote: origin`);\n }\n\n logger.info('');\n logger.info(`PUBLISH_COMPLETE: Publish workflow completed successfully | Branch: ${currentBranch} | Status: completed | Version: next-development`);\n};\n","/**\n * Comprehensive pre-flight validation for publish operations\n *\n * Runs ALL validation checks and collects ALL issues before reporting,\n * allowing users to fix multiple problems at once rather than one at a time.\n */\n\nimport { run } from '@grunnverk/git-tools';\nimport { getLogger, ValidationError } from '@grunnverk/core';\nimport { createStorage } from '@grunnverk/shared';\nimport path from 'path';\nimport type { Config } from '@grunnverk/core';\n\nexport interface ValidationIssue {\n check: string;\n message: string;\n files?: string[];\n suggestion?: string;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationIssue[];\n warnings: ValidationIssue[];\n}\n\n/**\n * Run comprehensive pre-flight validation\n */\nexport async function runPreflightValidation(\n runConfig: Config,\n targetBranch?: string\n): Promise<ValidationResult> {\n const result: ValidationResult = {\n valid: true,\n errors: [],\n warnings: []\n };\n\n const isDryRun = runConfig.dryRun || false;\n\n // Run all checks in parallel to collect all issues at once\n await Promise.all([\n checkGitRepository(result, isDryRun),\n checkGitStatus(result, isDryRun),\n checkCurrentBranch(result, targetBranch, isDryRun),\n checkTargetBranchSync(result, targetBranch, isDryRun),\n checkScripts(result, isDryRun),\n checkWorkspaceStructure(result, runConfig, isDryRun),\n checkCredentials(result, runConfig, isDryRun),\n ]);\n\n result.valid = result.errors.length === 0;\n return result;\n}\n\n/**\n * Check if we're in a git repository\n */\nasync function checkGitRepository(result: ValidationResult, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun) {\n await run('git rev-parse --git-dir');\n }\n } catch {\n result.errors.push({\n check: 'git_repository',\n message: 'Not in a git repository or git command failed',\n suggestion: 'Please run this command from within a git repository'\n });\n }\n}\n\n/**\n * Check for uncommitted changes\n */\nasync function checkGitStatus(result: ValidationResult, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun) {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n const files = stdout.trim().split('\\n').map(line => line.substring(3).trim());\n result.errors.push({\n check: 'git_status',\n message: 'Working directory has uncommitted changes',\n files: files,\n suggestion: 'Please commit or stash your changes before running publish'\n });\n }\n }\n } catch (error: any) {\n result.errors.push({\n check: 'git_status',\n message: `Failed to check git status: ${error.message}`,\n suggestion: 'Ensure you are in a valid git repository and try again'\n });\n }\n}\n\n/**\n * Check that we're not running from the target branch\n */\nasync function checkCurrentBranch(result: ValidationResult, targetBranch: string | undefined, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun && targetBranch) {\n const { stdout } = await run('git branch --show-current');\n const currentBranch = stdout.trim();\n\n if (currentBranch === targetBranch) {\n result.errors.push({\n check: 'current_branch',\n message: `Cannot run publish from the target branch '${targetBranch}'`,\n suggestion: 'Please switch to a different branch before running publish'\n });\n }\n }\n } catch (error: any) {\n result.errors.push({\n check: 'current_branch',\n message: `Failed to check current branch: ${error.message}`\n });\n }\n}\n\n/**\n * Check target branch sync with remote\n */\nasync function checkTargetBranchSync(result: ValidationResult, targetBranch: string | undefined, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun && targetBranch) {\n // Check if local target branch exists\n try {\n await run(`git rev-parse --verify ${targetBranch}`);\n\n // Check if in sync with remote\n const { stdout: localSha } = await run(`git rev-parse ${targetBranch}`);\n const { stdout: remoteSha } = await run(`git rev-parse origin/${targetBranch}`);\n\n if (localSha.trim() !== remoteSha.trim()) {\n result.warnings.push({\n check: 'target_branch_sync',\n message: `Target branch '${targetBranch}' is not in sync with remote`,\n suggestion: `Run: git checkout ${targetBranch} && git pull origin ${targetBranch}`\n });\n }\n } catch {\n // Branch doesn't exist locally - that's okay\n }\n }\n } catch (error: any) {\n // Non-critical - just warn\n result.warnings.push({\n check: 'target_branch_sync',\n message: `Could not verify target branch sync: ${error.message}`\n });\n }\n}\n\n/**\n * Check for required scripts in package.json\n */\nasync function checkScripts(result: ValidationResult, _isDryRun: boolean): Promise<void> {\n const storage = createStorage();\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n try {\n if (!await storage.exists(packageJsonPath)) {\n result.errors.push({\n check: 'package_json',\n message: 'package.json not found in current directory',\n files: [packageJsonPath]\n });\n return;\n }\n\n const content = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(content);\n\n if (!packageJson.scripts?.prepublishOnly) {\n result.errors.push({\n check: 'prepublish_script',\n message: 'prepublishOnly script is required in package.json but was not found',\n files: [packageJsonPath],\n suggestion: 'Add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test)'\n });\n }\n } catch (error: any) {\n result.errors.push({\n check: 'package_json',\n message: `Failed to check package.json: ${error.message}`,\n files: [packageJsonPath]\n });\n }\n}\n\n/**\n * Check workspace structure (for tree operations)\n */\nasync function checkWorkspaceStructure(result: ValidationResult, runConfig: Config, _isDryRun: boolean): Promise<void> {\n // Only check if this looks like a tree operation\n if (runConfig.tree) {\n const storage = createStorage();\n const rootPath = process.cwd();\n const packageJsonPath = path.join(rootPath, 'package.json');\n\n try {\n if (!await storage.exists(packageJsonPath)) {\n result.errors.push({\n check: 'workspace_structure',\n message: 'No package.json found at workspace root',\n files: [packageJsonPath],\n suggestion: 'Expected workspace root with package.json containing \"workspaces\" field'\n });\n }\n } catch (error: any) {\n result.warnings.push({\n check: 'workspace_structure',\n message: `Could not verify workspace structure: ${error.message}`\n });\n }\n }\n}\n\n/**\n * Check for required environment variables\n */\nasync function checkCredentials(result: ValidationResult, runConfig: Config, _isDryRun: boolean): Promise<void> {\n const requiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const missingVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingVars.push(envVar);\n }\n }\n\n if (missingVars.length > 0) {\n if (_isDryRun) {\n result.warnings.push({\n check: 'environment_variables',\n message: `Required environment variables not set: ${missingVars.join(', ')}`,\n suggestion: 'Would fail in real publish. Please set these environment variables.'\n });\n } else {\n result.errors.push({\n check: 'environment_variables',\n message: `Missing required environment variables: ${missingVars.join(', ')}`,\n suggestion: 'Please set these environment variables before running publish'\n });\n }\n }\n}\n\n/**\n * Log validation results\n */\nexport function logValidationResults(result: ValidationResult): void {\n const logger = getLogger();\n\n if (result.errors.length > 0) {\n logger.error('');\n logger.error('VALIDATION_FAILED: Pre-flight validation failed | Errors: ' + result.errors.length + ' | Status: cannot-proceed');\n logger.error('');\n logger.error('VALIDATION_ERRORS: The following issues must be fixed:');\n result.errors.forEach((error, idx) => {\n logger.error(` ${idx + 1}. [${error.check}] ${error.message}`);\n if (error.files && error.files.length > 0) {\n logger.error(` Files: ${error.files.join(', ')}`);\n }\n if (error.suggestion) {\n logger.error(` → ${error.suggestion}`);\n }\n });\n logger.error('');\n }\n\n if (result.warnings.length > 0) {\n logger.warn('');\n logger.warn('VALIDATION_WARNINGS: Pre-flight validation warnings | Warnings: ' + result.warnings.length + ' | Status: proceed-with-caution');\n logger.warn('');\n result.warnings.forEach((warning, idx) => {\n logger.warn(` ${idx + 1}. [${warning.check}] ${warning.message}`);\n if (warning.suggestion) {\n logger.warn(` → ${warning.suggestion}`);\n }\n });\n logger.warn('');\n }\n\n if (result.valid) {\n logger.info('VALIDATION_PASSED: All pre-flight validation checks passed | Status: ready-to-proceed');\n }\n}\n\n/**\n * Throw ValidationError if validation failed\n */\nexport function throwIfValidationFailed(result: ValidationResult): void {\n if (!result.valid) {\n throw new ValidationError(\n `Pre-flight validation failed with ${result.errors.length} error(s)`,\n {\n phase: 'pre_flight_validation'\n },\n result.errors,\n result.warnings\n );\n }\n}\n","/**\n * Dry-run reporting for publish operations\n *\n * Provides comprehensive preview of what would happen during publish\n */\n\nimport { getLogger } from '@grunnverk/core';\n\nexport interface DryRunReport {\n operations: Array<{\n step: string;\n command?: string;\n files?: Array<{\n path: string;\n changes: string;\n }>;\n description: string;\n }>;\n versionChanges: {\n current: string;\n proposed: string;\n };\n tags: string[];\n npmPublish: {\n package: string;\n version: string;\n files: string[];\n };\n prDetails?: {\n title: string;\n targetBranch: string;\n sourceBranch: string;\n };\n}\n\nexport interface TreeDryRunReport {\n packages: Array<{\n name: string;\n order: number;\n dependencies: string[];\n operations: string[];\n versionChange?: {\n from: string;\n to: string;\n };\n }>;\n dependencyUpdates: Array<{\n package: string;\n dependency: string;\n from: string;\n to: string;\n }>;\n buildOrder: string[];\n}\n\n/**\n * Log dry-run report for single package publish\n */\nexport function logDryRunReport(report: DryRunReport): void {\n const logger = getLogger();\n\n logger.info('');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n\n // Version changes\n logger.info('📦 VERSION CHANGES:');\n logger.info(` Current: ${report.versionChanges.current}`);\n logger.info(` Proposed: ${report.versionChanges.proposed}`);\n logger.info('');\n\n // Operations\n logger.info('🔧 OPERATIONS TO BE PERFORMED:');\n report.operations.forEach((op, idx) => {\n logger.info(` ${idx + 1}. ${op.step}`);\n logger.info(` ${op.description}`);\n if (op.command) {\n logger.info(` Command: ${op.command}`);\n }\n if (op.files && op.files.length > 0) {\n logger.info(' Files:');\n op.files.forEach(file => {\n logger.info(` - ${file.path}`);\n if (file.changes) {\n logger.info(` ${file.changes}`);\n }\n });\n }\n });\n logger.info('');\n\n // Tags\n if (report.tags.length > 0) {\n logger.info('🏷️ TAGS TO BE CREATED:');\n report.tags.forEach(tag => {\n logger.info(` - ${tag}`);\n });\n logger.info('');\n }\n\n // NPM publish\n logger.info('📤 NPM PUBLISH:');\n logger.info(` Package: ${report.npmPublish.package}`);\n logger.info(` Version: ${report.npmPublish.version}`);\n if (report.npmPublish.files.length > 0) {\n logger.info(' Files to be published:');\n report.npmPublish.files.forEach(file => {\n logger.info(` - ${file}`);\n });\n }\n logger.info('');\n\n // PR details\n if (report.prDetails) {\n logger.info('🔀 PULL REQUEST:');\n logger.info(` Title: ${report.prDetails.title}`);\n logger.info(` Source: ${report.prDetails.sourceBranch}`);\n logger.info(` Target: ${report.prDetails.targetBranch}`);\n logger.info('');\n }\n\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' END DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n logger.info('ℹ️ This was a dry run. No actual changes were made.');\n logger.info(' To execute these operations, run without --dry-run flag.');\n logger.info('');\n}\n\n/**\n * Log dry-run report for tree operations\n */\nexport function logTreeDryRunReport(report: TreeDryRunReport): void {\n const logger = getLogger();\n\n logger.info('');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' TREE DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n\n // Build order\n logger.info('📦 PACKAGE BUILD ORDER:');\n logger.info(` Total packages: ${report.buildOrder.length}`);\n logger.info(' Execution order:');\n report.buildOrder.forEach((pkg, idx) => {\n logger.info(` ${idx + 1}. ${pkg}`);\n });\n logger.info('');\n\n // Package details\n logger.info('🔧 PACKAGE OPERATIONS:');\n report.packages.forEach(pkg => {\n logger.info(` [${pkg.order}] ${pkg.name}`);\n if (pkg.dependencies.length > 0) {\n logger.info(` Dependencies: ${pkg.dependencies.join(', ')}`);\n }\n if (pkg.versionChange) {\n logger.info(` Version: ${pkg.versionChange.from} → ${pkg.versionChange.to}`);\n }\n if (pkg.operations.length > 0) {\n logger.info(' Operations:');\n pkg.operations.forEach(op => {\n logger.info(` - ${op}`);\n });\n }\n logger.info('');\n });\n\n // Dependency updates\n if (report.dependencyUpdates.length > 0) {\n logger.info('🔗 INTER-PROJECT DEPENDENCY UPDATES:');\n report.dependencyUpdates.forEach(update => {\n logger.info(` ${update.package}`);\n logger.info(` ${update.dependency}: ${update.from} → ${update.to}`);\n });\n logger.info('');\n }\n\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' END TREE DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n logger.info('ℹ️ This was a dry run. No actual changes were made.');\n logger.info(' To execute these operations, run without --dry-run flag.');\n logger.info('');\n}\n\n/**\n * Create a dry-run report for a single package publish\n */\nexport function createDryRunReport(\n currentVersion: string,\n proposedVersion: string,\n packageName: string,\n operations: DryRunReport['operations'],\n targetBranch?: string,\n sourceBranch?: string\n): DryRunReport {\n return {\n operations,\n versionChanges: {\n current: currentVersion,\n proposed: proposedVersion\n },\n tags: [`v${proposedVersion}`],\n npmPublish: {\n package: packageName,\n version: proposedVersion,\n files: [] // Would be populated by analyzing package.json files field\n },\n prDetails: targetBranch && sourceBranch ? {\n title: `Release ${proposedVersion}`,\n targetBranch,\n sourceBranch\n } : undefined\n };\n}\n","/**\n * Checkpoint System for Publish Recovery\n *\n * Saves state at critical points during publish to enable recovery from failures.\n * Checkpoints are saved locally and help determine the appropriate recovery strategy.\n */\n\nimport { getLogger } from '@grunnverk/core';\nimport { createStorage } from '@grunnverk/shared';\nimport path from 'path';\n\nconst logger = getLogger();\n\n/**\n * Phases of the publish workflow\n */\nexport type PublishPhase =\n | 'initialized' // Publish command started\n | 'validated' // Pre-publish validation passed\n | 'pr-created' // Pull request created\n | 'pr-merged' // Pull request merged to main\n | 'tagged' // Git tag created\n | 'npm-publishing' // npm publish in progress\n | 'npm-published' // npm publish completed\n | 'completed' // Entire workflow completed\n | 'failed'; // Workflow failed\n\n/**\n * Checkpoint data structure\n */\nexport interface PublishCheckpoint {\n /** Current phase of the publish workflow */\n phase: PublishPhase;\n\n /** Timestamp when checkpoint was created */\n timestamp: string;\n\n /** Package name */\n packageName: string;\n\n /** Target version being published */\n version: string;\n\n /** Current git branch */\n branch: string;\n\n /** Working directory */\n workingDirectory: string;\n\n /** Pull request number (if created) */\n prNumber?: number;\n\n /** Pull request URL (if created) */\n prUrl?: string;\n\n /** Git tags created during this publish */\n tags: string[];\n\n /** Whether npm publish completed successfully */\n npmPublished: boolean;\n\n /** GitHub workflow run ID (if available) */\n workflowRunId?: string;\n\n /** GitHub workflow run URL (if available) */\n workflowRunUrl?: string;\n\n /** Error message if failed */\n error?: string;\n\n /** Additional metadata */\n metadata?: {\n targetBranch?: string;\n fromBranch?: string;\n commitSha?: string;\n [key: string]: any;\n };\n}\n\n/**\n * Get the checkpoint file path for a directory\n */\nfunction getCheckpointPath(workingDirectory: string): string {\n return path.join(workingDirectory, '.kodrdriv-publish-checkpoint.json');\n}\n\n/**\n * Save a checkpoint\n */\nexport async function saveCheckpoint(checkpoint: PublishCheckpoint): Promise<void> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(checkpoint.workingDirectory);\n\n try {\n await storage.writeFile(\n checkpointPath,\n JSON.stringify(checkpoint, null, 2),\n 'utf-8'\n );\n\n logger.debug(`CHECKPOINT_SAVED: Saved publish checkpoint | Phase: ${checkpoint.phase} | Package: ${checkpoint.packageName} | Version: ${checkpoint.version}`);\n } catch (error: any) {\n logger.warn(`CHECKPOINT_SAVE_FAILED: Failed to save checkpoint | Error: ${error.message}`);\n }\n}\n\n/**\n * Load the most recent checkpoint\n */\nexport async function loadCheckpoint(workingDirectory: string): Promise<PublishCheckpoint | null> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(workingDirectory);\n\n try {\n if (!await storage.exists(checkpointPath)) {\n return null;\n }\n\n const content = await storage.readFile(checkpointPath, 'utf-8');\n const checkpoint = JSON.parse(content) as PublishCheckpoint;\n\n logger.debug(`CHECKPOINT_LOADED: Loaded publish checkpoint | Phase: ${checkpoint.phase} | Package: ${checkpoint.packageName} | Version: ${checkpoint.version}`);\n\n return checkpoint;\n } catch (error: any) {\n logger.warn(`CHECKPOINT_LOAD_FAILED: Failed to load checkpoint | Error: ${error.message}`);\n return null;\n }\n}\n\n/**\n * Delete checkpoint (cleanup after successful publish)\n */\nexport async function deleteCheckpoint(workingDirectory: string): Promise<void> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(workingDirectory);\n\n try {\n if (await storage.exists(checkpointPath)) {\n await storage.deleteFile(checkpointPath);\n logger.debug('CHECKPOINT_DELETED: Removed publish checkpoint after successful completion');\n }\n } catch (error: any) {\n logger.warn(`CHECKPOINT_DELETE_FAILED: Failed to delete checkpoint | Error: ${error.message}`);\n }\n}\n\n/**\n * Update an existing checkpoint with new data\n */\nexport async function updateCheckpoint(\n workingDirectory: string,\n updates: Partial<PublishCheckpoint>\n): Promise<void> {\n const existing = await loadCheckpoint(workingDirectory);\n\n if (!existing) {\n logger.warn('CHECKPOINT_UPDATE_FAILED: No existing checkpoint to update');\n return;\n }\n\n const updated: PublishCheckpoint = {\n ...existing,\n ...updates,\n timestamp: new Date().toISOString(),\n };\n\n await saveCheckpoint(updated);\n}\n\n/**\n * Analyze checkpoint to determine recovery strategy\n */\nexport interface RecoveryStrategy {\n /** Can this publish be recovered? */\n recoverable: boolean;\n\n /** Recommended recovery action */\n action: 'rollback' | 'fix-forward' | 'reset' | 'continue' | 'none';\n\n /** Human-readable explanation */\n explanation: string;\n\n /** Detailed recovery steps */\n steps: string[];\n\n /** Risks of the recovery action */\n risks: string[];\n}\n\n/**\n * Determine the appropriate recovery strategy based on checkpoint\n */\nexport function analyzeRecoveryStrategy(checkpoint: PublishCheckpoint): RecoveryStrategy {\n const phase = checkpoint.phase;\n\n // Phase: initialized, validated, pr-created\n // These are safe - nothing permanent has happened yet\n if (phase === 'initialized' || phase === 'validated' || phase === 'pr-created') {\n return {\n recoverable: true,\n action: 'continue',\n explanation: 'Publish can be continued or restarted safely',\n steps: [\n 'Fix any issues that caused the failure',\n 'Run: kodrdriv publish --continue',\n 'Or restart: kodrdriv publish'\n ],\n risks: ['None - no permanent changes have been made']\n };\n }\n\n // Phase: pr-merged (but not published)\n // This is the danger zone - merge is permanent but npm publish hasn't happened\n if (phase === 'pr-merged' && !checkpoint.npmPublished) {\n return {\n recoverable: true,\n action: 'rollback',\n explanation: 'PR merged but npm publish failed - can rollback the merge',\n steps: [\n 'Revert the merge commit on main branch',\n 'Delete any git tags that were created',\n 'Reset working branch to clean state',\n 'Increment version for next attempt',\n 'Run: kodrdriv publish --rollback'\n ],\n risks: [\n 'Creates a revert commit in main branch history',\n 'Any work based on the merge will need to be rebased',\n 'Tags will be deleted and recreated on next publish'\n ]\n };\n }\n\n // Phase: tagged, npm-publishing (but not completed)\n // Tags exist but npm publish incomplete\n if ((phase === 'tagged' || phase === 'npm-publishing') && !checkpoint.npmPublished) {\n return {\n recoverable: true,\n action: 'rollback',\n explanation: 'Tags created but npm publish incomplete - can rollback',\n steps: [\n 'Delete git tags',\n 'Revert merge commit if it exists',\n 'Reset working branch',\n 'Increment version',\n 'Run: kodrdriv publish --rollback'\n ],\n risks: [\n 'Tags will be deleted and recreated',\n 'Merge commit will be reverted if it exists'\n ]\n };\n }\n\n // Phase: npm-published or completed\n // Package is published - can't rollback npm\n if (checkpoint.npmPublished || phase === 'npm-published' || phase === 'completed') {\n return {\n recoverable: false,\n action: 'fix-forward',\n explanation: 'Package already published to npm - must fix forward',\n steps: [\n 'Package is live on npm - cannot unpublish',\n 'If there are issues, publish a patch version',\n 'Run: kodrdriv publish --target-version patch',\n 'Or manually fix and increment version'\n ],\n risks: [\n 'Cannot undo npm publish',\n 'Must publish new version to fix issues'\n ]\n };\n }\n\n // Phase: failed (generic failure)\n if (phase === 'failed') {\n // Determine based on what was completed\n if (checkpoint.npmPublished) {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'npm-published' });\n } else if (checkpoint.prNumber) {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'pr-merged' });\n } else {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'initialized' });\n }\n }\n\n // Unknown phase or state\n return {\n recoverable: false,\n action: 'none',\n explanation: 'Unable to determine recovery strategy from checkpoint',\n steps: [\n 'Manually inspect the repository state',\n 'Check: git status, git log, npm view <package>',\n 'Determine what was completed',\n 'Contact support if needed'\n ],\n risks: ['Manual intervention required']\n };\n}\n\n/**\n * Get a human-readable summary of the checkpoint\n */\nexport function getCheckpointSummary(checkpoint: PublishCheckpoint): string {\n const lines: string[] = [];\n\n lines.push('='.repeat(60));\n lines.push('Publish Checkpoint Summary');\n lines.push('='.repeat(60));\n lines.push('');\n lines.push(`Package: ${checkpoint.packageName}`);\n lines.push(`Version: ${checkpoint.version}`);\n lines.push(`Phase: ${checkpoint.phase}`);\n lines.push(`Branch: ${checkpoint.branch}`);\n lines.push(`Timestamp: ${checkpoint.timestamp}`);\n lines.push('');\n\n if (checkpoint.prNumber) {\n lines.push(`Pull Request: #${checkpoint.prNumber}`);\n if (checkpoint.prUrl) {\n lines.push(`PR URL: ${checkpoint.prUrl}`);\n }\n }\n\n if (checkpoint.tags.length > 0) {\n lines.push(`Tags Created: ${checkpoint.tags.join(', ')}`);\n }\n\n if (checkpoint.npmPublished) {\n lines.push('✅ npm Published: Yes');\n } else {\n lines.push('❌ npm Published: No');\n }\n\n if (checkpoint.workflowRunUrl) {\n lines.push(`Workflow: ${checkpoint.workflowRunUrl}`);\n }\n\n if (checkpoint.error) {\n lines.push('');\n lines.push('Error:');\n lines.push(` ${checkpoint.error}`);\n }\n\n lines.push('');\n lines.push('='.repeat(60));\n\n return lines.join('\\n');\n}\n\n/**\n * Check if a checkpoint indicates a failed publish\n */\nexport function isFailedPublish(checkpoint: PublishCheckpoint): boolean {\n return checkpoint.phase === 'failed' ||\n (checkpoint.phase === 'pr-merged' && !checkpoint.npmPublished) ||\n (checkpoint.phase === 'tagged' && !checkpoint.npmPublished) ||\n (checkpoint.phase === 'npm-publishing' && !checkpoint.npmPublished);\n}\n"],"names":["createRetroactiveTags","workingBranch","isDryRun","logger","tagPrefix","info","stdout","run","commits","trim","split","devCommits","filter","line","test","length","tagsCreated","tagsSkipped","commitLine","sha","messageParts","message","join","versionMatch","match","releaseVersion","workingTagName","tagExistsResult","tagExists","push","verbose","substring","forEach","tag","error","warn","execute","runConfig","dryRun","getDryRunLogger","currentBranch","getCurrentBranch","branches","configuredDevBranch","findDevelopmentBranch","branchCreated","branchUpdated","alreadyOnBranch","mergedDevelopmentIntoWorking","allBranchConfig","KODRDRIV_DEFAULTS","prereleaseTag","incrementLevel","development","targetVersion","includes","replace","Error","workingBranchConfig","version","gitStatus","workingBranchExists","localBranchExists","remoteExists","then","catch","targetBranch","targetBranchExists","mergeError","developmentBranchExists","workingTagPrefix","fs","packageJson","JSON","parse","readFile","currentVersion","baseVersion","getNpmPublishedVersion","publishedVersion","name","debug","tagWorkingBranch","isReleaseVersion","storage","createStorage","targetPackageResult","targetPackageJson","safeJsonParse","validatedTargetPkg","validatePackageJson","pkgJsonContents","pkgJson","validatedPkgJson","newVersion","incrementPatchVersion","incrementMinorVersion","incrementMajorVersion","cleanVersion","writeFile","stringify","DEFAULT_EXCLUDE_SUBPROJECTS","checkGitignorePatterns","directory","checks","getLogger","gitignorePath","path","requiredPatterns","access","gitignore","passed","issues","gitignoreContent","gitignoreLines","map","startsWith","missingPatterns","pattern","found","some","basePattern","endsWith","slice","lineBase","criticalMissing","p","config","tree","directories","process","cwd","validateRelease","validateReleaseWorkflow","excludedPatterns","normalized","packageJsonFiles","scanForPackageJsonFiles","isTree","branch","remoteSync","mergeConflicts","warnings","devVersion","linkStatus","openPRs","releaseWorkflow","packagesToCheck","localPackageNames","Set","pkgJsonPath","pkgJsonContent","add","pkgDir","dirname","pkgName","basename","getGitStatusSummary","statusOutput","count","statusAfterMerge","suppressErrorLogging","stderr","isDevelopmentVersion","dependencies","devDependencies","linkedDeps","getLinkedDependencies","allDeps","localDeps","Object","keys","dep","has","unlinkedLocal","repository","url","repoUrl","owner","repo","octokit","getOctokit","data","pulls","list","state","head","pr","prInfo","number","title","html_url","prError","status","buildError","testError","publishError","env","NPM_TOKEN","workflowPath","allPassed","hasWarnings","summary","repeat","issue","warning","readContextFiles","contextFiles","contextParts","filePath","content","editReleaseNotesInteractively","releaseSummary","templateLines","body","result","editContentInEditor","lines","improveReleaseNotesWithLLM","promptConfig","promptContext","outputDirectory","logContent","diffContent","releaseNotesContent","userFeedback","getLLMFeedbackInEditor","improvementConfig","contentType","createImprovedPrompt","currentSummary","aiConfig","improvementPromptContent","releaseFocus","promptResult","createReleasePrompt","toAIConfig","modelToUse","commands","release","model","Formatter","create","formatPrompt","prompt","callLLM","request","aiStorageAdapter","createStorageAdapter","aiLogger","createLoggerAdapter","openaiReasoning","reasoning","createCompletionWithRetry","messages","responseFormat","type","debugRequestFile","getOutputPath","getTimestampedRequestFilename","debugResponseFile","getTimestampedResponseFilename","processResponse","response","validateReleaseSummary","improveContentWithLLM","generateSelfReflection","agenticResult","timestamp","Date","toISOString","reflectionPath","report","generateReflectionReport","iterations","toolCallsExecuted","maxIterations","toolMetrics","conversationHistory","releaseNotes","toolCalls","uniqueTools","m","size","handleInteractiveReleaseFeedback","userChoice","getUserChoice","STANDARD_CHOICES","CONFIRM","EDIT","SKIP","IMPROVE","nonTtyErrorSuggestions","action","finalSummary","fromRef","from","getDefaultFromRef","fromMain","toRef","to","DEFAULT_TO_COMMIT_ALIAS","log","Log","limit","messageLimit","maxDiffBytes","DEFAULT_MAX_DIFF_BYTES","diff","Diff","DEFAULT_EXCLUDED_PATTERNS","get","overridePaths","discoveredConfigDirs","overrides","determineVersionsForMilestones","versions","packageJsonContents","publish","milestoneIssuesContent","milestonesEnabled","noMilestones","GitHub","getMilestoneIssuesForRelease","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","contextFromFiles","combinedContext","context","Boolean","runAgenticRelease","milestoneIssues","focus","userContext","undefined","maxAgenticIterations","selfReflection","titleFilterResult","filterContent","stopContext","bodyFilterResult","filtered","interactive","requireTTY","interactivePromptContext","contextDirectories","interactiveResult","timestampedFilename","getTimestampedReleaseNotesFilename","outputPath","scanNpmrcForEnvVars","npmrcPath","envVars","exists","npmrcContent","envVarMatches","varName","cleanupNpmLinkReferences","packageLockPath","packageLockContent","packageLock","hasFileReferences","packages","pkgPath","pkgInfo","entries","resolved","resolvedPath","versionPath","unlink","runWithDryRunSupport","validateEnvironmentVariables","requiredEnvVars","missingEnvVars","envVar","runPrechecks","originalMessage","toString","effectiveTargetBranch","getCurrentBranchName","syncStatus","isBranchInSyncWithRemote","inSync","localSha","remoteSha","workflowConfig","hasWorkflows","hasPullRequestTriggers","workflowCount","triggeredWorkflowNames","workflowName","packageJsonPath","parsed","scripts","prepublishOnly","coreRequiredEnvVars","npmrcEnvVars","allRequiredEnvVars","sortObjectKeys","value","Array","isArray","sorted","sort","key","isReleaseNecessaryComparedToTarget","runSecure","necessary","reason","namesStdout","changedFiles","s","nonVersionFiles","f","basePkgStdout","headPkgStdout","basePkg","headPkg","_baseVersion","baseWithoutVersion","_headVersion","headWithoutVersion","baseSorted","headSorted","equalExceptVersion","handleTargetBranchSyncRecovery","syncResult","safeSyncBranchWithRemote","success","conflictResolutionRequired","branchDependentVersioning","branchConfig","targetBranchConfig","versionType","versionTag","versionIncrement","increment","syncTarget","necessity","console","runGitWithLock","remoteBranchExists","branchName","findOpenPullRequestByHeadRef","releaseConfig","skipLinkCleanup","updateDepsScope","updateDeps","Updates","updatesConfig","updates","scope","interProject","updatePatterns","dependencyUpdatePatterns","patternsArg","filesToStage","hasStagedChanges","Commit","commit","skipPreMerge","skipPrePublishMerge","fetchError","mergeBase","targetCommit","mergeSucceeded","errorText","conflictedFiles","conflicts","versionFiles","nonVersionConflicts","file","mergeChangesStatus","filesToStagePostMerge","proposedVersion","finalTargetBranch","branchDependentResult","calculateBranchDependentVersion","targetVersionInput","calculateTargetVersion","targetTagName","checkIfTagExists","getTagInfo","npmVersion","tagInfo","skipAlreadyPublished","forceRepublish","confirmVersionInteractively","confirmedTagName","confirmedTagExists","filesToStageVersionBump","Release","releaseNotesPath","releaseTitlePath","labels","rawCommitTitle","commitTitle","prBody","createPullRequest","shouldSkipWait","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","waitForPullRequestChecks","mergeMethod","mergePullRequest","hasStashedChanges","syncError","stashError","targetPackageJsonContents","tagName","validateGitRef","tagWasPushed","pushError","Promise","resolve","setTimeout","releaseTitle","retries","createRelease","closeMilestoneForVersion","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","getWorkflowsTriggeredByRelease","fastForwardSucceeded","sourceBranchConfig","versionCommand","currentVer","incrementPrereleaseVersion","incrementedPatchVersion","versionError","runPreflightValidation","valid","errors","all","checkGitRepository","checkGitStatus","checkCurrentBranch","checkTargetBranchSync","checkScripts","checkWorkspaceStructure","checkCredentials","check","suggestion","files","_isDryRun","rootPath","missingVars","logValidationResults","idx","throwIfValidationFailed","ValidationError","phase","logDryRunReport","versionChanges","current","proposed","operations","op","step","description","command","changes","tags","npmPublish","package","prDetails","sourceBranch","logTreeDryRunReport","buildOrder","pkg","order","versionChange","dependencyUpdates","update","dependency","createDryRunReport","packageName","getCheckpointPath","workingDirectory","saveCheckpoint","checkpoint","checkpointPath","loadCheckpoint","deleteCheckpoint","deleteFile","updateCheckpoint","existing","updated","analyzeRecoveryStrategy","recoverable","explanation","steps","risks","npmPublished","prNumber","getCheckpointSummary","prUrl","workflowRunUrl","isFailedPublish"],"mappings":";;;;;;;;;;;;;;AAoBA;;;IAIA,eAAeA,sBACXC,aAAqB,EACrBC,QAAiB,EACjBC,MAAW,EACXC,SAAAA,GAAoB,UAAU,EAAA;AAE9BD,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6IAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,qIAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;IAEZ,IAAI;;QAEA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,CAAC,QAAQ,EAAEN,aAAAA,CAAc,gBAAgB,CAAC,CAAA;AACvE,QAAA,MAAMO,OAAAA,GAAUF,MAAAA,CAAOG,IAAI,EAAA,CAAGC,KAAK,CAAC,IAAA,CAAA;;AAGpC,QAAA,MAAMC,UAAAA,GAAaH,OAAAA,CAAQI,MAAM,CAACC,CAAAA,IAAAA,GAAAA;;YAE9B,OAAO,0BAAA,CAA2BC,IAAI,CAACD,IAAAA,CAAAA;AAC3C,QAAA,CAAA,CAAA;QAEAV,MAAAA,CAAOE,IAAI,CAAC,CAAC,4EAA4E,EAAEM,UAAAA,CAAWI,MAAM,CAAC,qCAAqC,CAAC,CAAA;AAEnJ,QAAA,MAAMC,cAAwB,EAAE;AAChC,QAAA,MAAMC,cAAwB,EAAE;QAEhC,KAAK,MAAMC,cAAcP,UAAAA,CAAY;AACjC,YAAA,MAAM,CAACQ,GAAAA,EAAK,GAAGC,aAAa,GAAGF,UAAAA,CAAWR,KAAK,CAAC,GAAA,CAAA;YAChD,MAAMW,OAAAA,GAAUD,YAAAA,CAAaE,IAAI,CAAC,GAAA,CAAA;;YAGlC,MAAMC,YAAAA,GAAeF,OAAAA,CAAQG,KAAK,CAAC,wBAAA,CAAA;AACnC,YAAA,IAAI,CAACD,YAAAA,EAAc;AAEnB,YAAA,MAAME,cAAAA,GAAiBF,YAAY,CAAC,CAAA,CAAE;AACtC,YAAA,MAAMG,cAAAA,GAAiB,CAAA,EAAGtB,SAAAA,CAAU,CAAC,EAAEqB,cAAAA,CAAAA,CAAgB;;YAGvD,MAAME,eAAAA,GAAkB,MAAMpB,GAAAA,CAAI,CAAC,YAAY,EAAEmB,cAAAA,CAAe,CAAC,CAAC,CAAA;AAClE,YAAA,MAAME,SAAAA,GAAYD,eAAAA,CAAgBrB,MAAM,CAACG,IAAI,EAAA,KAAO,EAAA;AAEpD,YAAA,IAAImB,SAAAA,EAAW;AACXX,gBAAAA,WAAAA,CAAYY,IAAI,CAACH,cAAAA,CAAAA;AACjBvB,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,SAAS,EAAEJ,cAAAA,CAAe,iBAAiB,CAAC,CAAA;AAC5D,gBAAA;AACJ,YAAA;AAEA,YAAA,IAAI,CAACxB,QAAAA,EAAU;;;AAGXC,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,WAAW,EAAEJ,cAAAA,CAAe,IAAI,EAAEP,GAAAA,CAAIY,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAA,CAAI,CAAA;AACvE,gBAAA,MAAMxB,IAAI,CAAC,QAAQ,EAAEmB,cAAAA,CAAe,CAAC,EAAEP,GAAAA,CAAAA,CAAK,CAAA;AAC5CH,gBAAAA,WAAAA,CAAYa,IAAI,CAACH,cAAAA,CAAAA;YACrB,CAAA,MAAO;AACHvB,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,qEAAqE,EAAEqB,cAAAA,CAAe,WAAW,EAAEP,GAAAA,CAAIY,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAA,CAAI,CAAA;AACrIf,gBAAAA,WAAAA,CAAYa,IAAI,CAACH,cAAAA,CAAAA;AACrB,YAAA;AACJ,QAAA;AAEAvB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAEZ,QAAA,IAAIW,WAAAA,CAAYD,MAAM,GAAG,CAAA,IAAK,CAACb,QAAAA,EAAU;YACrCC,MAAAA,CAAOE,IAAI,CAAC,CAAC,6DAA6D,EAAEW,WAAAA,CAAYD,MAAM,CAAC,mDAAmD,CAAC,CAAA;AACnJ,YAAA,MAAMR,GAAAA,CAAI,wBAAA,CAAA;AACVJ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;YACZF,MAAAA,CAAOE,IAAI,CAAC,CAAC,gFAAgF,EAAEW,WAAAA,CAAYD,MAAM,CAAC,qCAAqC,CAAC,CAAA;AACxJC,YAAAA,WAAAA,CAAYgB,OAAO,CAACC,CAAAA,GAAAA,GAAO9B,MAAAA,CAAOE,IAAI,CAAC,CAAC,gDAAgD,EAAE4B,GAAAA,CAAI,iBAAiB,CAAC,CAAA,CAAA;AACpH,QAAA,CAAA,MAAO,IAAIjB,WAAAA,CAAYD,MAAM,GAAG,KAAKb,QAAAA,EAAU;AAC3CC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,yFAAyF,EAAEW,WAAAA,CAAYD,MAAM,CAAA,CAAE,CAAA;AAC5HC,YAAAA,WAAAA,CAAYgB,OAAO,CAACC,CAAAA,GAAAA,GAAO9B,MAAAA,CAAOE,IAAI,CAAC,CAAC,6CAA6C,EAAE4B,GAAAA,CAAI,gBAAgB,CAAC,CAAA,CAAA;AAChH,QAAA;QAEA,IAAIhB,WAAAA,CAAYF,MAAM,GAAG,CAAA,EAAG;AACxBZ,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,EAAA,CAAA;YACf3B,MAAAA,CAAO2B,OAAO,CAAC,CAAC,QAAQ,EAAEb,WAAAA,CAAYF,MAAM,CAAC,eAAe,CAAC,CAAA;YAC7DE,WAAAA,CAAYe,OAAO,CAACC,CAAAA,GAAAA,GAAO9B,MAAAA,CAAO2B,OAAO,CAAC,CAAC,KAAK,EAAEG,GAAAA,CAAAA,CAAK,CAAA,CAAA;AAC3D,QAAA;AAEA,QAAA,IAAIjB,YAAYD,MAAM,KAAK,KAAKE,WAAAA,CAAYF,MAAM,KAAK,CAAA,EAAG;AACtDZ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,2JAAA,CAAA;AAChB,QAAA;AAEAF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAEhB,IAAA,CAAA,CAAE,OAAO6B,KAAAA,EAAY;QACjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,oEAAoE,EAAED,KAAAA,CAAMb,OAAO,CAAC,2EAA2E,CAAC,CAAA;AAC7KlB,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,4IAAA,CAAA;;AAEhB,IAAA;AACJ;AAEA;;IAGO,MAAMC,SAAAA,GAAU,OAAOC,SAAAA,GAAAA;IAC1B,MAAMnC,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;AACrC,IAAA,MAAMnC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAE/BC,IAAAA,MAAAA,CAAOE,IAAI,CAAC,sIAAA,CAAA;IAEZ,IAAI;AAgCIgC,QAAAA,IAAAA,sBAAAA,EAmOAA,uBAAAA,EAkCAA,uBAAAA;;QAnSJ,MAAMG,aAAAA,GAAgBtC,QAAAA,GAAW,aAAA,GAAgB,MAAMuC,gBAAAA,EAAAA;AACvDtC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wDAAwD,EAAEmC,aAAAA,CAAc,mCAAmC,CAAC,CAAA;;QAGzH,IAAIvC,aAAAA,GAAgB;QAEpB,IAAIoC,SAAAA,CAAUK,QAAQ,EAAE;YACpB,MAAMC,mBAAAA,GAAsBC,qBAAAA,CAAsBP,SAAAA,CAAUK,QAAQ,CAAA;AACpE,YAAA,IAAIC,mBAAAA,EAAqB;gBACrB1C,aAAAA,GAAgB0C,mBAAAA;gBAChBxC,MAAAA,CAAOE,IAAI,CAAC,CAAC,yEAAyE,EAAEJ,aAAAA,CAAc,6BAA6B,EAAEuC,aAAAA,CAAAA,CAAe,CAAA;YACxJ,CAAA,MAAO;gBACHrC,MAAAA,CAAOE,IAAI,CAAC,CAAC,mEAAmE,EAAEJ,aAAAA,CAAc,8BAA8B,EAAEuC,aAAAA,CAAAA,CAAe,CAAA;AACnJ,YAAA;QACJ,CAAA,MAAO;YACHrC,MAAAA,CAAOE,IAAI,CAAC,CAAC,sEAAsE,EAAEJ,aAAAA,CAAc,8BAA8B,EAAEuC,aAAAA,CAAAA,CAAe,CAAA;AACtJ,QAAA;;AAGA,QAAA,IAAIK,aAAAA,GAAgB,KAAA;AACpB,QAAA,IAAIC,aAAAA,GAAgB,KAAA;AACpB,QAAA,IAAIC,eAAAA,GAAkB,KAAA;AACtB,QAAA,IAAIC,4BAAAA,GAA+B,KAAA;;AAGnC,QAAA,MAAMC,eAAAA,GAAkBZ,SAAAA,CAAUK,QAAQ,IAAIQ,kBAAkBR,QAAQ;QACxE,IAAIS,aAAAA,GAAgB;QACpB,IAAIC,cAAAA,GAAiB;;AAGrB,QAAA,IAAA,CAAIf,yBAAAA,SAAAA,CAAUgB,WAAW,cAArBhB,sBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,CAAuBiB,aAAa,EAAE;AACtC,YAAA,MAAMA,aAAAA,GAAgBjB,SAAAA,CAAUgB,WAAW,CAACC,aAAa;;AAGzD,YAAA,IAAI,CAAC;AAAC,gBAAA,OAAA;AAAS,gBAAA,OAAA;AAAS,gBAAA;aAAQ,CAACC,QAAQ,CAACD,aAAAA,CAAAA,IAAkB,CAAC,iBAAA,CAAkBxC,IAAI,CAACwC,aAAAA,CAAcE,OAAO,CAAC,IAAA,EAAM,EAAA,CAAA,CAAA,EAAM;AAClH,gBAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,wBAAwB,EAAEH,aAAAA,CAAc,4EAA4E,CAAC,CAAA;AAC1I,YAAA;YAEAF,cAAAA,GAAiBE,aAAAA;AACrB,QAAA,CAAA,MAAO,IAAIL,eAAAA,IAAoBA,eAAuB,CAAChD,cAAc,EAAE;AACnE,YAAA,MAAMyD,mBAAAA,GAAuBT,eAAuB,CAAChD,aAAAA,CAAc;YACnE,IAAIyD,mBAAAA,CAAoBC,OAAO,EAAE;AAC7B,gBAAA,IAAID,mBAAAA,CAAoBC,OAAO,CAAC1B,GAAG,EAAE;oBACjCkB,aAAAA,GAAgBO,mBAAAA,CAAoBC,OAAO,CAAC1B,GAAG;AACnD,gBAAA;AACA,gBAAA,IAAIyB,mBAAAA,CAAoBC,OAAO,CAACP,cAAc,EAAE;oBAC5CA,cAAAA,GAAiBM,mBAAAA,CAAoBC,OAAO,CAACP,cAAc;AAC/D,gBAAA;AACJ,YAAA;AACJ,QAAA;QAEAjD,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAE8C,aAAAA,CAAc,oBAAoB,EAAEC,cAAAA,CAAAA,CAAgB,CAAA;QAC3IjD,MAAAA,CAAOE,IAAI,CAAC,CAAC,0DAA0D,EAAE+C,eAAe,QAAQ,EAAED,aAAAA,CAAc,0CAA0C,CAAC,CAAA;;AAG3J,QAAA,IAAI,CAACjD,QAAAA,EAAU;AACXC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,oHAAA,CAAA;YACZ,IAAI;AACA,gBAAA,MAAME,GAAAA,CAAI,kBAAA,CAAA;AACVJ,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,sGAAA,CAAA;AAChB,YAAA,CAAA,CAAE,OAAO6B,KAAAA,EAAY;gBACjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,uEAAuE,EAAED,KAAAA,CAAMb,OAAO,CAAC,qCAAqC,CAAC,CAAA;AAC9I,YAAA;QACJ,CAAA,MAAO;AACHlB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,+FAAA,CAAA;AAChB,QAAA;;AAGA,QAAA,IAAImC,kBAAkB,aAAA,EAAe;AACjC,YAAA,IAAI,CAACtC,QAAAA,EAAU;AACXC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,+JAAA,CAAA;AACZ,gBAAA,MAAME,GAAAA,CAAI,CAAC,aAAa,EAAEN,aAAAA,CAAAA,CAAe,CAAA;gBACzC,MAAMM,GAAAA,CAAI,CAAC,2FAA2F,CAAC,CAAA;AACvG,gBAAA,MAAMA,GAAAA,CAAI,aAAA,CAAA;;gBAGV,MAAMqD,SAAAA,GAAY,MAAMrD,GAAAA,CAAI,wBAAA,CAAA;AAC5B,gBAAA,IAAIqD,SAAAA,CAAUtD,MAAM,CAACG,IAAI,EAAA,EAAI;AACzB,oBAAA,MAAMF,GAAAA,CAAI,YAAA,CAAA;AACV,oBAAA,MAAMA,GAAAA,CAAI,wDAAA,CAAA;AACd,gBAAA;;gBAGAyC,4BAAAA,GAA+B,IAAA;YACnC,CAAA,MAAO;AACH7C,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,iHAAA,CAAA;gBACZ2C,4BAAAA,GAA+B,IAAA;AACnC,YAAA;AACJ,QAAA;;QAGA,IAAI,CAAC9C,QAAAA,IAAY,CAAC8C,4BAAAA,EAA8B;YAC5C,MAAMa,mBAAAA,GAAsB,MAAMC,iBAAAA,CAAkB7D,aAAAA,CAAAA;AACpD,YAAA,IAAI,CAAC4D,mBAAAA,EAAqB;AACtB1D,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,2EAA2E,EAAEJ,aAAAA,CAAc,qDAAqD,CAAC,CAAA;AAC9J,gBAAA,MAAMM,GAAAA,CAAI,CAAC,gBAAgB,EAAEN,aAAAA,CAAAA,CAAe,CAAA;AAC5CE,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0EAA0E,EAAEJ,aAAAA,CAAc,sBAAsB,CAAC,CAAA;gBAC9H4C,aAAAA,GAAgB,IAAA;YACpB,CAAA,MAAO,IAAIL,kBAAkBvC,aAAAA,EAAe;gBACxCE,MAAAA,CAAOE,IAAI,CAAC,CAAC,4DAA4D,EAAEJ,aAAAA,CAAc,gCAAgC,EAAEuC,aAAAA,CAAAA,CAAe,CAAA;AAC1I,gBAAA,MAAMjC,GAAAA,CAAI,CAAC,aAAa,EAAEN,aAAAA,CAAAA,CAAe,CAAA;AACzCE,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,+DAA+D,EAAEJ,aAAAA,CAAc,sBAAsB,CAAC,CAAA;gBACnH6C,aAAAA,GAAgB,IAAA;YACpB,CAAA,MAAO;AACH3C,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wDAAwD,EAAEJ,aAAAA,CAAc,2BAA2B,CAAC,CAAA;gBACjH8C,eAAAA,GAAkB,IAAA;AACtB,YAAA;QACJ,CAAA,MAAO,IAAI,CAACC,4BAAAA,EAA8B;;YAEtC,MAAMa,mBAAAA,GAAsB,MAAMC,iBAAAA,CAAkB7D,aAAAA,CAAAA;AACpD,YAAA,IAAI,CAAC4D,mBAAAA,EAAqB;gBACtBhB,aAAAA,GAAgB,IAAA;YACpB,CAAA,MAAO,IAAIL,kBAAkBvC,aAAAA,EAAe;gBACxC6C,aAAAA,GAAgB,IAAA;YACpB,CAAA,MAAO;gBACHC,eAAAA,GAAkB,IAAA;AACtB,YAAA;AACA5C,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,6EAA6E,EAAEJ,aAAAA,CAAc,2BAA2B,CAAC,CAAA;AACtIE,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0EAA0E,EAAEJ,aAAAA,CAAc,2BAA2B,CAAC,CAAA;AACvI,QAAA;;AAGA,QAAA,IAAI,CAACC,QAAAA,EAAU;YACX,IAAI;gBACAC,MAAAA,CAAOE,IAAI,CAAC,CAAC,uEAAuE,EAAEJ,cAAc,kBAAkB,EAAEA,aAAAA,CAAc,2BAA2B,CAAC,CAAA;AAClK,gBAAA,MAAM8D,YAAAA,GAAe,MAAMxD,GAAAA,CAAI,CAAC,yCAAyC,EAAEN,aAAAA,CAAAA,CAAe,CAAA,CAAE+D,IAAI,CAAC,IAAM,IAAA,CAAA,CAAMC,KAAK,CAAC,IAAM,KAAA,CAAA;AAEzH,gBAAA,IAAIF,YAAAA,EAAc;;AAEd,oBAAA,MAAMxD,GAAAA,CAAI,CAAC,iBAAiB,EAAEN,aAAAA,CAAAA,CAAe,CAAA;AAC7C,oBAAA,MAAMM,IAAI,CAAC,iBAAiB,EAAEN,aAAAA,CAAc,UAAU,CAAC,CAAA;oBACvDE,MAAAA,CAAOE,IAAI,CAAC,CAAC,mEAAmE,EAAEJ,cAAc,kBAAkB,EAAEA,aAAAA,CAAc,kBAAkB,CAAC,CAAA;gBACzJ,CAAA,MAAO;AACHE,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,+DAA+D,EAAEJ,aAAAA,CAAc,yDAAyD,CAAC,CAAA;AAC1J,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOiC,KAAAA,EAAY;gBACjB,IAAIA,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,EAAa;AACrDpD,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,iFAAiF,EAAEjC,aAAAA,CAAc,8CAA8C,CAAC,CAAA;AAC9JE,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,6DAA6D,CAAC,CAAA;AAC5E/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yCAAyC,CAAC,CAAA;AACxD/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mEAAmE,CAAC,CAAA;AAClF/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+CAA+C,CAAC,CAAA;AAC9D/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,6DAA6D,CAAC,CAAA;AAC5E,oBAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,sCAAsC,EAAExD,aAAAA,CAAc,gDAAgD,CAAC,CAAA;gBAC5H,CAAA,MAAO;oBACHE,MAAAA,CAAOgC,IAAI,CAAC,CAAC,sDAAsD,EAAElC,cAAc,2BAA2B,EAAEiC,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACnI,gBAAA;AACJ,YAAA;AACJ,QAAA;;;AAIA,QAAA,IAAI,CAACnB,QAAAA,EAAU;AAE6B,YAAA,IAAA,8BAAA;;YAAxC,MAAMgE,YAAAA,GAAejB,eAAAA,KAAAA,CAAmB,8BAAA,GAAA,eAAwB,CAAChD,aAAAA,CAAc,MAAA,IAAA,IAAvC,8BAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA,CAAyCiE,YAAY,CAAA,IAAI,MAAA;YACjG,MAAMC,kBAAAA,GAAqB,MAAML,iBAAAA,CAAkBI,YAAAA,CAAAA;AAEnD,YAAA,IAAIC,kBAAAA,EAAoB;gBACpBhE,MAAAA,CAAOE,IAAI,CAAC,CAAC,sEAAsE,EAAEJ,cAAc,WAAW,EAAEiE,YAAAA,CAAa,yBAAyB,CAAC,CAAA;gBACvJ,IAAI;AACA,oBAAA,MAAM3D,IAAI,CAAC,UAAU,EAAE2D,YAAAA,CAAa,UAAU,CAAC,CAAA;oBAC/C/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAE6D,aAAa,YAAY,EAAEjE,aAAAA,CAAc,iBAAiB,CAAC,CAAA;AACtJ,gBAAA,CAAA,CAAE,OAAOiC,KAAAA,EAAY;;oBAEjB,IAAIA,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,8BAAA,CAAA,EAAiC;wBACzEpD,MAAAA,CAAOgC,IAAI,CAAC,CAAC,yDAAyD,EAAE+B,aAAa,YAAY,EAAEjE,aAAAA,CAAc,4BAA4B,CAAC,CAAA;AAC9IE,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,kHAAkH,CAAC,CAAA;wBAChI,IAAI;AACA,4BAAA,MAAME,GAAAA,CAAI,CAAC,UAAU,EAAE2D,YAAAA,CAAa,WAAW,EAAEA,YAAAA,CAAa,MAAM,EAAEjE,aAAAA,CAAc,UAAU,CAAC,CAAA;4BAC/FE,MAAAA,CAAOE,IAAI,CAAC,CAAC,wDAAwD,EAAE6D,aAAa,YAAY,EAAEjE,aAAAA,CAAc,iBAAiB,CAAC,CAAA;;AAGlIE,4BAAAA,MAAAA,CAAOE,IAAI,CAAC,+GAAA,CAAA;AACZ,4BAAA,MAAME,GAAAA,CAAI,aAAA,CAAA;;4BAGV,MAAMqD,SAAAA,GAAY,MAAMrD,GAAAA,CAAI,wBAAA,CAAA;AAC5B,4BAAA,IAAIqD,SAAAA,CAAUtD,MAAM,CAACG,IAAI,EAAA,EAAI;AACzBN,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,sFAAA,CAAA;AACZ,gCAAA,MAAME,GAAAA,CAAI,YAAA,CAAA;AACV,gCAAA,MAAMA,GAAAA,CAAI,wDAAA,CAAA;AACd,4BAAA;AACJ,wBAAA,CAAA,CAAE,OAAO6D,UAAAA,EAAiB;4BACtB,IAAIA,UAAAA,CAAW/C,OAAO,IAAI+C,UAAAA,CAAW/C,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,EAAa;gCAC/DpD,MAAAA,CAAO+B,KAAK,CAAC,CAAC,wDAAwD,EAAEgC,aAAa,YAAY,EAAEjE,aAAAA,CAAc,6BAA6B,CAAC,CAAA;AAC/IE,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,6DAA6D,CAAC,CAAA;AAC5E/B,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yCAAyC,CAAC,CAAA;AACxD/B,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mEAAmE,CAAC,CAAA;AAClF/B,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+CAA+C,CAAC,CAAA;AAC9D/B,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qDAAqD,CAAC,CAAA;AACpE/B,gCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,6DAA6D,CAAC,CAAA;gCAC5E,MAAM,IAAIuB,KAAAA,CAAM,CAAC,sCAAsC,EAAES,aAAa,MAAM,EAAEjE,aAAAA,CAAc,oCAAoC,CAAC,CAAA;4BACrI,CAAA,MAAO;gCACH,MAAMmE,UAAAA;AACV,4BAAA;AACJ,wBAAA;oBACJ,CAAA,MAAO;AACHjE,wBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,uEAAuE,EAAE+B,YAAAA,CAAa,YAAY,EAAEjE,aAAAA,CAAc,UAAU,EAAEiC,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC9J,oBAAA;AACJ,gBAAA;YACJ,CAAA,MAAO;AACHlB,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,8DAA8D,EAAE6D,YAAAA,CAAa,0DAA0D,CAAC,CAAA;AACzJ,YAAA;QACJ,CAAA,MAAO;AACH/D,YAAAA,MAAAA,CAAOE,IAAI,CAAC,kEAAA,CAAA;AAChB,QAAA;;AAGA,QAAA,IAAI,CAACH,QAAAA,EAAU;YACX,MAAMmE,uBAAAA,GAA0B,MAAMP,iBAAAA,CAAkB,aAAA,CAAA;AACxD,YAAA,IAAId,4BAAAA,EAA8B;AAC9B7C,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,4GAAA,CAAA;AAChB,YAAA,CAAA,MAAO,IAAIgE,uBAAAA,EAAyB;gBAChClE,MAAAA,CAAOE,IAAI,CAAC,wGAAA,GAA2GJ,aAAAA,GAAgB,sCAAA,CAAA;gBAEvI,IAAI;AACA,oBAAA,MAAMM,IAAI,CAAC,wEAAwE,EAAEN,aAAAA,CAAc,CAAC,CAAC,CAAA;oBACrGE,MAAAA,CAAOE,IAAI,CAAC,kGAAA,GAAqGJ,aAAAA,GAAgB,mBAAA,CAAA;;AAGjIE,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,gHAAA,CAAA;AACZ,oBAAA,MAAME,GAAAA,CAAI,aAAA,CAAA;;oBAGV,MAAMqD,SAAAA,GAAY,MAAMrD,GAAAA,CAAI,wBAAA,CAAA;AAC5B,oBAAA,IAAIqD,SAAAA,CAAUtD,MAAM,CAACG,IAAI,EAAA,EAAI;AACzBN,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,sFAAA,CAAA;AACZ,wBAAA,MAAME,GAAAA,CAAI,YAAA,CAAA;wBACV,MAAMA,GAAAA,CAAI,CAAC,2DAA2D,CAAC,CAAA;AACvEJ,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,2EAAA,CAAA;AAChB,oBAAA;AAEJ,gBAAA,CAAA,CAAE,OAAO6B,KAAAA,EAAY;oBACjB,IAAIA,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,EAAa;AACrDpD,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,kFAAkF,EAAEjC,aAAAA,CAAc,6BAA6B,CAAC,CAAA;AAC9IE,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,iEAAiE,CAAC,CAAA;AAChF/B,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yCAAyC,CAAC,CAAA;AACxD/B,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mEAAmE,CAAC,CAAA;AAClF/B,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+CAA+C,CAAC,CAAA;AAC9D/B,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qDAAqD,CAAC,CAAA;wBACpE/B,MAAAA,CAAO+B,KAAK,CAAC,CAAC,kDAAkD,EAAEkB,cAAAA,CAAe,SAAS,EAAED,aAAAA,CAAAA,CAAe,CAAA;AAC3G,wBAAA,MAAM,IAAIM,KAAAA,CAAM,CAAC,uDAAuD,EAAExD,aAAAA,CAAc,oCAAoC,CAAC,CAAA;oBACjI,CAAA,MAAO;wBACHE,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yFAAyF,EAAEjC,cAAc,UAAU,EAAEiC,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;wBAClJ,MAAMa,KAAAA;AACV,oBAAA;AACJ,gBAAA;YACJ,CAAA,MAAO;AACH/B,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,8HAAA,CAAA;AAChB,YAAA;QACJ,CAAA,MAAO;AACHF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,kHAAA,CAAA;AACZF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,+FAAA,CAAA;AACZF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,sEAAA,CAAA;AAChB,QAAA;;AAGA,QAAA,IAAA,CAAIgC,0BAAAA,SAAAA,CAAUgB,WAAW,cAArBhB,uBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,uBAAAA,CAAuBrC,qBAAqB,EAAE;AAC5BqC,YAAAA,IAAAA,uBAAAA;YAAlB,MAAMjC,SAAAA,GAAYiC,EAAAA,uBAAAA,GAAAA,SAAAA,CAAUgB,WAAW,MAAA,IAAA,IAArBhB,uBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,uBAAAA,CAAuBiC,gBAAgB,KAAI,UAAA;YAC7D,MAAMtE,qBAAAA,CAAsBC,aAAAA,EAAeC,QAAAA,EAAUC,MAAAA,EAAQC,SAAAA,CAAAA;AACjE,QAAA;;QAGA,IAAI2C,eAAAA,IAAmB,CAACC,4BAAAA,EAA8B;;YAElD,MAAMuB,EAAAA,GAAK,MAAM,OAAO,aAAA,CAAA;YACxB,IAAI;gBACA,MAAMC,WAAAA,GAAcC,KAAKC,KAAK,CAAC,MAAMH,EAAAA,CAAGI,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA,CAAA;gBACjE,MAAMC,cAAAA,GAAiBJ,YAAYb,OAAO;;gBAG1C,IAAIiB,cAAAA,CAAerB,QAAQ,CAAC,CAAC,CAAC,EAAEJ,aAAAA,CAAc,CAAC,CAAC,CAAA,EAAG;;AAE/C,oBAAA,MAAM0B,cAAcD,cAAAA,CAAelE,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;AAChD,oBAAA,MAAM,EAAEoE,sBAAsB,EAAE,GAAG,MAAM,OAAO,iBAAA,CAAA;AAChD,oBAAA,MAAMC,gBAAAA,GAAmB,MAAMD,sBAAAA,CAAuBN,WAAAA,CAAYQ,IAAI,CAAA;AAEtE,oBAAA,IAAID,qBAAqBF,WAAAA,EAAa;wBAClC1E,MAAAA,CAAOE,IAAI,CAAC,CAAC,sFAAsF,EAAEJ,cAAc,YAAY,EAAE2E,cAAAA,CAAe,yBAAyB,CAAC,CAAA;wBAC1K,OAAO,oDAAA;AACX,oBAAA;oBAEAzE,MAAAA,CAAOgC,IAAI,CAAC,CAAC,gEAAgE,EAAEyC,eAAe,cAAc,EAAEG,gBAAAA,CAAiB,wCAAwC,CAAC,CAAA;;AAE5K,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAM;AACJ5E,gBAAAA,MAAAA,CAAO8E,KAAK,CAAC,+DAAA,CAAA;AACjB,YAAA;AACJ,QAAA;;QAGA,IAAI5C,CAAAA,CAAAA,0BAAAA,SAAAA,CAAUgB,WAAW,cAArBhB,uBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,uBAAAA,CAAuB6C,gBAAgB,MAAK,KAAA,EAAO;YACnD,IAAI;gBACA,MAAMX,EAAAA,GAAK,MAAM,OAAO,aAAA,CAAA;gBACxB,MAAMC,WAAAA,GAAcC,KAAKC,KAAK,CAAC,MAAMH,EAAAA,CAAGI,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA,CAAA;gBACjE,MAAMC,cAAAA,GAAiBJ,YAAYb,OAAO;;gBAG1C,MAAMwB,gBAAAA,GAAmBP,kBACD,CAACA,cAAAA,CAAerB,QAAQ,CAAC,OAAA,CAAA,IACzB,CAACqB,cAAAA,CAAerB,QAAQ,CAAC,SAAA,CAAA,IACzB,CAACqB,eAAerB,QAAQ,CAAC,aACzB,CAACqB,cAAAA,CAAerB,QAAQ,CAAC,MAAA,CAAA;AAEjD,gBAAA,IAAI4B,gBAAAA,EAAkB;AACA9C,oBAAAA,IAAAA,uBAAAA;oBAAlB,MAAMjC,SAAAA,GAAYiC,EAAAA,uBAAAA,GAAAA,SAAAA,CAAUgB,WAAW,MAAA,IAAA,IAArBhB,uBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,uBAAAA,CAAuBiC,gBAAgB,KAAI,UAAA;AAC7D,oBAAA,MAAM5C,cAAAA,GAAiB,CAAA,EAAGtB,SAAAA,CAAU,CAAC,EAAEwE,cAAAA,CAAAA,CAAgB;AAEvD,oBAAA,IAAI,CAAC1E,QAAAA,EAAU;AACXC,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,uEAAuE,EAAEuE,cAAAA,CAAe,+CAA+C,CAAC,CAAA;AACrJzE,wBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,gBAAgB,EAAEJ,cAAAA,CAAe,UAAU,CAAC,CAAA;;wBAG5D,MAAMC,eAAAA,GAAkB,MAAMpB,GAAAA,CAAI,CAAC,YAAY,EAAEmB,cAAAA,CAAe,CAAC,CAAC,CAAA;AAClE,wBAAA,MAAME,SAAAA,GAAYD,eAAAA,CAAgBrB,MAAM,CAACG,IAAI,EAAA,KAAO,EAAA;AAEpD,wBAAA,IAAImB,SAAAA,EAAW;AACXzB,4BAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0CAA0C,EAAEqB,cAAAA,CAAe,yDAAyD,CAAC,CAAA;wBACtI,CAAA,MAAO;;AAEHvB,4BAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,aAAa,EAAEJ,cAAAA,CAAe,mBAAmB,CAAC,CAAA;AAClE,4BAAA,MAAMnB,GAAAA,CAAI,CAAC,QAAQ,EAAEmB,cAAAA,CAAAA,CAAgB,CAAA;;AAGrCvB,4BAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,YAAY,EAAEJ,cAAAA,CAAe,aAAa,CAAC,CAAA;AAC3D,4BAAA,MAAMnB,GAAAA,CAAI,CAAC,gBAAgB,EAAEmB,cAAAA,CAAAA,CAAgB,CAAA;4BAE7CvB,MAAAA,CAAOE,IAAI,CAAC,CAAC,8CAA8C,EAAEqB,eAAe,YAAY,EAAEkD,cAAAA,CAAe,4BAA4B,CAAC,CAAA;4BACtIzE,MAAAA,CAAOE,IAAI,CAAC,CAAC,uEAAuE,EAAEuE,cAAAA,CAAe,wDAAwD,EAAElD,cAAAA,CAAAA,CAAgB,CAAA;AACnL,wBAAA;oBACJ,CAAA,MAAO;wBACHvB,MAAAA,CAAOE,IAAI,CAAC,CAAC,iEAAiE,EAAEqB,cAAAA,CAAe,YAAY,EAAEkD,cAAAA,CAAAA,CAAgB,CAAA;AACjI,oBAAA;AACJ,gBAAA,CAAA,MAAO,IAAIA,cAAAA,EAAgB;AACvBzE,oBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,mBAAmB,EAAE8C,cAAAA,CAAe,oCAAoC,CAAC,CAAA;gBAC7F,CAAA,MAAO;AACHzE,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,4DAAA,CAAA;AACjB,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO/C,KAAAA,EAAY;AACjB,gBAAA,IAAI,CAAChC,QAAAA,EAAU;oBACXC,MAAAA,CAAOgC,IAAI,CAAC,CAAC,sDAAsD,EAAED,KAAAA,CAAMb,OAAO,CAAC,qDAAqD,CAAC,CAAA;AACzIlB,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,4GAAA,CAAA;gBAChB,CAAA,MAAO;AACHhC,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,qEAAA,CAAA;AAChB,gBAAA;;AAEJ,YAAA;AACJ,QAAA,CAAA,MAAO,IAAIH,QAAAA,EAAU;AACjBC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,4CAAA,CAAA;AAChB,QAAA;;;;QAKA,IAAI;AAAC,YAAA,OAAA;AAAS,YAAA,OAAA;AAAS,YAAA;SAAQ,CAACkD,QAAQ,CAACH,cAAAA,CAAAA,EAAiB;YACtDjD,MAAAA,CAAOE,IAAI,CAAC,CAAC,kEAAkE,EAAE+C,cAAAA,CAAe,QAAQ,EAAED,aAAAA,CAAAA,CAAe,CAAA;QAC7H,CAAA,MAAO;YACHhD,MAAAA,CAAOE,IAAI,CAAC,CAAC,0DAA0D,EAAE+C,eAAe,CAAC,EAAED,aAAAA,CAAc,mBAAmB,CAAC,CAAA;AACjI,QAAA;AAEA,QAAA,IAAI,CAACjD,QAAAA,EAAU;YACX,IAAI;AAMwC,gBAAA,IAAA,+BAAA;AALxC,gBAAA,MAAMkF,OAAAA,GAAUC,aAAAA,EAAAA;;;;gBAKhB,MAAMnB,YAAAA,GAAejB,eAAAA,KAAAA,CAAmB,+BAAA,GAAA,eAAwB,CAAChD,aAAAA,CAAc,MAAA,IAAA,IAAvC,+BAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA,CAAyCiE,YAAY,CAAA,IAAI,MAAA;gBACjG,IAAIU,cAAAA;gBAEJ,IAAI;;oBAEA,MAAMU,mBAAAA,GAAsB,MAAM/E,GAAAA,CAAI,CAAC,SAAS,EAAE2D,YAAAA,CAAa,aAAa,CAAC,CAAA;AAC7E,oBAAA,MAAMqB,iBAAAA,GAAoBC,aAAAA,CAAcF,mBAAAA,CAAoBhF,MAAM,EAAE,iCAAA,CAAA;oBACpE,MAAMmF,kBAAAA,GAAqBC,oBAAoBH,iBAAAA,EAAmB,iCAAA,CAAA;AAClEX,oBAAAA,cAAAA,GAAiBa,mBAAmB9B,OAAO;oBAC3CxD,MAAAA,CAAOE,IAAI,CAAC,CAAC,+DAA+D,EAAE6D,aAAa,YAAY,EAAEU,cAAAA,CAAe,iDAAiD,CAAC,CAAA;AAC9K,gBAAA,CAAA,CAAE,OAAO1C,KAAAA,EAAY;;AAEjB/B,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,gEAAgE,EAAE+B,YAAAA,CAAa,UAAU,EAAEhC,KAAAA,CAAMb,OAAO,CAAC,yCAAyC,CAAC,CAAA;AAChK,oBAAA,MAAMsE,eAAAA,GAAkB,MAAMP,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;oBAC/D,MAAMiB,OAAAA,GAAUJ,cAAcG,eAAAA,EAAiB,cAAA,CAAA;oBAC/C,MAAME,gBAAAA,GAAmBH,oBAAoBE,OAAAA,EAAS,cAAA,CAAA;AACtDhB,oBAAAA,cAAAA,GAAiBiB,iBAAiBlC,OAAO;AAC7C,gBAAA;gBAEA,IAAImC,UAAAA;gBACJ,IAAI;AAAC,oBAAA,OAAA;AAAS,oBAAA,OAAA;AAAS,oBAAA;iBAAQ,CAACvC,QAAQ,CAACH,cAAAA,CAAAA,EAAiB;;oBAEtD,IAAIyB,WAAAA;oBACJ,OAAQzB,cAAAA;wBACJ,KAAK,OAAA;AACDyB,4BAAAA,WAAAA,GAAckB,qBAAAA,CAAsBnB,cAAAA,CAAAA;AACpC,4BAAA;wBACJ,KAAK,OAAA;AACDC,4BAAAA,WAAAA,GAAcmB,qBAAAA,CAAsBpB,cAAAA,CAAAA;AACpC,4BAAA;wBACJ,KAAK,OAAA;AACDC,4BAAAA,WAAAA,GAAcoB,qBAAAA,CAAsBrB,cAAAA,CAAAA;AACpC,4BAAA;AACJ,wBAAA;AACIC,4BAAAA,WAAAA,GAAckB,qBAAAA,CAAsBnB,cAAAA,CAAAA;AAC5C;AACAkB,oBAAAA,UAAAA,GAAa,GAAGjB,WAAAA,CAAY,CAAC,EAAE1B,aAAAA,CAAc,EAAE,CAAC;gBACpD,CAAA,MAAO;;AAEH,oBAAA,MAAM+C,YAAAA,GAAe9C,cAAAA,CAAeI,OAAO,CAAC,IAAA,EAAM,EAAA,CAAA;AAClDsC,oBAAAA,UAAAA,GAAa,GAAGI,YAAAA,CAAa,CAAC,EAAE/C,aAAAA,CAAc,EAAE,CAAC;AACrD,gBAAA;;AAGA,gBAAA,MAAMwC,eAAAA,GAAkB,MAAMP,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;gBAC/D,MAAMiB,OAAAA,GAAUJ,cAAcG,eAAAA,EAAiB,cAAA,CAAA;gBAC/C,MAAME,gBAAAA,GAAmBH,oBAAoBE,OAAAA,EAAS,cAAA,CAAA;;AAGtDC,gBAAAA,gBAAAA,CAAiBlC,OAAO,GAAGmC,UAAAA;gBAC3B,MAAMV,OAAAA,CAAQe,SAAS,CAAC,cAAA,EAAgB1B,IAAAA,CAAK2B,SAAS,CAACP,gBAAAA,EAAkB,IAAA,EAAM,CAAA,CAAA,GAAK,IAAA,EAAM,OAAA,CAAA;AAE1F1F,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,+DAA+D,EAAEyF,UAAAA,CAAW,oBAAoB,CAAC,CAAA;;AAG9G,gBAAA,MAAMvF,GAAAA,CAAI,sBAAA,CAAA;AACV,gBAAA,MAAMA,IAAI,CAAC,8BAA8B,EAAEuF,UAAAA,CAAW,CAAC,CAAC,CAAA;;AAGxD,gBAAA,IAAI9C,4BAAAA,EAA8B;oBAC9B,OAAO,2DAAA;AACX,gBAAA,CAAA,MAAO,IAAIH,aAAAA,EAAe;oBACtB,OAAO,iDAAA;AACX,gBAAA,CAAA,MAAO,IAAIC,aAAAA,EAAe;oBACtB,OAAO,iDAAA;AACX,gBAAA,CAAA,MAAO,IAAIC,eAAAA,EAAiB;oBACxB,OAAO,oDAAA;gBACX,CAAA,MAAO;AACH,oBAAA,OAAO,CAAC,yBAAyB,EAAE9C,aAAAA,CAAc,cAAc,EAAE6F,UAAAA,CAAAA,CAAY;AACjF,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO5D,KAAAA,EAAY;gBACjB/B,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yDAAyD,EAAEA,KAAAA,CAAMb,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBACtH,MAAM,IAAIoC,KAAAA,CAAM,CAAC,eAAe,EAAEL,eAAe,UAAU,EAAElB,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAChF,YAAA;QACJ,CAAA,MAAO;YACH,IAAI;AAAC,gBAAA,OAAA;AAAS,gBAAA,OAAA;AAAS,gBAAA;aAAQ,CAACkC,QAAQ,CAACH,cAAAA,CAAAA,EAAiB;gBACtDjD,MAAAA,CAAOE,IAAI,CAAC,CAAC,wCAAwC,EAAE+C,cAAAA,CAAe,SAAS,EAAED,aAAAA,CAAAA,CAAe,CAAA;YACpG,CAAA,MAAO;gBACHhD,MAAAA,CAAOE,IAAI,CAAC,CAAC,4BAA4B,EAAE+C,eAAe,CAAC,EAAED,aAAAA,CAAc,EAAE,CAAC,CAAA;AAClF,YAAA;;AAGA,YAAA,IAAIH,4BAAAA,EAA8B;gBAC9B,OAAO,2DAAA;AACX,YAAA,CAAA,MAAO,IAAIH,aAAAA,EAAe;gBACtB,OAAO,iDAAA;AACX,YAAA,CAAA,MAAO,IAAIC,aAAAA,EAAe;gBACtB,OAAO,iDAAA;AACX,YAAA,CAAA,MAAO,IAAIC,eAAAA,EAAiB;gBACxB,OAAO,oDAAA;YACX,CAAA,MAAO;AACH,gBAAA,OAAO,CAAC,yBAAyB,EAAE9C,aAAAA,CAAc,UAAU,CAAC;AAChE,YAAA;AACJ,QAAA;AAEJ,IAAA,CAAA,CAAE,OAAOiC,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,mDAAA,EAAqDA,KAAAA,CAAMb,OAAO,CAAA;QAC/E,MAAMa,KAAAA;AACV,IAAA;AACJ;;AC7jBA;;AAEC,IACD,MAAMmE,2BAAAA,GAA8B;AAChC,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA;AACH,CAAA;AAED;;;AAGC,IACD,eAAeC,wBAAAA,CAAuBC,SAAiB,EAAEC,MAAW,EAAA;AAChE,IAAA,MAAMrG,MAAAA,GAASsG,SAAAA,EAAAA;AACf,IAAA,MAAMC,aAAAA,GAAgBC,IAAAA,CAAKrF,IAAI,CAACiF,SAAAA,EAAW,YAAA,CAAA;;AAG3C,IAAA,MAAMK,gBAAAA,GAAmB;AACrB,QAAA,cAAA;AACA,QAAA,MAAA;AACA,QAAA,mBAAA;AACA,QAAA,MAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA;AACH,KAAA;;IAGD,IAAI;AACA,QAAA,MAAMC,MAAAA,CAAOH,aAAAA,CAAAA;AACjB,IAAA,CAAA,CAAE,OAAM;QACJF,MAAAA,CAAOM,SAAS,CAACC,MAAM,GAAG,KAAA;AAC1BP,QAAAA,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAACnF,IAAI,CAAC,2BAAA,CAAA;AAC7B2E,QAAAA,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAACnF,IAAI,CAAC,CAAC,iCAAiC,EAAE+E,gBAAAA,CAAiBtF,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC9F,QAAA;AACJ,IAAA;;IAGA,IAAI2F,gBAAAA;IACJ,IAAI;QACAA,gBAAAA,GAAmB,MAAMtC,SAAS+B,aAAAA,EAAe,OAAA,CAAA;AACrD,IAAA,CAAA,CAAE,OAAOxE,KAAAA,EAAY;QACjBsE,MAAAA,CAAOM,SAAS,CAACC,MAAM,GAAG,KAAA;QAC1BP,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAACnF,IAAI,CAAC,CAAC,2BAA2B,EAAEK,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC1E,QAAA;AACJ,IAAA;;IAGA,MAAM6F,cAAAA,GAAiBD,iBAClBvG,KAAK,CAAC,MACNyG,GAAG,CAACtG,CAAAA,IAAAA,GAAQA,IAAAA,CAAKJ,IAAI,EAAA,CAAA,CACrBG,MAAM,CAACC,CAAAA,IAAAA,GAAQA,QAAQ,CAACA,IAAAA,CAAKuG,UAAU,CAAC,GAAA,CAAA,CAAA;;AAG7C,IAAA,MAAMC,kBAA4B,EAAE;IACpC,KAAK,MAAMC,WAAWV,gBAAAA,CAAkB;;AAEpC,QAAA,MAAMW,KAAAA,GAAQL,cAAAA,CAAeM,IAAI,CAAC3G,CAAAA,IAAAA,GAAAA;;YAE9B,IAAIA,IAAAA,KAASyG,SAAS,OAAO,IAAA;;YAG7B,IAAIA,OAAAA,CAAQ/D,QAAQ,CAAC,GAAA,CAAA,EAAM;AACvB,gBAAA,MAAMkE,WAAAA,GAAcH,OAAAA,CAAQ9D,OAAO,CAAC,GAAA,EAAK,EAAA,CAAA;;AAEzC,gBAAA,OAAO3C,SAASyG,OAAAA,IAAWzG,IAAAA,KAAS4G,WAAAA,IAAe5G,IAAAA,CAAKuG,UAAU,CAACK,WAAAA,CAAAA;AACvE,YAAA;;YAGA,IAAIH,OAAAA,CAAQI,QAAQ,CAAC,GAAA,CAAA,EAAM;AACvB,gBAAA,MAAMD,WAAAA,GAAcH,OAAAA,CAAQK,KAAK,CAAC,GAAG,EAAC,CAAA;AACtC,gBAAA,OAAO9G,SAAS4G,WAAAA,IAAe5G,IAAAA,KAASyG,OAAAA,IAAWzG,IAAAA,CAAKuG,UAAU,CAACE,OAAAA,CAAAA;AACvE,YAAA;;YAGA,IAAIzG,IAAAA,CAAK6G,QAAQ,CAAC,GAAA,CAAA,EAAM;AACpB,gBAAA,MAAME,QAAAA,GAAW/G,IAAAA,CAAK8G,KAAK,CAAC,GAAG,EAAC,CAAA;AAChC,gBAAA,OAAOC,QAAAA,KAAaN,OAAAA,IAAWzG,IAAAA,CAAKuG,UAAU,CAACE,OAAAA,GAAU,GAAA,CAAA;AAC7D,YAAA;YAEA,OAAO,KAAA;AACX,QAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACC,KAAAA,EAAO;AACRF,YAAAA,eAAAA,CAAgBxF,IAAI,CAACyF,OAAAA,CAAAA;AACzB,QAAA;AACJ,IAAA;;IAGA,MAAMO,eAAAA,GAAkBR,eAAAA,CAAgBzG,MAAM,CAACkH,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAEvE,QAAQ,CAAC,UAAA,CAAA,IAAeuE,CAAAA,KAAM,mBAAA,CAAA;IACrF,IAAID,eAAAA,CAAgB9G,MAAM,GAAG,CAAA,EAAG;QAC5ByF,MAAAA,CAAOM,SAAS,CAACC,MAAM,GAAG,KAAA;AAC1BP,QAAAA,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAACnF,IAAI,CAAC,CAAC,2BAA2B,EAAEgG,eAAAA,CAAgBvG,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AACvFkF,QAAAA,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAACnF,IAAI,CAAC,uEAAA,CAAA;AACjC,IAAA;IAEA1B,MAAAA,CAAO8E,KAAK,CAAC,CAAC,iBAAiB,EAAEuB,MAAAA,CAAOM,SAAS,CAACC,MAAM,GAAG,QAAA,GAAW,QAAA,CAAA,CAAU,CAAA;AACpF;AAEA;;IAGO,eAAe3E,SAAAA,CAAQ2F,MAAc,EAAA;AAQhB,IAAA,IAAA,+BAAA;QAJPA,wBAAAA,EAAAA,YAAAA;AAHjB,IAAA,MAAM5H,MAAAA,GAASsG,SAAAA,EAAAA;;IAEf,MAAMF,SAAAA,GAAY,MAACwB,CAAexB,SAAS,MAC1BwB,YAAAA,GAAAA,MAAAA,CAAOC,IAAI,MAAA,IAAA,IAAXD,YAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,CAAAA,2BAAAA,YAAAA,CAAaE,WAAW,cAAxBF,wBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,wBAA0B,CAAC,CAAA,CAAE,CAAA,IAC7BG,QAAQC,GAAG,EAAA;;AAG5B,IAAA,MAAMC,mBAAkB,+BAAA,GAACL,OAAeM,uBAAuB,MAAA,IAAA,IAAvC,6CAAA,+BAAA,GAA2C,KAAA;IAEnElI,MAAAA,CAAOE,IAAI,CAAC,CAAC,kCAAkC,EAAEkG,SAAAA,CAAAA,EAAY6B,eAAAA,GAAkB,+BAA+B,gBAAA,CAAA,CAAkB,CAAA;;AAGhI,IAAA,MAAME,gBAAAA,GAAmB;AACrB,QAAA,oBAAA;AACA,QAAA,YAAA;AACA,QAAA,aAAA;AACA,QAAA,YAAA;WACGjC,2BAAAA,CAA4Bc,GAAG,CAAC,CAACG,OAAAA,GAAAA;YAChC,MAAMiB,UAAAA,GAAajB,OAAAA,CAAQI,QAAQ,CAAC,GAAA,CAAA,GAAOJ,QAAQK,KAAK,CAAC,CAAA,EAAG,EAAC,CAAA,GAAKL,OAAAA;AAClE,YAAA,OAAO,CAAC,GAAG,EAAEiB,UAAAA,CAAW,GAAG,CAAC;AAChC,QAAA,CAAA;AACH,KAAA;;IAGD,MAAMC,gBAAAA,GAAmB,MAAMC,uBAAAA,CAAwBlC,SAAAA,EAAW+B,gBAAAA,CAAAA;IAClE,MAAMI,MAAAA,GAASF,gBAAAA,CAAiBzH,MAAM,GAAG,CAAA;AAEzCZ,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,SAAS,EAAEqI,MAAAA,GAAS,MAAA,GAAS,gBAAA,CAAiB,MAAM,EAAEF,gBAAAA,CAAiBzH,MAAM,CAAC,WAAW,CAAC,CAAA;AAEvG,IAAA,MAAMyF,MAAAA,GAAS;QACXM,SAAAA,EAAW;YAAEC,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ;AAAe,SAAA;QAClD2B,MAAAA,EAAQ;YAAE5B,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ;AAAe,SAAA;QAC/C4B,UAAAA,EAAY;YAAE7B,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ;AAAe,SAAA;QACnD6B,cAAAA,EAAgB;YAAE9B,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,EAAE;AAAc8B,YAAAA,QAAAA,EAAU;AAAe,SAAA;QACjFC,UAAAA,EAAY;YAAEhC,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ;AAAe,SAAA;QACnDgC,UAAAA,EAAY;YAAEjC,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,EAAE;AAAc8B,YAAAA,QAAAA,EAAU;AAAe,SAAA;QAC7EG,OAAAA,EAAS;YAAElC,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,EAAE;AAAc8B,YAAAA,QAAAA,EAAU;AAAe,SAAA;QAC1EI,eAAAA,EAAiB;YAAEnC,MAAAA,EAAQ,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,EAAE;AAAc8B,YAAAA,QAAAA,EAAU;AAAe;AACtF,KAAA;IAEA,MAAMK,eAAAA,GAAkBT,SAASF,gBAAAA,GAAmB;QAAC7B,IAAAA,CAAKrF,IAAI,CAACiF,SAAAA,EAAW,cAAA;AAAgB,KAAA;;AAG1F,IAAA,MAAMD,yBAAuBC,SAAAA,EAAWC,MAAAA,CAAAA;;AAGxC,IAAA,MAAM4C,oBAAoB,IAAIC,GAAAA,EAAAA;IAC9B,KAAK,MAAMC,eAAeH,eAAAA,CAAiB;QACvC,IAAI;YACA,MAAMI,cAAAA,GAAiB,MAAM5E,QAAAA,CAAS2E,WAAAA,EAAa,OAAA,CAAA;YACnD,MAAM1D,OAAAA,GAAUnB,IAAAA,CAAKC,KAAK,CAAC6E,cAAAA,CAAAA;YAC3B,IAAI3D,OAAAA,CAAQZ,IAAI,EAAE;gBACdoE,iBAAAA,CAAkBI,GAAG,CAAC5D,OAAAA,CAAQZ,IAAI,CAAA;AACtC,YAAA;AACJ,QAAA,CAAA,CAAE,OAAM;;AAER,QAAA;AACJ,IAAA;IAEA,KAAK,MAAMsE,eAAeH,eAAAA,CAAiB;AAmJhBvD,QAAAA,IAAAA,mBAAAA;QAlJvB,MAAM6D,MAAAA,GAAS9C,IAAAA,CAAK+C,OAAO,CAACJ,WAAAA,CAAAA;QAC5B,MAAMC,cAAAA,GAAiB,MAAM5E,QAAAA,CAAS2E,WAAAA,EAAa,OAAA,CAAA;QACnD,MAAM1D,OAAAA,GAAUnB,IAAAA,CAAKC,KAAK,CAAC6E,cAAAA,CAAAA;AAC3B,QAAA,MAAMI,UAAU/D,OAAAA,CAAQZ,IAAI,IAAI2B,IAAAA,CAAKiD,QAAQ,CAACH,MAAAA,CAAAA;;QAG9C,IAAI;YACA,MAAM7F,SAAAA,GAAY,MAAMiG,mBAAAA,CAAoBJ,MAAAA,CAAAA;AAC5C,YAAA,IAAI7F,UAAU+E,MAAM,KAAK,UAAU/E,SAAAA,CAAU+E,MAAM,KAAK,QAAA,EAAU;gBAC9DnC,MAAAA,CAAOmC,MAAM,CAAC5B,MAAM,GAAG,KAAA;AACvBP,gBAAAA,MAAAA,CAAOmC,MAAM,CAAC3B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,OAAO,EAAE/F,SAAAA,CAAU+E,MAAM,CAAC,OAAO,CAAC,CAAA;AAC3E,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOzG,KAAAA,EAAY;AACjBsE,YAAAA,MAAAA,CAAOmC,MAAM,CAAC3B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,2BAA2B,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AAC9F,QAAA;;QAGA,IAAI;AACA,YAAA,MAAM3B,IAAI,WAAA,EAAa;gBAAE4H,GAAAA,EAAKsB;AAAO,aAAA,CAAA;AACrC,YAAA,MAAM,EAAEnJ,MAAAA,EAAQwJ,YAAY,EAAE,GAAG,MAAMvJ,IAAI,gBAAA,EAAkB;gBAAE4H,GAAAA,EAAKsB;AAAO,aAAA,CAAA;YAE3E,IAAIK,YAAAA,CAAavG,QAAQ,CAAC,QAAA,CAAA,EAAW;gBACjCiD,MAAAA,CAAOoC,UAAU,CAAC7B,MAAM,GAAG,KAAA;gBAC3B,MAAMvF,KAAAA,GAAQsI,YAAAA,CAAatI,KAAK,CAAC,cAAA,CAAA;AACjC,gBAAA,MAAMuI,KAAAA,GAAQvI,KAAAA,GAAQA,KAAK,CAAC,EAAE,GAAG,MAAA;AACjCgF,gBAAAA,MAAAA,CAAOoC,UAAU,CAAC5B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,IAAI,EAAEI,KAAAA,CAAM,sBAAsB,CAAC,CAAA;AAChF,YAAA;AACJ,QAAA,CAAA,CAAE,OAAO7H,KAAAA,EAAY;AACjBsE,YAAAA,MAAAA,CAAOoC,UAAU,CAAC5B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,gCAAgC,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AACvG,QAAA;;QAGA,IAAI;YACA,MAAM0B,SAAAA,GAAY,MAAMiG,mBAAAA,CAAoBJ,MAAAA,CAAAA;YAC5C,MAAMjH,aAAAA,GAAgBoB,UAAU+E,MAAM;YACtC,MAAMzE,YAAAA,GAAe;;YAGrB,IAAI1B,aAAAA,KAAkB,MAAA,IAAUA,aAAAA,KAAkB,QAAA,EAAU;;AAExD,gBAAA,MAAMjC,IAAI,kBAAA,EAAoB;oBAAE4H,GAAAA,EAAKsB;AAAO,iBAAA,CAAA;;;gBAI5C,IAAI;;;AAGA,oBAAA,MAAMlJ,GAAAA,CACF,CAAC,qCAAqC,EAAE2D,cAAc,EACtD;wBAAEiE,GAAAA,EAAKsB;AAAO,qBAAA,CAAA;;AAIlB,oBAAA,MAAM,EAAEnJ,MAAAA,EAAQ0J,gBAAgB,EAAE,GAAG,MAAMzJ,IAAI,wBAAA,EAA0B;wBAAE4H,GAAAA,EAAKsB;AAAO,qBAAA,CAAA;oBAEvF,IAAIO,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAAUyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAC1DyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAAUyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAC9DyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAAUyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,IAC9DyG,gBAAAA,CAAiBzG,QAAQ,CAAC,KAAA,CAAA,EAAQ;wBACtCiD,MAAAA,CAAOqC,cAAc,CAAC9B,MAAM,GAAG,KAAA;AAC/BP,wBAAAA,MAAAA,CAAOqC,cAAc,CAAC7B,MAAM,CAACnF,IAAI,CAC7B,CAAA,EAAG8H,OAAAA,CAAQ,gCAAgC,EAAEzF,YAAAA,CAAa,OAAO,CAAC,CAAA;AAE1E,oBAAA;;oBAGA,IAAI;AACA,wBAAA,MAAM3D,IAAI,mBAAA,EAAqB;4BAAE4H,GAAAA,EAAKsB,MAAAA;4BAAQQ,oBAAAA,EAAsB;AAAK,yBAAA,CAAA;AAC7E,oBAAA,CAAA,CAAE,OAAM;;AAER,oBAAA;AACJ,gBAAA,CAAA,CAAE,OAAO7F,UAAAA,EAAiB;AASlBA,oBAAAA,IAAAA,mBAAAA,EAA4CA,kBAAAA,EAA2CA,kBAAAA;;oBAP3F,IAAI;AACA,wBAAA,MAAM7D,IAAI,mBAAA,EAAqB;4BAAE4H,GAAAA,EAAKsB,MAAAA;4BAAQQ,oBAAAA,EAAsB;AAAK,yBAAA,CAAA;AAC7E,oBAAA,CAAA,CAAE,OAAM;;AAER,oBAAA;;oBAGA,IAAI7F,CAAAA,CAAAA,mBAAAA,GAAAA,UAAAA,CAAW/C,OAAO,MAAA,IAAA,IAAlB+C,mBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAAA,CAAoBb,QAAQ,CAAC,UAAA,CAAA,MAAA,CAAea,kBAAAA,GAAAA,UAAAA,CAAW8F,MAAM,MAAA,IAAA,IAAjB9F,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAmBb,QAAQ,CAAC,UAAA,CAAA,CAAA,KAAA,CAAea,kBAAAA,GAAAA,UAAAA,CAAW9D,MAAM,MAAA,IAAA,IAAjB8D,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAmBb,QAAQ,CAAC,UAAA,CAAA,CAAA,EAAa;wBAChIiD,MAAAA,CAAOqC,cAAc,CAAC9B,MAAM,GAAG,KAAA;AAC/BP,wBAAAA,MAAAA,CAAOqC,cAAc,CAAC7B,MAAM,CAACnF,IAAI,CAC7B,CAAA,EAAG8H,OAAAA,CAAQ,gCAAgC,EAAEzF,YAAAA,CAAa,OAAO,CAAC,CAAA;oBAE1E,CAAA,MAAO;;AAEHsC,wBAAAA,MAAAA,CAAOqC,cAAc,CAACC,QAAQ,CAACjH,IAAI,CAC/B,CAAA,EAAG8H,OAAAA,CAAQ,wCAAwC,EAAEvF,UAAAA,CAAW/C,OAAO,IAAI+C,UAAAA,CAAAA,CAAY,CAAA;AAE/F,oBAAA;AACJ,gBAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOlC,KAAAA,EAAY;AACjBsE,YAAAA,MAAAA,CAAOqC,cAAc,CAACC,QAAQ,CAACjH,IAAI,CAC/B,CAAA,EAAG8H,OAAAA,CAAQ,wCAAwC,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AAErF,QAAA;;QAGA,MAAMyB,OAAAA,GAAUiC,QAAQjC,OAAO;AAC/B,QAAA,IAAI,CAACA,OAAAA,EAAS;YACV6C,MAAAA,CAAOuC,UAAU,CAAC/B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,kCAAkC,CAAC,CAAA;QAChF,CAAA,MAAO,IAAI,CAACQ,oBAAAA,CAAqBxG,OAAAA,CAAAA,EAAU;YACvC6C,MAAAA,CAAOuC,UAAU,CAAChC,MAAM,GAAG,KAAA;YAC3BP,MAAAA,CAAOuC,UAAU,CAAC/B,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,sBAAsB,EAAEhG,OAAAA,CAAAA,CAAS,CAAA;QAC9E,CAAA,MAAO;;AAEH,YAAA,MAAMkB,cAAclB,OAAAA,CAAQjD,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;YACzC,IAAI;AACA,gBAAA,MAAM,EAAEJ,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,CAAC,SAAS,EAAEoJ,QAAQ,CAAC,EAAE9E,WAAAA,CAAY,QAAQ,CAAC,EAAE;oBAAEsD,GAAAA,EAAKsB,MAAAA;oBAAQQ,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;gBACrH,IAAI3J,MAAAA,CAAOG,IAAI,EAAA,KAAOoE,WAAAA,EAAa;oBAC/B2B,MAAAA,CAAOuC,UAAU,CAAChC,MAAM,GAAG,KAAA;AAC3BP,oBAAAA,MAAAA,CAAOuC,UAAU,CAAC/B,MAAM,CAACnF,IAAI,CACzB,CAAA,EAAG8H,OAAAA,CAAQ,eAAe,EAAE9E,WAAAA,CAAY,6BAA6B,EAAElB,OAAAA,CAAQ,CAAC,CAAC,CAAA;AAEzF,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAM;;AAER,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIiC,OAAAA,CAAQwE,YAAY,IAAIxE,OAAAA,CAAQyE,eAAe,EAAE;YACjD,IAAI;gBACA,MAAMC,UAAAA,GAAa,MAAMC,qBAAAA,CAAsBd,MAAAA,CAAAA;AAC/C,gBAAA,MAAMe,OAAAA,GAAU;AACZ,oBAAA,GAAG5E,QAAQwE,YAAY;AACvB,oBAAA,GAAGxE,QAAQyE;AACf,iBAAA;gBAEA,MAAMI,SAAAA,GAAYC,MAAAA,CAAOC,IAAI,CAACH,OAAAA,CAAAA,CAAS5J,MAAM,CAACgK,CAAAA,GAAAA,GAAOxB,iBAAAA,CAAkByB,GAAG,CAACD,GAAAA,CAAAA,CAAAA;gBAC3E,MAAME,aAAAA,GAAgBL,UAAU7J,MAAM,CAACgK,CAAAA,GAAAA,GAAO,CAACN,UAAAA,CAAWO,GAAG,CAACD,GAAAA,CAAAA,CAAAA;gBAE9D,IAAIE,aAAAA,CAAc/J,MAAM,GAAG,CAAA,EAAG;;AAE1ByF,oBAAAA,MAAAA,CAAOwC,UAAU,CAACF,QAAQ,CAACjH,IAAI,CAC3B,CAAA,EAAG8H,OAAAA,CAAQ,+CAA+C,EAAEmB,aAAAA,CAAcxJ,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAE9F,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOY,KAAAA,EAAY;AACjBsE,gBAAAA,MAAAA,CAAOwC,UAAU,CAACF,QAAQ,CAACjH,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,gCAAgC,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AACzG,YAAA;AACJ,QAAA;;QAGA,IAAIkG,eAAAA,KAAAA,CAAmBxC,sBAAAA,OAAAA,CAAQmF,UAAU,cAAlBnF,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAoBoF,GAAG,CAAA,EAAE;YAC5C,IAAI;gBACA,MAAMpH,SAAAA,GAAY,MAAMiG,mBAAAA,CAAoBJ,MAAAA,CAAAA;gBAC5C,MAAMjH,aAAAA,GAAgBoB,UAAU+E,MAAM;;AAGtC,gBAAA,MAAMsC,OAAAA,GAAUrF,OAAAA,CAAQmF,UAAU,CAACC,GAAG;gBACtC,MAAMxJ,KAAAA,GAAQyJ,OAAAA,CAAQzJ,KAAK,CAAC,kCAAA,CAAA;AAE5B,gBAAA,IAAIA,KAAAA,EAAO;oBACP,MAAM,GAAG0J,KAAAA,EAAOC,IAAAA,CAAK,GAAG3J,KAAAA;oBAExB,IAAI;AACA,wBAAA,MAAM4J,OAAAA,GAAUC,UAAAA,EAAAA;wBAChB,MAAM,EAAEC,IAAAA,EAAMrC,OAAO,EAAE,GAAG,MAAMmC,OAAAA,CAAQG,KAAK,CAACC,IAAI,CAAC;AAC/CN,4BAAAA,KAAAA;AACAC,4BAAAA,IAAAA;4BACAM,KAAAA,EAAO,MAAA;AACPC,4BAAAA,IAAAA,EAAM,CAAA,EAAGR,KAAAA,CAAM,CAAC,EAAE1I,aAAAA,CAAAA;AACtB,yBAAA,CAAA;wBAEA,IAAIyG,OAAAA,CAAQlI,MAAM,GAAG,CAAA,EAAG;4BACpByF,MAAAA,CAAOyC,OAAO,CAAClC,MAAM,GAAG,KAAA;4BACxB,KAAK,MAAM4E,MAAM1C,OAAAA,CAAS;AACtB,gCAAA,MAAM2C,SAAS,CAAC,IAAI,EAAED,EAAAA,CAAGE,MAAM,CAAC,EAAE,EAAEF,EAAAA,CAAGG,KAAK,CAAC,EAAE,EAAEH,GAAGI,QAAQ,CAAC,CAAC,CAAC;gCAC/DvF,MAAAA,CAAOyC,OAAO,CAACjC,MAAM,CAACnF,IAAI,CAAC,CAAA,EAAG8H,OAAAA,CAAQ,EAAE,EAAEiC,MAAAA,CAAAA,CAAQ,CAAA;AACtD,4BAAA;AACJ,wBAAA;AACJ,oBAAA,CAAA,CAAE,OAAOI,OAAAA,EAAc;AAEdA,wBAAAA,IAAAA,gBAAAA;;AAAL,wBAAA,IAAI,GAACA,gBAAAA,GAAAA,OAAAA,CAAQ3K,OAAO,MAAA,IAAA,IAAf2K,gBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAiBzI,QAAQ,CAAC,YAAW,CAACyI,QAAQC,MAAM,IAAID,QAAQC,MAAM,KAAK,GAAE,CAAA,EAAI;AAClFzF,4BAAAA,MAAAA,CAAOyC,OAAO,CAACH,QAAQ,CAACjH,IAAI,CACxB,CAAA,EAAG8H,OAAAA,CAAQ,wBAAwB,EAAEqC,OAAAA,CAAQ3K,OAAO,IAAI2K,OAAAA,CAAAA,CAAS,CAAA;AAEzE,wBAAA;AACJ,oBAAA;AACJ,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO9J,KAAAA,EAAY;;AAEjBsE,gBAAAA,MAAAA,CAAOyC,OAAO,CAACH,QAAQ,CAACjH,IAAI,CACxB,CAAA,EAAG8H,OAAAA,CAAQ,iCAAiC,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AAE9E,YAAA;AACJ,QAAA;;;;QAKA,IAAK6F,MAAAA,CAAeM,uBAAuB,EAAE;YACzC,IAAI;AACAlI,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAA,EAAGsJ,OAAAA,CAAQ,0CAA0C,CAAC,CAAA;;gBAGlE,IAAI;AACA,oBAAA,MAAMpJ,IAAI,eAAA,EAAiB;wBAAE4H,GAAAA,EAAKsB;AAAO,qBAAA,CAAA;AACzCtJ,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAA,EAAG0E,OAAAA,CAAQ,oBAAoB,CAAC,CAAA;AACjD,gBAAA,CAAA,CAAE,OAAOuC,UAAAA,EAAiB;oBACtB1F,MAAAA,CAAO0C,eAAe,CAACnC,MAAM,GAAG,KAAA;AAChCP,oBAAAA,MAAAA,CAAO0C,eAAe,CAAClC,MAAM,CAACnF,IAAI,CAC9B,CAAA,EAAG8H,OAAAA,CAAQ,gBAAgB,EAAEuC,UAAAA,CAAW7K,OAAO,IAAI6K,UAAAA,CAAAA,CAAY,CAAA;AAEvE,gBAAA;;gBAGA,IAAI;AACA,oBAAA,MAAM3L,IAAI,UAAA,EAAY;wBAAE4H,GAAAA,EAAKsB;AAAO,qBAAA,CAAA;AACpCtJ,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAA,EAAG0E,OAAAA,CAAQ,mBAAmB,CAAC,CAAA;AAChD,gBAAA,CAAA,CAAE,OAAOwC,SAAAA,EAAgB;oBACrB3F,MAAAA,CAAO0C,eAAe,CAACnC,MAAM,GAAG,KAAA;AAChCP,oBAAAA,MAAAA,CAAO0C,eAAe,CAAClC,MAAM,CAACnF,IAAI,CAC9B,CAAA,EAAG8H,OAAAA,CAAQ,eAAe,EAAEwC,SAAAA,CAAU9K,OAAO,IAAI8K,SAAAA,CAAAA,CAAW,CAAA;AAEpE,gBAAA;;gBAGA,IAAI;AACA,oBAAA,MAAM5L,IAAI,uBAAA,EAAyB;wBAAE4H,GAAAA,EAAKsB;AAAO,qBAAA,CAAA;AACjDtJ,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAA,EAAG0E,OAAAA,CAAQ,8BAA8B,CAAC,CAAA;AAC3D,gBAAA,CAAA,CAAE,OAAOyC,YAAAA,EAAmB;oBACxB5F,MAAAA,CAAO0C,eAAe,CAACnC,MAAM,GAAG,KAAA;AAChCP,oBAAAA,MAAAA,CAAO0C,eAAe,CAAClC,MAAM,CAACnF,IAAI,CAC9B,CAAA,EAAG8H,OAAAA,CAAQ,0BAA0B,EAAEyC,YAAAA,CAAa/K,OAAO,IAAI+K,YAAAA,CAAAA,CAAc,CAAA;AAErF,gBAAA;;AAGA,gBAAA,IAAI,CAAClE,OAAAA,CAAQmE,GAAG,CAACC,SAAS,EAAE;oBACxB9F,MAAAA,CAAO0C,eAAe,CAACJ,QAAQ,CAACjH,IAAI,CAChC,CAAA,EAAG8H,OAAAA,CAAQ,kEAAkE,CAAC,CAAA;AAEtF,gBAAA;;AAGA,gBAAA,MAAM4C,eAAe5F,IAAAA,CAAKrF,IAAI,CAACmI,MAAAA,EAAQ,WAAW,WAAA,EAAa,iBAAA,CAAA;gBAC/D,IAAI;AACA,oBAAA,MAAM9E,SAAS4H,YAAAA,EAAc,OAAA,CAAA;AAC7BpM,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAA,EAAG0E,OAAAA,CAAQ,6BAA6B,CAAC,CAAA;AAC1D,gBAAA,CAAA,CAAE,OAAM;oBACJnD,MAAAA,CAAO0C,eAAe,CAACJ,QAAQ,CAACjH,IAAI,CAChC,CAAA,EAAG8H,OAAAA,CAAQ,qEAAqE,CAAC,CAAA;AAEzF,gBAAA;AAEJ,YAAA,CAAA,CAAE,OAAOzH,KAAAA,EAAY;AACjBsE,gBAAAA,MAAAA,CAAO0C,eAAe,CAACJ,QAAQ,CAACjH,IAAI,CAChC,CAAA,EAAG8H,OAAAA,CAAQ,wCAAwC,EAAEzH,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAAA,CAAO,CAAA;AAErF,YAAA;AACJ,QAAA;AACJ,IAAA;;;;AAKA,IAAA,MAAMsK,SAAAA,GAAYhG,MAAAA,CAAOM,SAAS,CAACC,MAAM,IACxBP,MAAAA,CAAOmC,MAAM,CAAC5B,MAAM,IACpBP,MAAAA,CAAOoC,UAAU,CAAC7B,MAAM,IACxBP,MAAAA,CAAOqC,cAAc,CAAC9B,MAAM,IAC5BP,MAAAA,CAAOuC,UAAU,CAAChC,MAAM,KACvBqB,kBAAkB5B,MAAAA,CAAOyC,OAAO,CAAClC,MAAM,GAAG,IAAG,CAAA;AAE/D,IAAA,MAAM0F,WAAAA,GAAcjG,MAAAA,CAAOwC,UAAU,CAACF,QAAQ,CAAC/H,MAAM,GAAG,CAAA,IACrCyF,MAAAA,CAAOqC,cAAc,CAACC,QAAQ,CAAC/H,MAAM,GAAG,CAAA,IACxCyF,MAAAA,CAAOyC,OAAO,CAACH,QAAQ,CAAC/H,MAAM,GAAG,CAAA,IACjCyF,MAAAA,CAAO0C,eAAe,CAACJ,QAAQ,CAAC/H,MAAM,GAAG,CAAA;;IAG5D,IAAI2L,OAAAA,GAAU,CAAC,EAAE,EAAE,IAAIC,MAAM,CAAC,EAAA,CAAA,CAAI,EAAE,CAAC;AACrCD,IAAAA,OAAAA,IAAW,CAAC,2BAA2B,EAAEtE,kBAAkB,4BAAA,GAA+B,gBAAA,CAAiB,EAAE,CAAC;AAC9GsE,IAAAA,OAAAA,IAAW,GAAG,GAAA,CAAIC,MAAM,CAAC,EAAA,CAAA,CAAI,IAAI,CAAC;AAClCD,IAAAA,OAAAA,IAAW,CAAC,MAAM,EAAEhE,SAAS,iBAAA,GAAoB,gBAAA,CAAiB,EAAE,CAAC;AACrEgE,IAAAA,OAAAA,IAAW,CAAC,kBAAkB,EAAEvD,gBAAgBpI,MAAM,CAAC,IAAI,CAAC;AAE5D,IAAA,IAAIyL,SAAAA,EAAW;QACXE,OAAAA,IAAW,CAAC,mCAAmC,CAAC;QAChDA,OAAAA,IAAW,CAAC,6BAA6B,CAAC;QAC1CA,OAAAA,IAAW,CAAC,wBAAwB,CAAC;QACrCA,OAAAA,IAAW,CAAC,mBAAmB,CAAC;QAChCA,OAAAA,IAAW,CAAC,iBAAiB,CAAC;QAC9BA,OAAAA,IAAW,CAAC,kCAAkC,CAAC;QAC/CA,OAAAA,IAAW,CAAC,kBAAkB,CAAC;AAC/B,QAAA,IAAItE,eAAAA,EAAiB;YACjBsE,OAAAA,IAAW,CAAC,iBAAiB,CAAC;AAClC,QAAA;AACA,QAAA,IAAI,CAACD,WAAAA,EAAa;YACdC,OAAAA,IAAW,CAAC,mCAAmC,CAAC;AACpD,QAAA;IACJ,CAAA,MAAO;QACHA,OAAAA,IAAW,CAAC,yBAAyB,CAAC;AAEtC,QAAA,IAAI,CAAClG,MAAAA,CAAOM,SAAS,CAACC,MAAM,EAAE;YAC1B2F,OAAAA,IAAW,CAAC,qBAAqB,CAAC;AAClClG,YAAAA,MAAAA,CAAOM,SAAS,CAACE,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YACrEF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAI,CAAClG,MAAAA,CAAOmC,MAAM,CAAC5B,MAAM,EAAE;YACvB2F,OAAAA,IAAW,CAAC,kBAAkB,CAAC;AAC/BlG,YAAAA,MAAAA,CAAOmC,MAAM,CAAC3B,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YAClEF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAI,CAAClG,MAAAA,CAAOoC,UAAU,CAAC7B,MAAM,EAAE;YAC3B2F,OAAAA,IAAW,CAAC,uBAAuB,CAAC;AACpClG,YAAAA,MAAAA,CAAOoC,UAAU,CAAC5B,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YACtEF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAI,CAAClG,MAAAA,CAAOqC,cAAc,CAAC9B,MAAM,EAAE;YAC/B2F,OAAAA,IAAW,CAAC,0BAA0B,CAAC;AACvClG,YAAAA,MAAAA,CAAOqC,cAAc,CAAC7B,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YAC1EF,OAAAA,IAAW,CAAC,EAAE,CAAC;YACfA,OAAAA,IAAW,CAAC,gCAAgC,CAAC;YAC7CA,OAAAA,IAAW,CAAC,2CAA2C,CAAC;YACxDA,OAAAA,IAAW,CAAC,0DAA0D,CAAC;YACvEA,OAAAA,IAAW,CAAC,wCAAwC,CAAC;YACrDA,OAAAA,IAAW,CAAC,iDAAiD,CAAC;YAC9DA,OAAAA,IAAW,CAAC,6CAA6C,CAAC;YAC1DA,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAI,CAAClG,MAAAA,CAAOuC,UAAU,CAAChC,MAAM,EAAE;YAC3B2F,OAAAA,IAAW,CAAC,uBAAuB,CAAC;AACpClG,YAAAA,MAAAA,CAAOuC,UAAU,CAAC/B,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YACtEF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAItE,mBAAmB,CAAC5B,MAAAA,CAAOyC,OAAO,CAAClC,MAAM,EAAE;YAC3C2F,OAAAA,IAAW,CAAC,mBAAmB,CAAC;AAChClG,YAAAA,MAAAA,CAAOyC,OAAO,CAACjC,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YACnEF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AAEA,QAAA,IAAI,CAAClG,MAAAA,CAAO0C,eAAe,CAACnC,MAAM,EAAE;YAChC2F,OAAAA,IAAW,CAAC,4BAA4B,CAAC;AACzClG,YAAAA,MAAAA,CAAO0C,eAAe,CAAClC,MAAM,CAAChF,OAAO,CAAC4K,CAAAA,KAAAA,GAASF,OAAAA,IAAW,CAAC,KAAK,EAAEE,KAAAA,CAAM,EAAE,CAAC,CAAA;YAC3EF,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,QAAA;AACJ,IAAA;;AAGA,IAAA,IAAID,WAAAA,EAAa;QACbC,OAAAA,IAAW,CAAC,sBAAsB,CAAC;AACnClG,QAAAA,MAAAA,CAAOwC,UAAU,CAACF,QAAQ,CAAC9G,OAAO,CAAC6K,CAAAA,OAAAA,GAAWH,OAAAA,IAAW,CAAC,KAAK,EAAEG,OAAAA,CAAQ,EAAE,CAAC,CAAA;AAC5ErG,QAAAA,MAAAA,CAAOqC,cAAc,CAACC,QAAQ,CAAC9G,OAAO,CAAC6K,CAAAA,OAAAA,GAAWH,OAAAA,IAAW,CAAC,KAAK,EAAEG,OAAAA,CAAQ,EAAE,CAAC,CAAA;AAChF,QAAA,IAAIzE,eAAAA,EAAiB;AACjB5B,YAAAA,MAAAA,CAAOyC,OAAO,CAACH,QAAQ,CAAC9G,OAAO,CAAC6K,CAAAA,OAAAA,GAAWH,OAAAA,IAAW,CAAC,KAAK,EAAEG,OAAAA,CAAQ,EAAE,CAAC,CAAA;AAC7E,QAAA;AACArG,QAAAA,MAAAA,CAAO0C,eAAe,CAACJ,QAAQ,CAAC9G,OAAO,CAAC6K,CAAAA,OAAAA,GAAWH,OAAAA,IAAW,CAAC,KAAK,EAAEG,OAAAA,CAAQ,EAAE,CAAC,CAAA;QACjFH,OAAAA,IAAW,CAAC,EAAE,CAAC;AACnB,IAAA;AAEAA,IAAAA,OAAAA,IAAW,GAAG,GAAA,CAAIC,MAAM,CAAC,EAAA,CAAA,CAAI,EAAE,CAAC;IAEhC,OAAOD,OAAAA;AACX;;ACxfA;AACA,eAAeI,gBAAAA,CAAiBC,YAAkC,EAAE5M,MAAW,EAAA;AAC3E,IAAA,IAAI,CAAC4M,YAAAA,IAAgBA,YAAAA,CAAahM,MAAM,KAAK,CAAA,EAAG;QAC5C,OAAO,EAAA;AACX,IAAA;AAEA,IAAA,MAAMqE,OAAAA,GAAUC,aAAAA,EAAAA;AAChB,IAAA,MAAM2H,eAAyB,EAAE;IAEjC,KAAK,MAAMC,YAAYF,YAAAA,CAAc;QACjC,IAAI;AACA,YAAA,MAAMG,OAAAA,GAAU,MAAM9H,OAAAA,CAAQT,QAAQ,CAACsI,QAAAA,EAAU,MAAA,CAAA;YACjDD,YAAAA,CAAanL,IAAI,CAAC,CAAC,gBAAgB,EAAEoL,SAAS,IAAI,EAAEC,OAAAA,CAAQ,EAAE,CAAC,CAAA;AAC/D/M,YAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,wBAAwB,EAAEgI,QAAAA,CAAAA,CAAU,CAAA;AACtD,QAAA,CAAA,CAAE,OAAO/K,KAAAA,EAAY;YACjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,4BAA4B,EAAE8K,SAAS,EAAE,EAAE/K,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC3E,QAAA;AACJ,IAAA;IAEA,OAAO2L,YAAAA,CAAa1L,IAAI,CAAC,WAAA,CAAA;AAC7B;AAEA;AACA,eAAe6L,8BAA8BC,cAA8B,EAAA;AACvE,IAAA,MAAMC,aAAAA,GAAgB;AAClB,QAAA,2EAAA;AACA,QAAA,6DAAA;AACA,QAAA;AACH,KAAA;IAED,MAAMH,OAAAA,GAAU,GAAGE,cAAAA,CAAetB,KAAK,CAAC,IAAI,EAAEsB,cAAAA,CAAeE,IAAI,CAAA,CAAE;AACnE,IAAA,MAAMC,MAAAA,GAAS,MAAMC,mBAAAA,CAAoBN,OAAAA,EAASG,aAAAA,EAAe,KAAA,CAAA;AAEjE,IAAA,MAAMI,KAAAA,GAAQF,MAAAA,CAAOL,OAAO,CAACxM,KAAK,CAAC,IAAA,CAAA;AACnC,IAAA,MAAMoL,KAAAA,GAAQ2B,KAAK,CAAC,CAAA,CAAE,CAAChN,IAAI,EAAA;IAC3B,MAAM6M,IAAAA,GAAOG,MAAM9F,KAAK,CAAC,GAAGrG,IAAI,CAAC,MAAMb,IAAI,EAAA;IAE3C,OAAO;AAAEqL,QAAAA,KAAAA;AAAOwB,QAAAA;AAAK,KAAA;AACzB;AAEA;AACA,eAAeI,0BAAAA,CACXN,cAA8B,EAC9B/K,SAAiB,EACjBsL,YAAiB,EACjBC,aAAkB,EAClBC,eAAuB,EACvBC,UAAkB,EAClBC,WAAmB,EAAA;;IAGnB,MAAMC,mBAAAA,GAAsB,GAAGZ,cAAAA,CAAetB,KAAK,CAAC,IAAI,EAAEsB,cAAAA,CAAeE,IAAI,CAAA,CAAE;IAC/E,MAAMW,YAAAA,GAAe,MAAMC,sBAAAA,CAAuB,eAAA,EAAiBF,mBAAAA,CAAAA;AAEnE,IAAA,MAAMG,iBAAAA,GAA0C;QAC5CC,WAAAA,EAAa,eAAA;QACbC,oBAAAA,EAAsB,OAAOV,cAAcW,cAAAA,EAAgBV,aAAAA,GAAAA;gBAepCW,0BAAAA,EAAAA,kBAAAA;AAdnB,YAAA,MAAMC,wBAAAA,GAA2B;gBAC7BV,UAAAA,EAAYA,UAAAA;gBACZC,WAAAA,EAAaA,WAAAA;gBACbU,YAAAA,EAAc,CAAC,kEAAkE,EAAER,YAAAA,CAAa;;;QAGxG,EAAEK,cAAAA,CAAexC,KAAK,CAAC;OACxB,EAAEwC,cAAAA,CAAehB,IAAI,CAAC;;sIAEyG;AAC1H,aAAA;AACA,YAAA,MAAMoB,YAAAA,GAAe,MAAMC,mBAAAA,CAAoBhB,YAAAA,EAAca,wBAAAA,EAA0BZ,aAAAA,CAAAA;;AAEvF,YAAA,MAAMW,WAAWK,UAAAA,CAAWvM,SAAAA,CAAAA;AAC5B,YAAA,MAAMwM,aAAaN,CAAAA,CAAAA,kBAAAA,GAAAA,QAAAA,CAASO,QAAQ,cAAjBP,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,CAAAA,0BAAAA,GAAAA,kBAAAA,CAAmBQ,OAAO,cAA1BR,0BAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,0BAAAA,CAA4BS,KAAK,KAAIT,QAAAA,CAASS,KAAK,IAAI,aAAA;YAC1E,OAAOC,SAAAA,CAAUC,MAAM,CAAC;AAAE/O,gBAAAA,MAAAA,EAAQoC,eAAAA,CAAgB,KAAA;AAAO,aAAA,CAAA,CAAG4M,YAAY,CAACN,UAAAA,EAAqBH,YAAAA,CAAaU,MAAM,CAAA;AACrH,QAAA,CAAA;QACAC,OAAAA,EAAS,OAAOC,SAASjN,SAAAA,EAAWwL,eAAAA,GAAAA;AAIbU,YAAAA,IAAAA,0BAAAA,EAAAA,oBACKA,2BAAAA,EAAAA,mBAAAA;AAJxB,YAAA,MAAMA,WAAWK,UAAAA,CAAWvM,SAAAA,CAAAA;AAC5B,YAAA,MAAMkN,mBAAmBC,oBAAAA,CAAqB3B,eAAAA,CAAAA;AAC9C,YAAA,MAAM4B,WAAWC,mBAAAA,CAAoB,KAAA,CAAA;AACrC,YAAA,MAAMb,aAAaN,CAAAA,CAAAA,kBAAAA,GAAAA,QAAAA,CAASO,QAAQ,cAAjBP,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,CAAAA,0BAAAA,GAAAA,kBAAAA,CAAmBQ,OAAO,cAA1BR,0BAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,0BAAAA,CAA4BS,KAAK,KAAIT,QAAAA,CAASS,KAAK,IAAI,aAAA;AAC1E,YAAA,MAAMW,kBAAkBpB,CAAAA,CAAAA,mBAAAA,GAAAA,QAAAA,CAASO,QAAQ,cAAjBP,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,CAAAA,2BAAAA,GAAAA,mBAAAA,CAAmBQ,OAAO,cAA1BR,2BAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,2BAAAA,CAA4BqB,SAAS,KAAIrB,SAASqB,SAAS;AACnF,YAAA,OAAO,MAAMC,yBAAAA,CACTP,OAAAA,CAAQQ,QAAQ,EAChB;gBACId,KAAAA,EAAOH,UAAAA;AACPc,gBAAAA,eAAAA;gBACAI,cAAAA,EAAgB;oBAAEC,IAAAA,EAAM;AAAc,iBAAA;AACtC/K,gBAAAA,KAAAA,EAAO5C,UAAU4C,KAAK;gBACtBgL,gBAAAA,EAAkBC,aAAAA,CAAcrC,iBAAiBsC,6BAAAA,CAA8B,iBAAA,CAAA,CAAA;gBAC/EC,iBAAAA,EAAmBF,aAAAA,CAAcrC,iBAAiBwC,8BAAAA,CAA+B,iBAAA,CAAA,CAAA;gBACjFjL,OAAAA,EAASmK,gBAAAA;gBACTpP,MAAAA,EAAQsP;AACZ,aAAA,CAAA;AAER,QAAA,CAAA;AACAa,QAAAA,eAAAA,EAAiB,CAACC,QAAAA,GAAAA;AACd,YAAA,OAAOC,sBAAAA,CAAuBD,QAAAA,CAAAA;AAClC,QAAA;AACJ,KAAA;AAEA,IAAA,OAAO,MAAME,qBAAAA,CACTrD,cAAAA,EACA/K,SAAAA,EACAsL,YAAAA,EACAC,eACAC,eAAAA,EACAM,iBAAAA,CAAAA;AAER;AAEA;AACA,eAAeuC,uBACXC,aAAkB,EAClB9C,eAAuB,EACvBzI,OAAY,EACZjF,MAAW,EAAA;IAEX,IAAI;AACA,QAAA,MAAMyQ,SAAAA,GAAY,IAAIC,IAAAA,EAAAA,CAAOC,WAAW,EAAA,CAAGtN,OAAO,CAAC,OAAA,EAAS,GAAA,CAAA,CAAK9C,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;QAC9E,MAAMqQ,cAAAA,GAAiBb,cAAcrC,eAAAA,EAAiB,CAAC,2BAA2B,EAAE+C,SAAAA,CAAU,GAAG,CAAC,CAAA;;QAGlG,MAAMI,MAAAA,GAAS,MAAMC,wBAAAA,CAAyB;YAC1CC,UAAAA,EAAYP,aAAAA,CAAcO,UAAU,IAAI,CAAA;YACxCC,iBAAAA,EAAmBR,aAAAA,CAAcQ,iBAAiB,IAAI,CAAA;YACtDC,aAAAA,EAAeT,aAAAA,CAAcS,aAAa,IAAI,EAAA;YAC9CC,WAAAA,EAAaV,aAAAA,CAAcU,WAAW,IAAI,EAAE;YAC5CC,mBAAAA,EAAqBX,aAAAA,CAAcW,mBAAmB,IAAI,EAAE;AAC5DC,YAAAA,YAAAA,EAAcZ,cAAcY,YAAY;AACxCpR,YAAAA;AACJ,SAAA,CAAA;;AAGA,QAAA,MAAMiF,OAAAA,CAAQe,SAAS,CAAC4K,cAAAA,EAAgBC,MAAAA,EAAQ,MAAA,CAAA;AAEhD7Q,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,GAAA,CAAIsM,MAAM,CAAC,EAAA,CAAA,CAAA;AACvBxM,QAAAA,MAAAA,CAAOE,IAAI,CAAC,qCAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,GAAA,CAAIsM,MAAM,CAAC,EAAA,CAAA,CAAA;AACvBxM,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;QACZF,MAAAA,CAAOE,IAAI,CAAC,iBAAA,EAAmB0Q,cAAAA,CAAAA;AAC/B5Q,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,oBAAA,CAAA;QACZ,MAAM6Q,UAAAA,GAAaP,aAAAA,CAAcO,UAAU,IAAI,CAAA;QAC/C,MAAMM,SAAAA,GAAYb,aAAAA,CAAcQ,iBAAiB,IAAI,CAAA;AACrD,QAAA,MAAMM,cAAc,IAAIpI,GAAAA,CAAI,CAACsH,aAAAA,CAAcU,WAAW,IAAI,EAAE,EAAElK,GAAG,CAAC,CAACuK,IAAWA,CAAAA,CAAE1M,IAAI,GAAG2M,IAAI;AAC3FxR,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,KAAK,EAAE6Q,UAAAA,CAAW,qBAAqB,CAAC,CAAA;AACrD/Q,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,KAAK,EAAEmR,SAAAA,CAAU,oBAAoB,CAAC,CAAA;AACnDrR,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,KAAK,EAAEoR,WAAAA,CAAY,kBAAkB,CAAC,CAAA;AACnDtR,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,wBAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,iDAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,uCAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,iDAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,+CAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,GAAA,CAAIsM,MAAM,CAAC,EAAA,CAAA,CAAA;AAC3B,IAAA,CAAA,CAAE,OAAOzK,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,+CAAA,EAAiDD,KAAAA,CAAMb,OAAO,CAAA;AAC9E,IAAA;AACJ;AAEA;AACA,eAAeuQ,gCAAAA,CACXxE,cAA8B,EAC9B/K,SAAiB,EACjBsL,YAAiB,EACjBC,aAAkB,EAClBC,eAAuB,EACvBzI,OAAY,EACZ0I,UAAkB,EAClBC,WAAmB,EAAA;AAEnB,IAAA,MAAM5N,SAASoC,eAAAA,CAAgB,KAAA,CAAA;AAC/B,IAAA,IAAI+L,cAAAA,GAAiBlB,cAAAA;AAErB,IAAA,MAAO,IAAA,CAAM;;AAETjN,QAAAA,MAAAA,CAAOE,IAAI,CAAC,6EAAA,GAAgFiO,cAAAA,CAAexC,KAAK,CAAC/K,MAAM,GAAG,kBAAA,GAAqBuN,cAAAA,CAAehB,IAAI,CAACvM,MAAM,CAAA;AACzKZ,QAAAA,MAAAA,CAAOE,IAAI,CAAC,GAAA,CAAIsM,MAAM,CAAC,EAAA,CAAA,CAAA;AACvBxM,QAAAA,MAAAA,CAAOE,IAAI,CAAC,yBAAA,EAA2BiO,cAAAA,CAAexC,KAAK,CAAA;AAC3D3L,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,4CAAA,CAAA;QACZF,MAAAA,CAAOE,IAAI,CAACiO,cAAAA,CAAehB,IAAI,CAAA;AAC/BnN,QAAAA,MAAAA,CAAOE,IAAI,CAAC,GAAA,CAAIsM,MAAM,CAAC,EAAA,CAAA,CAAA;;QAGvB,MAAMkF,UAAAA,GAAa,MAAMC,aAAAA,CACrB,uDAAA,EACA;AACIC,YAAAA,gBAAAA,CAAiBC,OAAO;AACxBD,YAAAA,gBAAAA,CAAiBE,IAAI;AACrBF,YAAAA,gBAAAA,CAAiBG,IAAI;AACrBH,YAAAA,gBAAAA,CAAiBI;SACpB,EACD;YACIC,sBAAAA,EAAwB;AAAC,gBAAA;AAAiE;AAC9F,SAAA,CAAA;QAGJ,OAAQP,UAAAA;YACJ,KAAK,GAAA;gBACD,OAAO;oBAAEQ,MAAAA,EAAQ,SAAA;oBAAWC,YAAAA,EAAchE;AAAe,iBAAA;YAE7D,KAAK,GAAA;gBACD,IAAI;AACAA,oBAAAA,cAAAA,GAAiB,MAAMnB,6BAAAA,CAA8BmB,cAAAA,CAAAA;AACzD,gBAAA,CAAA,CAAE,OAAOpM,KAAAA,EAAY;oBACjB/B,MAAAA,CAAO+B,KAAK,CAAC,CAAC,iEAAiE,EAAEA,KAAAA,CAAMb,OAAO,CAAC,+BAA+B,CAAC,CAAA;;AAEnI,gBAAA;AACA,gBAAA;YAEJ,KAAK,GAAA;gBACD,OAAO;oBAAEgR,MAAAA,EAAQ,MAAA;oBAAQC,YAAAA,EAAchE;AAAe,iBAAA;YAE1D,KAAK,GAAA;gBACD,IAAI;AACAA,oBAAAA,cAAAA,GAAiB,MAAMZ,0BAAAA,CACnBY,cAAAA,EACAjM,WACAsL,YAAAA,EACAC,aAAAA,EACAC,iBACAC,UAAAA,EACAC,WAAAA,CAAAA;AAER,gBAAA,CAAA,CAAE,OAAO7L,KAAAA,EAAY;oBACjB/B,MAAAA,CAAO+B,KAAK,CAAC,CAAC,uEAAuE,EAAEA,KAAAA,CAAMb,OAAO,CAAC,gCAAgC,CAAC,CAAA;;AAE1I,gBAAA;AACA,gBAAA;AAKR;AACJ,IAAA;AACJ;AAEO,MAAMe,YAAU,OAAOC,SAAAA,GAAAA;AA2BJA,IAAAA,IAAAA,IAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,2BAAAA;AAtBAA,IAAAA,IAAAA,kBAAAA,EAGNA,mBAAAA,EACZA,mBAAAA,EAGUA,mBAAAA,EAOHA,mBAAAA,EAIUA,qBA6DMA,mBAAAA,EA+BqBA,mBAAAA,EAI5CA,mBAAAA,EAWcA,mBAAAA,EAECA,sBACRkM,0BAAAA,EAAAA,kBAAAA,EACQlM,oBAAAA,EAMEkM,2BAAAA,EAAAA,qBAQjBlM,oBAAAA,EAaAA,oBAAAA;IAhKJ,MAAMnC,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;AACrC,IAAA,MAAMnC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;;IAG/B,MAAMsC,aAAAA,GAAgBH,CAAAA,CAAAA,kBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmBG,aAAa,KAAI,MAAMC,gBAAAA,EAAAA;;IAGhE,MAAM8P,OAAAA,GAAAA,CAAAA,IAAAA,GAAAA,CAAUlQ,sBAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBmQ,IAAI,MAAA,IAAA,IAAA,IAAA,KAAA,MAAA,GAAA,IAAA,GAAI,MAAMC,kBAC7CpQ,CAAAA,CAAAA,mBAAAA,GAAAA,UAAU0M,OAAO,MAAA,IAAA,IAAjB1M,0CAAAA,mBAAAA,CAAmBqQ,QAAQ,KAAI,KAAA,EAC/BlQ,aAAAA,CAAAA;IAEJ,MAAMmQ,KAAAA,GAAAA,CAAAA,KAAAA,GAAAA,CAAQtQ,sBAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBuQ,EAAE,MAAA,IAAA,IAAA,KAAA,KAAA,MAAA,GAAA,KAAA,GAAIC,uBAAAA;IAEvC1S,MAAAA,CAAO8E,KAAK,CAAC,CAAC,2BAA2B,EAAEsN,OAAAA,CAAQ,KAAK,EAAEI,KAAAA,CAAAA,CAAO,CAAA;AAEjE,IAAA,MAAMG,GAAAA,GAAM,MAAMC,GAAAA,CAAI7D,MAAM,CAAC;QACzBsD,IAAAA,EAAMD,OAAAA;QACNK,EAAAA,EAAID,KAAAA;AACJK,QAAAA,KAAK,GAAE3Q,mBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmB4Q;AAC9B,KAAA,CAAA;AACA,IAAA,IAAInF,UAAAA,GAAa,EAAA;IAEjB,MAAMoF,YAAAA,GAAAA,CAAAA,KAAAA,GAAAA,CAAe7Q,sBAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmB6Q,YAAY,MAAA,IAAA,IAAA,KAAA,KAAA,MAAA,GAAA,KAAA,GAAIC,sBAAAA;AACxD,IAAA,MAAMC,IAAAA,GAAO,MAAMC,IAAAA,CAAKnE,MAAM,CAAC;QAC3BsD,IAAAA,EAAMD,OAAAA;QACNK,EAAAA,EAAID,KAAAA;AACJrK,QAAAA,gBAAgB,GAAEjG,2BAAAA,GAAAA,SAAAA,CAAUiG,gBAAgB,MAAA,IAAA,IAA1BjG,yCAAAA,2BAAAA,GAA8BiR,yBAAAA;AAChDJ,QAAAA;AACJ,KAAA,CAAA;AACA,IAAA,IAAInF,WAAAA,GAAc,EAAA;IAElBA,WAAAA,GAAc,MAAMqF,KAAKG,GAAG,EAAA;IAC5BzF,UAAAA,GAAa,MAAMgF,IAAIS,GAAG,EAAA;AAE1B,IAAA,MAAM5F,YAAAA,GAAe;QACjB6F,aAAAA,EAAenR,SAAAA,CAAUoR,oBAAoB,IAAI,EAAE;QACnDC,SAAAA,EAAWrR,SAAAA,CAAUqR,SAAS,IAAI;AACtC,KAAA;;AAEA,IAAA,MAAMC,8BAAAA,GAAiC,UAAA;AA2B/BtR,QAAAA,IAAAA,kBAAAA;AA1BJ,QAAA,MAAMuR,WAAqB,EAAE;;QAG7B,IAAI;AACA,YAAA,MAAMxO,OAAAA,GAAUC,aAAAA,EAAAA;AAChB,YAAA,MAAMwO,mBAAAA,GAAsB,MAAMzO,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;YACnE,MAAMH,WAAAA,GAAcgB,cAAcqO,mBAAAA,EAAqB,cAAA,CAAA;YACvD,MAAMjP,cAAAA,GAAiBJ,YAAYb,OAAO;AAE1C,YAAA,IAAIiB,cAAAA,EAAgB;;gBAEhB,IAAIA,cAAAA,CAAerB,QAAQ,CAAC,OAAA,CAAA,EAAU;AAClC,oBAAA,MAAMsB,cAAcD,cAAAA,CAAelE,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;AAChDkT,oBAAAA,QAAAA,CAAS/R,IAAI,CAACgD,WAAAA,CAAAA;oBACd1E,MAAAA,CAAO8E,KAAK,CAAC,CAAC,qBAAqB,EAAEL,cAAAA,CAAe,2BAA2B,EAAEC,WAAAA,CAAAA,CAAa,CAAA;gBAClG,CAAA,MAAO;;AAEH+O,oBAAAA,QAAAA,CAAS/R,IAAI,CAAC+C,cAAAA,CAAAA;AACdzE,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,sBAAsB,EAAEL,cAAAA,CAAe,qBAAqB,CAAC,CAAA;AAC/E,gBAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAO1C,KAAAA,EAAY;AACjB/B,YAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,qCAAqC,EAAE/C,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACxE,QAAA;;QAGA,IAAIgB,CAAAA,CAAAA,kBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmBiB,aAAa,KAChCjB,SAAAA,CAAUyR,OAAO,CAACxQ,aAAa,KAAK,OAAA,IACpCjB,SAAAA,CAAUyR,OAAO,CAACxQ,aAAa,KAAK,OAAA,IACpCjB,SAAAA,CAAUyR,OAAO,CAACxQ,aAAa,KAAK,OAAA,EAAS;AAE7C,YAAA,MAAMA,aAAAA,GAAgBjB,SAAAA,CAAUyR,OAAO,CAACxQ,aAAa;AACrD,YAAA,IAAI,CAACsQ,QAAAA,CAASrQ,QAAQ,CAACD,aAAAA,CAAAA,EAAgB;AACnCsQ,gBAAAA,QAAAA,CAAS/R,IAAI,CAACyB,aAAAA,CAAAA;AACdnD,gBAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,qBAAqB,EAAE3B,aAAAA,CAAc,qBAAqB,CAAC,CAAA;AAC7E,YAAA;AACJ,QAAA;QAEA,OAAOsQ,QAAAA;AACX,IAAA,CAAA;;AAGA,IAAA,IAAIG,sBAAAA,GAAyB,EAAA;IAC7B,MAAMC,iBAAAA,GAAoB,GAAC3R,mBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmB4R,YAAY,CAAA;AAE1D,IAAA,IAAID,iBAAAA,EAAmB;AACnB7T,QAAAA,MAAAA,CAAOE,IAAI,CAAC,wHAAA,CAAA;AACZ,QAAA,MAAMuT,WAAW,MAAMD,8BAAAA,EAAAA;QAEvB,IAAIC,QAAAA,CAAS7S,MAAM,GAAG,CAAA,EAAG;AACrBgT,YAAAA,sBAAAA,GAAyB,MAAMG,MAAAA,CAAOC,4BAA4B,CAACP,QAAAA,EAAU,KAAA,CAAA;AAC7E,YAAA,IAAIG,sBAAAA,EAAwB;gBACxB5T,MAAAA,CAAOE,IAAI,CAAC,kFAAA,IAAsF0T,CAAAA,sBAAAA,KAAAA,IAAAA,IAAAA,sBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,sBAAAA,CAAwBhT,MAAM,KAAI,CAAA,CAAA,GAAK,kCAAA,CAAA;YAC7I,CAAA,MAAO;AACHZ,gBAAAA,MAAAA,CAAO8E,KAAK,CAAC,0CAAA,CAAA;AACjB,YAAA;QACJ,CAAA,MAAO;AACH9E,YAAAA,MAAAA,CAAO8E,KAAK,CAAC,6CAAA,CAAA;AACjB,QAAA;IACJ,CAAA,MAAO;AACH9E,QAAAA,MAAAA,CAAO8E,KAAK,CAAC,oDAAA,CAAA;AACjB,IAAA;;IAGA,MAAM4I,eAAAA,GAAkBxL,SAAAA,CAAUwL,eAAe,IAAIuG,wBAAAA;AACrD,IAAA,MAAMhP,OAAAA,GAAUC,aAAAA,EAAAA;IAChB,MAAMD,OAAAA,CAAQiP,eAAe,CAACxG,eAAAA,CAAAA;;AAG9B,IAAA,MAAMU,WAAWK,UAAAA,CAAWvM,SAAAA,CAAAA;AAC5B,IAAA,MAAMkN,mBAAmBC,oBAAAA,CAAqB3B,eAAAA,CAAAA;AAC9C,IAAA,MAAM4B,WAAWC,mBAAAA,CAAoBxP,QAAAA,CAAAA;;IAGrC,MAAMoU,gBAAAA,GAAmB,MAAMxH,gBAAAA,CAAAA,CAAiBzK,mBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmB0K,YAAY,EAAE5M,MAAAA,CAAAA;;AAGjF,IAAA,MAAMoU,eAAAA,GAAkB;AACpBlS,QAAAA,CAAAA,mBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmBmS,OAAO;AAC1BF,QAAAA;AACH,KAAA,CAAC1T,MAAM,CAAC6T,OAAAA,CAAAA,CAASnT,IAAI,CAAC,aAAA,CAAA;;IAGvB,MAAMqP,aAAAA,GAAgB,MAAM+D,iBAAAA,CAAkB;AAC1CnC,QAAAA,OAAAA;AACAI,QAAAA,KAAAA;AACA7E,QAAAA,UAAAA;AACAC,QAAAA,WAAAA;QACA4G,eAAAA,EAAiBZ,sBAAAA;AACjBtF,QAAAA,YAAY,GAAEpM,mBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmBuS,KAAK;AACtCC,QAAAA,WAAAA,EAAaN,eAAAA,IAAmBO,SAAAA;AAChCxR,QAAAA,aAAa,GAAEjB,oBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,qBAAmBsB,OAAO;AACzCqL,QAAAA,KAAAA,EAAOT,EAAAA,kBAAAA,GAAAA,QAAAA,CAASO,QAAQ,MAAA,IAAA,IAAjBP,0CAAAA,0BAAAA,GAAAA,kBAAAA,CAAmBQ,OAAO,MAAA,IAAA,IAA1BR,iDAAAA,0BAAAA,CAA4BS,KAAK,KAAIT,QAAAA,CAASS,KAAK,IAAI,QAAA;QAC9DoC,aAAAA,EAAe/O,CAAAA,CAAAA,uBAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmB0S,oBAAoB,KAAI,EAAA;AAC1D9P,QAAAA,KAAAA,EAAO5C,UAAU4C,KAAK;QACtBgL,gBAAAA,EAAkBC,aAAAA,CAAcrC,iBAAiBsC,6BAAAA,CAA8B,SAAA,CAAA,CAAA;QAC/EC,iBAAAA,EAAmBF,aAAAA,CAAcrC,iBAAiBwC,8BAAAA,CAA+B,SAAA,CAAA,CAAA;QACjFjL,OAAAA,EAASmK,gBAAAA;QACTpP,MAAAA,EAAQsP,QAAAA;AACRE,QAAAA,eAAAA,EAAiBpB,CAAAA,CAAAA,mBAAAA,GAAAA,QAAAA,CAASO,QAAQ,cAAjBP,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,CAAAA,2BAAAA,GAAAA,mBAAAA,CAAmBQ,OAAO,cAA1BR,2BAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,2BAAAA,CAA4BqB,SAAS,KAAIrB,SAASqB;AACvE,KAAA,CAAA;IAEA,MAAMsB,UAAAA,GAAaP,aAAAA,CAAcO,UAAU,IAAI,CAAA;IAC/C,MAAMM,SAAAA,GAAYb,aAAAA,CAAcQ,iBAAiB,IAAI,CAAA;IACrDhR,MAAAA,CAAOE,IAAI,CAAC,CAAC,sBAAsB,EAAE6Q,WAAW,aAAa,EAAEM,SAAAA,CAAU,WAAW,CAAC,CAAA;;AAGrF,IAAA,IAAA,CAAInP,uBAAAA,SAAAA,CAAU0M,OAAO,cAAjB1M,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmB2S,cAAc,EAAE;QACnC,MAAMtE,sBAAAA,CAAuBC,aAAAA,EAAe9C,eAAAA,EAAiBzI,OAAAA,EAASjF,MAAAA,CAAAA;AAC1E,IAAA;;IAGA,MAAM8U,iBAAAA,GAAoBC,cAAcvE,aAAAA,CAAcY,YAAY,CAACzF,KAAK,EAAEzJ,UAAU8S,WAAW,CAAA;IAC/F,MAAMC,gBAAAA,GAAmBF,cAAcvE,aAAAA,CAAcY,YAAY,CAACjE,IAAI,EAAEjL,UAAU8S,WAAW,CAAA;AAC7F,IAAA,IAAI/H,cAAAA,GAAiC;AACjCtB,QAAAA,KAAAA,EAAOmJ,kBAAkBI,QAAQ;AACjC/H,QAAAA,IAAAA,EAAM8H,iBAAiBC;AAC3B,KAAA;;IAGA,IAAIhT,CAAAA,CAAAA,oBAAAA,GAAAA,SAAAA,CAAU0M,OAAO,MAAA,IAAA,IAAjB1M,2CAAAA,oBAAAA,CAAmBiT,WAAW,KAAI,CAACpV,QAAAA,EAAU;QAC7CqV,UAAAA,CAAW,8DAAA,CAAA;AAEX,QAAA,MAAMC,wBAAAA,GAA2C;AAC7ChB,YAAAA,OAAAA,EAASD,eAAAA,IAAmBO,SAAAA;AAC5B7M,YAAAA,WAAAA,EAAa5F,UAAUoT;AAC3B,SAAA;QAEA,MAAMC,iBAAAA,GAAoB,MAAM9D,gCAAAA,CAC5BxE,cAAAA,EACA/K,WACAsL,YAAAA,EACA6H,wBAAAA,EACA3H,eAAAA,EACAzI,OAAAA,EACA0I,UAAAA,EACAC,WAAAA,CAAAA;QAGJ,IAAI2H,iBAAAA,CAAkBrD,MAAM,KAAK,MAAA,EAAQ;AACrClS,YAAAA,MAAAA,CAAOE,IAAI,CAAC,qGAAA,CAAA;QAChB,CAAA,MAAO;AACHF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,wGAAA,CAAA;AAChB,QAAA;AAEA+M,QAAAA,cAAAA,GAAiBsI,kBAAkBpD,YAAY;AACnD,IAAA;;IAGA,IAAI;AACA,QAAA,MAAMqD,mBAAAA,GAAsBC,kCAAAA,EAAAA;QAC5B,MAAMC,UAAAA,GAAa3F,cAAcrC,eAAAA,EAAiB8H,mBAAAA,CAAAA;;QAGlD,MAAM3H,mBAAAA,GAAsB,CAAC,EAAE,EAAEZ,cAAAA,CAAetB,KAAK,CAAC,IAAI,EAAEsB,cAAAA,CAAeE,IAAI,CAAA,CAAE;AAEjF,QAAA,MAAMlI,OAAAA,CAAQe,SAAS,CAAC0P,UAAAA,EAAY7H,mBAAAA,EAAqB,OAAA,CAAA;QACzD7N,MAAAA,CAAO8E,KAAK,CAAC,qCAAA,EAAuC4Q,UAAAA,CAAAA;AACxD,IAAA,CAAA,CAAE,OAAO3T,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,iHAAA,EAAmHD,KAAAA,CAAMb,OAAO,CAAA;AAChJ,IAAA;AAEA,IAAA,IAAInB,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,sFAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,2BAAA,EAA6B+M,cAAAA,CAAetB,KAAK,CAAA;AAC7D3L,QAAAA,MAAAA,CAAOE,IAAI,CAAC,0BAAA,EAA4B+M,cAAAA,CAAeE,IAAI,CAAA;AAC/D,IAAA;IAEA,OAAOF,cAAAA;AACX;;ACheA,MAAM0I,sBAAsB,OAAO1Q,OAAAA,GAAAA;AAC/B,IAAA,MAAMjF,MAAAA,GAASsG,SAAAA,EAAAA;AACf,IAAA,MAAMsP,YAAYpP,aAAAA,CAAKrF,IAAI,CAAC4G,OAAAA,CAAQC,GAAG,EAAA,EAAI,QAAA,CAAA;AAC3C,IAAA,MAAM6N,UAAoB,EAAE;AAE5B,IAAA,IAAI,MAAM5Q,OAAAA,CAAQ6Q,MAAM,CAACF,SAAAA,CAAAA,EAAY;QACjC,IAAI;AACA,YAAA,MAAMG,YAAAA,GAAe,MAAM9Q,OAAAA,CAAQT,QAAQ,CAACoR,SAAAA,EAAW,OAAA,CAAA;;YAEvD,MAAMI,aAAAA,GAAgBD,YAAAA,CAAa1U,KAAK,CAAC,qCAAA,CAAA;AAEzC,YAAA,IAAI2U,aAAAA,EAAe;gBACf,KAAK,MAAM3U,SAAS2U,aAAAA,CAAe;;AAE/B,oBAAA,MAAMC,OAAAA,GAAU5U,KAAAA,CAAMgC,OAAO,CAAC,aAAA,EAAe,EAAA,CAAA;AAC7C,oBAAA,IAAI4S,OAAAA,IAAW,CAACJ,OAAAA,CAAQzS,QAAQ,CAAC6S,OAAAA,CAAAA,EAAU;AACvCJ,wBAAAA,OAAAA,CAAQnU,IAAI,CAACuU,OAAAA,CAAAA;AACjB,oBAAA;AACJ,gBAAA;AACJ,YAAA;AAEJ,QAAA,CAAA,CAAE,OAAOlU,KAAAA,EAAY;YACjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,oEAAoE,EAAE4T,UAAU,UAAU,EAAE7T,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACxHlB,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,4GAAA,CAAA;AACnB,QAAA;IACJ,CAAA,MAAO;QACH3B,MAAAA,CAAO8E,KAAK,CAAC,oHAAA,GAAuH8Q,SAAAA,CAAAA;AACxI,IAAA;IAEA,OAAOC,OAAAA;AACX,CAAA;AAEA;;;IAIA,MAAM1P,sBAAAA,GAAyB,OAAOlB,OAAAA,EAAclF,QAAAA,GAAAA;AAChD,IAAA,MAAMC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAC/B,IAAA,MAAMwG,gBAAgBC,aAAAA,CAAKrF,IAAI,CAAC4G,OAAAA,CAAQC,GAAG,EAAA,EAAI,YAAA,CAAA;;AAG/C,IAAA,MAAMvB,gBAAAA,GAAmB;AACrB,QAAA,cAAA;AACA,QAAA,MAAA;AACA,QAAA,mBAAA;AACA,QAAA,MAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA;AACH,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAMxB,OAAAA,CAAQ6Q,MAAM,CAACvP,aAAAA,CAAAA,EAAgB;QACtCvG,MAAAA,CAAO+B,KAAK,CAAC,uDAAA,GAA0DwE,aAAAA,GAAgB,4CAAA,CAAA;AACvFvG,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,0EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,kFAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,0DAAA,CAAA;QACb,KAAK,MAAMoF,WAAWV,gBAAAA,CAAkB;AACpCzG,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,GAAG,EAAEoF,OAAAA,CAAAA,CAAS,CAAA;AAChC,QAAA;AACAnH,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb,QAAA,MAAM,IAAIuB,KAAAA,CAAM,yFAAA,CAAA;AACpB,IAAA;;IAGA,IAAIwD,gBAAAA;IACJ,IAAI;AACAA,QAAAA,gBAAAA,GAAmB,MAAM7B,OAAAA,CAAQT,QAAQ,CAAC+B,aAAAA,EAAe,OAAA,CAAA;AAC7D,IAAA,CAAA,CAAE,OAAOxE,KAAAA,EAAY;QACjB/B,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yDAAyD,EAAEwE,cAAc,UAAU,EAAExE,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAClH,QAAA,MAAM,IAAIoC,KAAAA,CAAM,CAAC,2BAA2B,EAAEvB,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACjE,IAAA;;IAGA,MAAM6F,cAAAA,GAAiBD,iBAClBvG,KAAK,CAAC,MACNyG,GAAG,CAACtG,CAAAA,IAAAA,GAAQA,IAAAA,CAAKJ,IAAI,EAAA,CAAA,CACrBG,MAAM,CAACC,CAAAA,IAAAA,GAAQA,QAAQ,CAACA,IAAAA,CAAKuG,UAAU,CAAC,GAAA,CAAA,CAAA;;AAG7C,IAAA,MAAMC,kBAA4B,EAAE;IACpC,KAAK,MAAMC,WAAWV,gBAAAA,CAAkB;;AAEpC,QAAA,MAAMW,KAAAA,GAAQL,cAAAA,CAAeM,IAAI,CAAC3G,CAAAA,IAAAA,GAAAA;;YAE9B,IAAIA,IAAAA,KAASyG,SAAS,OAAO,IAAA;;YAG7B,IAAIA,OAAAA,CAAQ/D,QAAQ,CAAC,GAAA,CAAA,EAAM;AACvB,gBAAA,MAAMkE,WAAAA,GAAcH,OAAAA,CAAQ9D,OAAO,CAAC,GAAA,EAAK,EAAA,CAAA;;AAEzC,gBAAA,OAAO3C,SAASyG,OAAAA,IAAWzG,IAAAA,KAAS4G,WAAAA,IAAe5G,IAAAA,CAAKuG,UAAU,CAACK,WAAAA,CAAAA;AACvE,YAAA;;YAGA,IAAIH,OAAAA,CAAQI,QAAQ,CAAC,GAAA,CAAA,EAAM;AACvB,gBAAA,MAAMD,WAAAA,GAAcH,OAAAA,CAAQK,KAAK,CAAC,GAAG,EAAC,CAAA;AACtC,gBAAA,OAAO9G,SAAS4G,WAAAA,IAAe5G,IAAAA,KAASyG,OAAAA,IAAWzG,IAAAA,CAAKuG,UAAU,CAACE,OAAAA,CAAAA;AACvE,YAAA;;YAGA,IAAIzG,IAAAA,CAAK6G,QAAQ,CAAC,GAAA,CAAA,EAAM;AACpB,gBAAA,MAAME,QAAAA,GAAW/G,IAAAA,CAAK8G,KAAK,CAAC,GAAG,EAAC,CAAA;AAChC,gBAAA,OAAOC,QAAAA,KAAaN,OAAAA,IAAWzG,IAAAA,CAAKuG,UAAU,CAACE,OAAAA,GAAU,GAAA,CAAA;AAC7D,YAAA;YAEA,OAAO,KAAA;AACX,QAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACC,KAAAA,EAAO;AACRF,YAAAA,eAAAA,CAAgBxF,IAAI,CAACyF,OAAAA,CAAAA;AACzB,QAAA;AACJ,IAAA;;IAGA,MAAMO,eAAAA,GAAkBR,eAAAA,CAAgBzG,MAAM,CAACkH,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAEvE,QAAQ,CAAC,UAAA,CAAA,IAAeuE,CAAAA,KAAM,mBAAA,CAAA;IACrF,IAAID,eAAAA,CAAgB9G,MAAM,GAAG,CAAA,EAAG;AAC5BZ,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,0EAAA,GAA6EwE,aAAAA,GAAgB,YAAA,GAAemB,gBAAgB9G,MAAM,CAAA;AAC/IZ,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,iFAAA,CAAA;QACb,KAAK,MAAMoF,WAAWO,eAAAA,CAAiB;AACnC1H,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,GAAG,EAAEoF,OAAAA,CAAAA,CAAS,CAAA;AAChC,QAAA;AACAnH,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,8DAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,4DAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,+DAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,iEAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,sEAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,uEAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;QACb,MAAM,IAAIuB,KAAAA,CAAM,CAAC,sCAAsC,EAAEoE,gBAAgBvG,IAAI,CAAC,IAAA,CAAA,CAAM,0CAA0C,CAAC,CAAA;AACnI,IAAA,CAAA,MAAO,IAAI+F,eAAAA,CAAgBtG,MAAM,GAAG,CAAA,EAAG;AACnCZ,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,4FAAA,GAA+FkF,eAAAA,CAAgB/F,IAAI,CAAC,IAAA,CAAA,CAAA;AACpI,IAAA;IAEAnB,MAAAA,CAAO2B,OAAO,CAAC,0EAAA,GAA6E4E,aAAAA,GAAgB,kBAAA,CAAA;AAChH,CAAA;AAEA;;;IAIA,MAAM2P,2BAA2B,OAAOnW,QAAAA,GAAAA;AACpC,IAAA,MAAMC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAC/B,IAAA,MAAMoW,kBAAkB3P,aAAAA,CAAKrF,IAAI,CAAC4G,OAAAA,CAAQC,GAAG,EAAA,EAAI,mBAAA,CAAA;IAEjD,IAAI;;QAEA,IAAI;YACA,MAAM5D,EAAAA,CAAGsC,MAAM,CAACyP,eAAAA,CAAAA;AACpB,QAAA,CAAA,CAAE,OAAM;;YAEJnW,MAAAA,CAAO2B,OAAO,CAAC,uGAAA,GAA0GwU,eAAAA,CAAAA;AACzH,YAAA;AACJ,QAAA;;AAGA,QAAA,MAAMC,kBAAAA,GAAqB,MAAMhS,EAAAA,CAAGI,QAAQ,CAAC2R,eAAAA,EAAiB,OAAA,CAAA;QAC9D,MAAME,WAAAA,GAAchR,cAAc+Q,kBAAAA,EAAoBD,eAAAA,CAAAA;;AAGtD,QAAA,IAAIG,iBAAAA,GAAoB,KAAA;;QAGxB,IAAID,WAAAA,CAAYE,QAAQ,EAAE;YACtB,KAAK,MAAM,CAACC,OAAAA,EAASC,OAAAA,CAAQ,IAAIlM,OAAOmM,OAAO,CAACL,WAAAA,CAAYE,QAAQ,CAAA,CAA0B;AAC1F,gBAAA,IAAIE,OAAAA,CAAQE,QAAQ,IAAI,OAAOF,OAAAA,CAAQE,QAAQ,KAAK,QAAA,IAAYF,OAAAA,CAAQE,QAAQ,CAAC1P,UAAU,CAAC,OAAA,CAAA,EAAU;;AAElG,oBAAA,MAAM2P,eAAeH,OAAAA,CAAQE,QAAQ,CAACtT,OAAO,CAAC,OAAA,EAAS,EAAA,CAAA;AACvD,oBAAA,IAAIuT,aAAa3P,UAAU,CAAC,UAAU2P,YAAAA,CAAa3P,UAAU,CAAC,IAAA,CAAA,EAAO;wBACjEqP,iBAAAA,GAAoB,IAAA;AACpBtW,wBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,2EAA2E,EAAE6U,OAAAA,CAAQ,aAAa,EAAEC,OAAAA,CAAQE,QAAQ,CAAC,iCAAiC,CAAC,CAAA;AACvK,wBAAA;AACJ,oBAAA;AACJ,gBAAA;AACJ,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAI,CAACL,iBAAAA,IAAqBD,WAAAA,CAAYpM,YAAY,EAAE;YAChD,KAAK,MAAM,CAACT,OAAAA,EAASiN,OAAAA,CAAQ,IAAIlM,OAAOmM,OAAO,CAACL,WAAAA,CAAYpM,YAAY,CAAA,CAA0B;AAC9F,gBAAA,IAAIwM,OAAAA,CAAQjT,OAAO,IAAI,OAAOiT,OAAAA,CAAQjT,OAAO,KAAK,QAAA,IAAYiT,OAAAA,CAAQjT,OAAO,CAACyD,UAAU,CAAC,OAAA,CAAA,EAAU;AAC/F,oBAAA,MAAM4P,cAAcJ,OAAAA,CAAQjT,OAAO,CAACH,OAAO,CAAC,OAAA,EAAS,EAAA,CAAA;AACrD,oBAAA,IAAIwT,YAAY5P,UAAU,CAAC,UAAU4P,WAAAA,CAAY5P,UAAU,CAAC,IAAA,CAAA,EAAO;wBAC/DqP,iBAAAA,GAAoB,IAAA;AACpBtW,wBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,+EAA+E,EAAE6H,OAAAA,CAAQ,YAAY,EAAEiN,OAAAA,CAAQjT,OAAO,CAAC,iCAAiC,CAAC,CAAA;AACzK,wBAAA;AACJ,oBAAA;AACJ,gBAAA;AACJ,YAAA;AACJ,QAAA;AAEA,QAAA,IAAI8S,iBAAAA,EAAmB;AACnBtW,YAAAA,MAAAA,CAAOE,IAAI,CAAC,iJAAA,CAAA;AACZF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,uIAAA,CAAA;AAEZ,YAAA,IAAIH,QAAAA,EAAU;AACVC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,+GAAA,CAAA;YAChB,CAAA,MAAO;;gBAEH,MAAMkE,EAAAA,CAAG0S,MAAM,CAACX,eAAAA,CAAAA;gBAChBnW,MAAAA,CAAO2B,OAAO,CAAC,kGAAA,GAAqGwU,eAAAA,CAAAA;;AAGpHnW,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,gKAAA,CAAA;AACf,gBAAA,MAAMoV,qBAAqB,sDAAA,EAAwDhX,QAAAA,CAAAA;gBACnFC,MAAAA,CAAOE,IAAI,CAAC,yGAAA,GAA4GiW,eAAAA,CAAAA;AAC5H,YAAA;QACJ,CAAA,MAAO;YACHnW,MAAAA,CAAO2B,OAAO,CAAC,8GAAA,GAAiHwU,eAAAA,CAAAA;AACpI,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOpU,KAAAA,EAAY;;QAEjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,6EAA6E,EAAED,KAAAA,CAAMb,OAAO,CAAC,0DAA0D,CAAC,CAAA;AACrKlB,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,qIAAA,CAAA;AACnB,IAAA;AACJ,CAAA;AAEA,MAAMqV,4BAAAA,GAA+B,CAACC,eAAAA,EAA2BlX,QAAAA,GAAAA;AAC7D,IAAA,MAAMC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAC/B,IAAA,MAAMmX,iBAA2B,EAAE;IAEnC,KAAK,MAAMC,UAAUF,eAAAA,CAAiB;AAClC,QAAA,IAAI,CAAClP,OAAAA,CAAQmE,GAAG,CAACiL,OAAO,EAAE;AACtBD,YAAAA,cAAAA,CAAexV,IAAI,CAACyV,MAAAA,CAAAA;AACxB,QAAA;AACJ,IAAA;IAEA,IAAID,cAAAA,CAAetW,MAAM,GAAG,CAAA,EAAG;AAC3B,QAAA,IAAIb,QAAAA,EAAU;YACVC,MAAAA,CAAOgC,IAAI,CAAC,CAAC,sEAAsE,EAAEkV,eAAe/V,IAAI,CAAC,IAAA,CAAA,CAAM,qDAAqD,CAAC,CAAA;QACzK,CAAA,MAAO;YACHnB,MAAAA,CAAO+B,KAAK,CAAC,CAAC,sEAAsE,EAAEmV,eAAe/V,IAAI,CAAC,IAAA,CAAA,CAAM,iEAAiE,CAAC,CAAA;YAClL,MAAM,IAAImC,KAAAA,CAAM,CAAC,wCAAwC,EAAE4T,eAAe/V,IAAI,CAAC,IAAA,CAAA,CAAM,gEAAgE,CAAC,CAAA;AAC1J,QAAA;AACJ,IAAA;AACJ,CAAA;AAEA,MAAMiW,YAAAA,GAAe,OAAOlV,SAAAA,EAAmB6B,YAAAA,GAAAA;QAoDG7B,kBAAAA,EA2HlBA,mBAAAA;IA9K5B,MAAMnC,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;AACrC,IAAA,MAAMnC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAC/B,IAAA,MAAMkF,OAAAA,GAAUC,aAAAA,EAAAA;AAEhBlF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,+EAAA,IAAmF6D,gBAAgB,SAAQ,CAAA,CAAA;;AAGvH/D,IAAAA,MAAAA,CAAOE,IAAI,CAAC,0IAAA,CAAA;AACZ,IAAA,IAAIH,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,6JAAA,CAAA;IAChB,CAAA,MAAO;AACH,QAAA,MAAMiG,uBAAuBlB,OAAAA,EAASlF,QAAAA,CAAAA;AAC1C,IAAA;;IAGA,IAAI;AACA,QAAA,IAAIA,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,mGAAA,CAAA;QAChB,CAAA,MAAO;AACH,YAAA,MAAME,GAAAA,CAAI,yBAAA,CAAA;AACd,QAAA;AAEJ,IAAA,CAAA,CAAE,OAAO2B,KAAAA,EAAY;AACjB,QAAA,IAAI,CAAChC,QAAAA,EAAU;;AAEX,YAAA,MAAMsX,eAAAA,GAAkBtV,KAAAA,CAAMb,OAAO,IAAIa,MAAMuV,QAAQ,EAAA;AACvD,YAAA,MAAM,IAAIhU,KAAAA,CAAM,CAAC,+CAA+C,EAAE+T,eAAAA,CAAgB,uDAAuD,CAAC,CAAA;AAC9I,QAAA;AACJ,IAAA;;AAGArX,IAAAA,MAAAA,CAAOE,IAAI,CAAC,gIAAA,CAAA;IACZ,IAAI;AACA,QAAA,IAAIH,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,6GAAA,CAAA;QAChB,CAAA,MAAO;AACH,YAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,wBAAA,CAAA;YAC7B,IAAID,MAAAA,CAAOG,IAAI,EAAA,EAAI;AACf,gBAAA,MAAM,IAAIgD,KAAAA,CAAM,wGAAA,CAAA;AACpB,YAAA;AACJ,QAAA;AAEJ,IAAA,CAAA,CAAE,OAAOvB,KAAAA,EAAY;AACjB,QAAA,IAAI,CAAChC,QAAAA,EAAU;;AAEX,YAAA,MAAMsX,eAAAA,GAAkBtV,KAAAA,CAAMb,OAAO,IAAIa,MAAMuV,QAAQ,EAAA;AACvD,YAAA,MAAM,IAAIhU,KAAAA,CAAM,CAAC,4BAA4B,EAAE+T,eAAAA,CAAgB,gEAAgE,CAAC,CAAA;AACpI,QAAA;AACJ,IAAA;;IAGA,MAAME,qBAAAA,GAAwBxT,kBAAgB7B,kBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmB6B,YAAY,CAAA,IAAI,MAAA;;IAGjF/D,MAAAA,CAAOE,IAAI,CAAC,2EAAA,GAA8EqX,qBAAAA,GAAwB,8CAAA,CAAA;AAClH,IAAA,IAAIxX,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4FAA4F,EAAEqX,qBAAAA,CAAAA,CAAuB,CAAA;IACtI,CAAA,MAAO;QACH,MAAMlV,aAAAA,GAAgB,MAAM0R,MAAAA,CAAOyD,oBAAoB,EAAA;AACvD,QAAA,IAAInV,kBAAkBkV,qBAAAA,EAAuB;AACzC,YAAA,MAAM,IAAIjU,KAAAA,CAAM,CAAC,2CAA2C,EAAEiU,qBAAAA,CAAsB,8DAA8D,CAAC,CAAA;AACvJ,QAAA;AACJ,IAAA;;AAGAvX,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAEqX,qBAAAA,CAAsB,8DAA8D,CAAC,CAAA;AAC5K,IAAA,IAAIxX,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,kGAAkG,EAAEqX,qBAAAA,CAAsB,iBAAiB,CAAC,CAAA;IAC7J,CAAA,MAAO;;QAEH,MAAMvT,kBAAAA,GAAqB,MAAML,iBAAAA,CAAkB4T,qBAAAA,CAAAA;AACnD,QAAA,IAAIvT,kBAAAA,EAAoB;YACpB,MAAMyT,UAAAA,GAAa,MAAMC,wBAAAA,CAAyBH,qBAAAA,CAAAA;YAElD,IAAI,CAACE,UAAAA,CAAWE,MAAM,EAAE;AACpB3X,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,yEAAyE,EAAEwV,qBAAAA,CAAsB,4DAA4D,CAAC,CAAA;AAC5KvX,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;gBAEb,IAAI0V,UAAAA,CAAW1V,KAAK,EAAE;AAClB/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mBAAmB,EAAE0V,UAAAA,CAAW1V,KAAK,CAAA,CAAE,CAAA;AACzD,gBAAA,CAAA,MAAO,IAAI0V,UAAAA,CAAWG,QAAQ,IAAIH,UAAAA,CAAWI,SAAS,EAAE;oBACpD7X,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qEAAqE,EAAE0V,UAAAA,CAAWG,QAAQ,CAAChW,SAAS,CAAC,GAAG,CAAA,CAAA,CAAG,eAAe,EAAE6V,UAAAA,CAAWI,SAAS,CAACjW,SAAS,CAAC,GAAG,CAAA,CAAA,CAAA,CAAI,CAAA;AACpL,gBAAA;AAEA5B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,kEAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,2DAA2D,EAAEwV,qBAAAA,CAAAA,CAAuB,CAAA;AAClGvX,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,0DAA0D,EAAEwV,qBAAAA,CAAAA,CAAuB,CAAA;AACjGvX,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,+CAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,uDAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,iGAAiG,EAAEwV,qBAAAA,CAAAA,CAAuB,CAAA;AAExI,gBAAA,MAAM,IAAIjU,KAAAA,CAAM,CAAC,eAAe,EAAEiU,qBAAAA,CAAsB,4EAA4E,CAAC,CAAA;YACzI,CAAA,MAAO;AACHvX,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0EAA0E,EAAEqX,qBAAAA,CAAsB,kBAAkB,CAAC,CAAA;AACtI,YAAA;QACJ,CAAA,MAAO;AACHvX,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,iEAAiE,EAAEqX,qBAAAA,CAAsB,iDAAiD,CAAC,CAAA;AAC5J,QAAA;AACJ,IAAA;;AAGAvX,IAAAA,MAAAA,CAAOE,IAAI,CAAC,oJAAA,CAAA;AACZ,IAAA,IAAIH,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,6GAAA,CAAA;IAChB,CAAA,MAAO;QACH,IAAI;;;AAGA,YAAA,MAAM4X,cAAAA,GAAiB;gBACnBC,YAAAA,EAAc,IAAA;gBACdC,sBAAAA,EAAwB,IAAA;gBACxBC,aAAAA,EAAe,CAAA;AACfC,gBAAAA,sBAAAA,EAAwB;AAC5B,aAAA;YAEA,IAAI,CAACJ,cAAAA,CAAeC,YAAY,EAAE,CAIlC,MAAO,IAAI,CAACD,cAAAA,CAAeE,sBAAsB,EAAE,CAInD,MAAO;AACHhY,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,yFAAyF,EAAEqX,qBAAAA,CAAsB,mBAAmB,EAAEO,cAAAA,CAAeI,sBAAsB,CAACtX,MAAM,CAAA,CAAE,CAAA;AACjM,gBAAA,KAAK,MAAMuX,YAAAA,IAAgBL,cAAAA,CAAeI,sBAAsB,CAAE;oBAC9DlY,MAAAA,CAAOE,IAAI,CAAC,CAAC,iBAAiB,EAAEiY,YAAAA,CAAa,mCAAmC,EAAEZ,qBAAAA,CAAAA,CAAuB,CAAA;AAC7G,gBAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOxV,KAAAA,EAAY;;;YAGjB/B,MAAAA,CAAO8E,KAAK,CAAC,CAAC,wEAAwE,EAAE/C,KAAAA,CAAMb,OAAO,CAAC,gFAAgF,CAAC,CAAA;AAC3L,QAAA;AACJ,IAAA;;AAGAlB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,iKAAA,CAAA;AACZ,IAAA,MAAMkY,kBAAkB5R,aAAAA,CAAKrF,IAAI,CAAC4G,OAAAA,CAAQC,GAAG,EAAA,EAAI,cAAA,CAAA;AAEjD,IAAA,IAAI,CAAC,MAAM/C,OAAAA,CAAQ6Q,MAAM,CAACsC,eAAAA,CAAAA,EAAkB;AACxC,QAAA,IAAI,CAACrY,QAAAA,EAAU;AACX,YAAA,MAAM,IAAIuD,KAAAA,CAAM,8CAAA,CAAA;QACpB,CAAA,MAAO;YACHtD,MAAAA,CAAOgC,IAAI,CAAC,qIAAA,GAAwIoW,eAAAA,CAAAA;AACxJ,QAAA;IACJ,CAAA,MAAO;AAeiB/T,QAAAA,IAAAA,oBAAAA;QAdpB,IAAIA,WAAAA;QACJ,IAAI;AACA,YAAA,MAAMqP,mBAAAA,GAAsB,MAAMzO,OAAAA,CAAQT,QAAQ,CAAC4T,eAAAA,EAAiB,OAAA,CAAA;YACpE,MAAMC,MAAAA,GAAShT,cAAcqO,mBAAAA,EAAqB0E,eAAAA,CAAAA;AAClD/T,YAAAA,WAAAA,GAAckB,oBAAoB8S,MAAAA,EAAQD,eAAAA,CAAAA;AAE9C,QAAA,CAAA,CAAE,OAAOrW,KAAAA,EAAO;AACZ,YAAA,IAAI,CAAChC,QAAAA,EAAU;AACX,gBAAA,MAAM,IAAIuD,KAAAA,CAAM,qEAAA,CAAA;YACpB,CAAA,MAAO;gBACHtD,MAAAA,CAAOgC,IAAI,CAAC,gIAAA,GAAmIoW,eAAAA,GAAkB,mCAAA,CAAA;AACrK,YAAA;AACJ,QAAA;QAEA,IAAI/T,WAAAA,IAAe,GAACA,oBAAAA,GAAAA,WAAAA,CAAYiU,OAAO,MAAA,IAAA,IAAnBjU,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAqBkU,cAAc,CAAA,EAAE;AACrD,YAAA,IAAI,CAACxY,QAAAA,EAAU;AACX,gBAAA,MAAM,IAAIuD,KAAAA,CAAM,4KAAA,CAAA;YACpB,CAAA,MAAO;gBACHtD,MAAAA,CAAOgC,IAAI,CAAC,gLAAA,GAAmLoW,eAAAA,CAAAA;AACnM,YAAA;AACJ,QAAA;AACJ,IAAA;;AAGApY,IAAAA,MAAAA,CAAO2B,OAAO,CAAC,4IAAA,CAAA;IACf,MAAM6W,mBAAAA,GAAsBtW,CAAAA,CAAAA,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmB+U,eAAe,KAAI,EAAE;AACpE,IAAA,MAAMwB,eAAe1Y,QAAAA,GAAW,EAAE,GAAG,MAAM4V,mBAAAA,CAAoB1Q;AAC/D,IAAA,MAAMyT,kBAAAA,GAAqB;AAAI,QAAA,GAAA,IAAIxP,GAAAA,CAAI;AAAIsP,YAAAA,GAAAA,mBAAAA;AAAwBC,YAAAA,GAAAA;AAAa,SAAA;AAAE,KAAA;IAElF,IAAIC,kBAAAA,CAAmB9X,MAAM,GAAG,CAAA,EAAG;AAC/BZ,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,yEAAyE,EAAE+W,kBAAAA,CAAmBvX,IAAI,CAAC,IAAA,CAAA,CAAM,UAAU,EAAEuX,kBAAAA,CAAmB9X,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAC1LoW,QAAAA,4BAAAA,CAA6B0B,kBAAAA,EAAoB3Y,QAAAA,CAAAA;IACrD,CAAA,MAAO;AACHC,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,qHAAA,CAAA;AACnB,IAAA;AAEA3B,IAAAA,MAAAA,CAAOE,IAAI,CAAC,0HAAA,CAAA;AAChB,CAAA;AAEA;AACA,MAAMyY,iBAAiB,CAACC,KAAAA,GAAAA;IACpB,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA,EAAQ;QACtB,OAAOA,KAAAA,CAAM5R,GAAG,CAAC2R,cAAAA,CAAAA;AACrB,IAAA;IACA,IAAIC,KAAAA,IAAS,OAAOA,KAAAA,KAAU,QAAA,EAAU;AACpC,QAAA,MAAMG,SAAc,EAAC;AACrBxO,QAAAA,MAAAA,CAAOC,IAAI,CAACoO,KAAAA,CAAAA,CAAOI,IAAI,EAAA,CAAGnX,OAAO,CAAC,CAACoX,GAAAA,GAAAA;AAC/BF,YAAAA,MAAM,CAACE,GAAAA,CAAI,GAAGN,cAAAA,CAAeC,KAAK,CAACK,GAAAA,CAAI,CAAA;AAC3C,QAAA,CAAA,CAAA;QACA,OAAOF,MAAAA;AACX,IAAA;IACA,OAAOH,KAAAA;AACX,CAAA;AAEA;AACA,MAAMM,kCAAAA,GAAqC,OAAOnV,YAAAA,EAAsBhE,QAAAA,GAAAA;AACpE,IAAA,MAAMC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;;IAG/B,MAAMsC,aAAAA,GAAgB,MAAM0R,MAAAA,CAAOyD,oBAAoB,EAAA;;IAGvD,IAAI;;AAEA,QAAA,MAAM2B,UAAU,KAAA,EAAO;AAAC,YAAA,WAAA;AAAa,YAAA,UAAA;AAAYpV,YAAAA;AAAa,SAAA,CAAA;AAClE,IAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;;AAEjB/B,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,qFAAqF,EAAEoC,YAAAA,CAAa,yEAAyE,CAAC,CAAA;QAC9L,OAAO;YAAEqV,SAAAA,EAAW,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,CAAC,eAAe,EAAEtV,YAAAA,CAAa,8CAA8C;AAAE,SAAA;AACrH,IAAA;;AAGA,IAAA,MAAM,EAAE5D,MAAAA,EAAQmZ,WAAW,EAAE,GAAG,MAAMH,UAAU,KAAA,EAAO;AAAC,QAAA,MAAA;AAAQ,QAAA,aAAA;QAAe,CAAA,EAAGpV,YAAAA,CAAa,EAAE,EAAE1B,aAAAA,CAAAA;AAAgB,KAAA,CAAA;AACnH,IAAA,MAAMkX,YAAAA,GAAeD,WAAAA,CAAY/Y,KAAK,CAAC,IAAA,CAAA,CAAMyG,GAAG,CAACwS,CAAAA,CAAAA,GAAKA,CAAAA,CAAElZ,IAAI,EAAA,CAAA,CAAIG,MAAM,CAAC6T,OAAAA,CAAAA;IAEvE,IAAIiF,YAAAA,CAAa3Y,MAAM,KAAK,CAAA,EAAG;;QAE3B,OAAO;YAAEwY,SAAAA,EAAW,IAAA;YAAMC,MAAAA,EAAQ;AAA4D,SAAA;AAClG,IAAA;;AAGA,IAAA,MAAMI,kBAAkBF,YAAAA,CAAa9Y,MAAM,CAACiZ,CAAAA,IAAKA,CAAAA,KAAM,cAAA,CAAA;IACvD,IAAID,eAAAA,CAAgB7Y,MAAM,GAAG,CAAA,EAAG;QAC5B,OAAO;YAAEwY,SAAAA,EAAW,IAAA;AAAMC,YAAAA,MAAAA,EAAQ,CAAC,mCAAmC,EAAEI,eAAAA,CAAgBtY,IAAI,CAAC,IAAA,CAAA,CAAA;AAAQ,SAAA;AACzG,IAAA;;IAGA,IAAI;;AAEA,QAAA,MAAM,EAAEhB,MAAAA,EAAQwZ,aAAa,EAAE,GAAG,MAAMR,UAAU,KAAA,EAAO;AAAC,YAAA,MAAA;YAAQ,CAAA,EAAGpV,YAAAA,CAAa,aAAa;AAAE,SAAA,CAAA;AACjG,QAAA,MAAM,EAAE5D,MAAAA,EAAQyZ,aAAa,EAAE,GAAG,MAAMT,UAAU,KAAA,EAAO;AAAC,YAAA,MAAA;YAAQ,CAAA,EAAG9W,aAAAA,CAAc,aAAa;AAAE,SAAA,CAAA;AAElG,QAAA,MAAMwX,OAAAA,GAAUtU,mBAAAA,CAAoBF,aAAAA,CAAcsU,aAAAA,EAAe,CAAA,EAAG5V,YAAAA,CAAa,aAAa,CAAC,CAAA,EAAG,CAAA,EAAGA,YAAAA,CAAa,aAAa,CAAC,CAAA;AAChI,QAAA,MAAM+V,OAAAA,GAAUvU,mBAAAA,CAAoBF,aAAAA,CAAcuU,aAAAA,EAAe,CAAA,EAAGvX,aAAAA,CAAc,aAAa,CAAC,CAAA,EAAG,CAAA,EAAGA,aAAAA,CAAc,aAAa,CAAC,CAAA;AAElI,QAAA,MAAM,EAAEmB,OAAAA,EAASuW,YAAY,EAAE,GAAGC,oBAAoB,GAAGH,OAAAA;AACzD,QAAA,MAAM,EAAErW,OAAAA,EAASyW,YAAY,EAAE,GAAGC,oBAAoB,GAAGJ,OAAAA;AAEzD,QAAA,MAAMK,aAAaxB,cAAAA,CAAeqB,kBAAAA,CAAAA;AAClC,QAAA,MAAMI,aAAazB,cAAAA,CAAeuB,kBAAAA,CAAAA;AAElC,QAAA,MAAMG,qBAAqB/V,IAAAA,CAAK2B,SAAS,CAACkU,UAAAA,CAAAA,KAAgB7V,IAAAA,CAAK2B,SAAS,CAACmU,UAAAA,CAAAA;AACzE,QAAA,IAAIC,kBAAAA,EAAoB;YACpB,MAAM5V,cAAAA,GAAiBqV,QAAQtW,OAAO;YACtC,MAAML,aAAAA,GAAgB0W,QAAQrW,OAAO;YACrC,OAAO;gBACH4V,SAAAA,EAAW,KAAA;gBACXC,MAAAA,EAAQ,CAAC,uDAAuD,EAAE5U,cAAAA,CAAe,8BAA8B,EAAEtB,aAAAA,CAAc,yIAAyI;AAC5Q,aAAA;AACJ,QAAA;;QAGA,OAAO;YAAEiW,SAAAA,EAAW,IAAA;YAAMC,MAAAA,EAAQ;AAA4C,SAAA;AAClF,IAAA,CAAA,CAAE,OAAOtX,KAAAA,EAAY;;QAEjB/B,MAAAA,CAAO2B,OAAO,CAAC,CAAC,8FAA8F,EAAEI,KAAAA,CAAMb,OAAO,CAAC,6FAA6F,CAAC,CAAA;QAC5N,OAAO;YAAEkY,SAAAA,EAAW,IAAA;YAAMC,MAAAA,EAAQ;AAAwC,SAAA;AAC9E,IAAA;AACJ,CAAA;AAEA,MAAMiB,8BAAAA,GAAiC,OAAOpY,SAAAA,EAAmB6B,YAAAA,GAAAA;IAC7D,MAAMhE,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;AACrC,IAAA,MAAMnC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAE/BC,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,+EAA+E,EAAE6D,YAAAA,CAAa,4CAA4C,CAAC,CAAA;AAExJ,IAAA,IAAIhE,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wFAAwF,EAAE6D,YAAAA,CAAa,iBAAiB,CAAC,CAAA;AACtI,QAAA;AACJ,IAAA;IAEA,MAAMwW,UAAAA,GAAa,MAAMC,wBAAAA,CAAyBzW,YAAAA,CAAAA;IAElD,IAAIwW,UAAAA,CAAWE,OAAO,EAAE;AACpBza,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4EAA4E,EAAE6D,YAAAA,CAAa,mCAAmC,CAAC,CAAA;QAC5I/D,MAAAA,CAAOE,IAAI,CAAC,kGAAA,GAAqG6D,YAAAA,CAAAA;IACrH,CAAA,MAAO,IAAIwW,UAAAA,CAAWG,0BAA0B,EAAE;AAC9C1a,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,oEAAoE,EAAEgC,YAAAA,CAAa,wEAAwE,CAAC,CAAA;AAC1K/D,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,iEAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,2DAA2D,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AACzF/D,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,iEAAiE,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AAC/F/D,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,0DAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,2EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb,QAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,eAAe,EAAES,YAAAA,CAAa,+CAA+C,CAAC,CAAA;IACnG,CAAA,MAAO;AACH/D,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,oDAAoD,EAAEgC,YAAAA,CAAa,UAAU,EAAEwW,UAAAA,CAAWxY,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAChI,QAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,8BAA8B,EAAEiX,UAAAA,CAAWxY,KAAK,CAAA,CAAE,CAAA;AACvE,IAAA;AACJ,CAAA;AAEO,MAAME,UAAU,OAAOC,SAAAA,GAAAA;AAcPA,IAAAA,IAAAA,kBAAAA,EA+BfA,qBAmlBgBA,mBAAAA,EAwSKA,mBAAAA;IAv6BzB,MAAMnC,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;AACrC,IAAA,MAAMnC,SAASoC,eAAAA,CAAgBrC,QAAAA,CAAAA;AAC/B,IAAA,MAAMkF,OAAAA,GAAUC,aAAAA,EAAAA;;IAGhB,IAAI7C,aAAAA;AACJ,IAAA,IAAItC,QAAAA,EAAU;QACVsC,aAAAA,GAAgB,aAAA;IACpB,CAAA,MAAO;QACHA,aAAAA,GAAgB,MAAM0R,OAAOyD,oBAAoB,EAAA;AACrD,IAAA;;IAGA,IAAIzT,YAAAA,GAAe7B,EAAAA,kBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmB6B,YAAY,KAAI,MAAA;AACtD,IAAA,IAAI4W,yBAAAA,GAA4B,KAAA;;AAGhC,IAAA,IAAIzY,UAAUK,QAAQ,IAAIL,UAAUK,QAAQ,CAACF,cAAc,EAAE;QACzDsY,yBAAAA,GAA4B,IAAA;AAE5B,QAAA,MAAMC,YAAAA,GAAe1Y,SAAAA,CAAUK,QAAQ,CAACF,aAAAA,CAAc;QAEtD,IAAIuY,YAAAA,CAAa7W,YAAY,EAAE;AAC3BA,YAAAA,YAAAA,GAAe6W,aAAa7W,YAAY;AAC5C,QAAA;QAEA/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,2EAA2E,EAAEmC,cAAc,WAAW,EAAE0B,YAAAA,CAAa,qDAAqD,CAAC,CAAA;AACxL/D,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sDAAsD,EAAEmC,aAAAA,CAAc,eAAe,CAAC,CAAA;AACnGrC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,iEAAiE,EAAE6D,YAAAA,CAAa,oBAAoB,CAAC,CAAA;;AAGlH,QAAA,MAAM8W,kBAAAA,GAAqB3Y,SAAAA,CAAUK,QAAQ,CAACwB,YAAAA,CAAa;AAC3D,QAAA,IAAI8W,kBAAAA,KAAAA,IAAAA,IAAAA,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAoBrX,OAAO,EAAE;AAC7B,YAAA,MAAMsX,WAAAA,GAAcD,kBAAAA,CAAmBrX,OAAO,CAACqM,IAAI;AACnD,YAAA,MAAMkL,UAAAA,GAAaF,kBAAAA,CAAmBrX,OAAO,CAAC1B,GAAG;AACjD,YAAA,MAAMkZ,gBAAAA,GAAmBH,kBAAAA,CAAmBrX,OAAO,CAACyX,SAAS;AAE7Djb,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,gEAAgE,EAAE6D,aAAa,SAAS,EAAE+W,WAAAA,CAAY,QAAQ,EAAEC,UAAAA,IAAc,MAAA,CAAO,cAAc,EAAEC,gBAAAA,GAAmB,YAAY,UAAA,CAAA,CAAY,CAAA;AACjN,QAAA;IACJ,CAAA,MAAO;QACHhb,MAAAA,CAAO8E,KAAK,CAAC,CAAC,2EAA2E,EAAEzC,aAAAA,CAAc,0CAA0C,EAAE0B,YAAAA,CAAAA,CAAc,CAAA;AACvK,IAAA;;AAGA,IAAA,IAAA,CAAI7B,sBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBgZ,UAAU,EAAE;AAC/B,QAAA,MAAMZ,+BAA+BpY,SAAAA,EAAW6B,YAAAA,CAAAA;AAChD,QAAA,OAAA;AACJ,IAAA;;;;;;;AAQA,IAAA,IAAI,CAAChE,QAAAA,EAAU;QACXC,MAAAA,CAAOE,IAAI,CAAC,qHAAA,GAAwH6D,YAAAA,GAAe,8DAAA,CAAA;QACnJ,IAAI;YACA,MAAMoX,SAAAA,GAAY,MAAMjC,kCAAAA,CAAmCnV,YAAAA,EAAchE,QAAAA,CAAAA;YACzE,IAAI,CAACob,SAAAA,CAAU/B,SAAS,EAAE;AACtBpZ,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,oFAAoF,EAAEib,SAAAA,CAAU9B,MAAM,CAAC,WAAW,EAAEtV,YAAAA,CAAa,2BAA2B,CAAC,CAAA;;;;AAI1KqX,gBAAAA,OAAAA,CAAQzI,GAAG,CAAC,0BAAA,CAAA;AACZ,gBAAA;YACJ,CAAA,MAAO;gBACH3S,MAAAA,CAAO2B,OAAO,CAAC,CAAC,uGAAuG,EAAEwZ,UAAU9B,MAAM,CAAC,WAAW,EAAEtV,YAAAA,CAAAA,CAAc,CAAA;AACzK,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;;YAEjB/B,MAAAA,CAAO2B,OAAO,CAAC,CAAC,8EAA8E,EAAEI,KAAAA,CAAMb,OAAO,CAAC,wGAAwG,CAAC,CAAA;AAC3N,QAAA;AACJ,IAAA;;AAGA,IAAA,IAAI,CAACnB,QAAAA,EAAU;;AAEXC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,+IAAA,CAAA;QACZ,IAAI;AACA,YAAA,MAAME,GAAAA,CAAI,kBAAA,CAAA;AACVJ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,yGAAA,CAAA;AAChB,QAAA,CAAA,CAAE,OAAO6B,KAAAA,EAAY;YACjB/B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,wEAAwE,EAAED,KAAAA,CAAMb,OAAO,CAAC,oDAAoD,CAAC,CAAA;AAC9J,QAAA;;AAGAlB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAEmC,aAAAA,CAAc,2DAA2D,CAAC,CAAA;QACjK,IAAI;AACA,YAAA,MAAMuB,YAAAA,GAAe,MAAMxD,GAAAA,CAAI,CAAC,yCAAyC,EAAEiC,aAAAA,CAAAA,CAAe,CAAA,CAAEwB,IAAI,CAAC,IAAM,IAAA,CAAA,CAAMC,KAAK,CAAC,IAAM,KAAA,CAAA;AAEzH,YAAA,IAAIF,YAAAA,EAAc;;gBAEd,MAAMyX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,oBAAA,MAAM5H,GAAAA,CAAI,CAAC,iBAAiB,EAAEiC,aAAAA,CAAAA,CAAe,CAAA;AAC7C,oBAAA,MAAMjC,IAAI,CAAC,iBAAiB,EAAEiC,aAAAA,CAAc,UAAU,CAAC,CAAA;gBAC3D,CAAA,EAAG,CAAC,KAAK,EAAEA,aAAAA,CAAAA,CAAe,CAAA;gBAC1BrC,MAAAA,CAAOE,IAAI,CAAC,CAAC,sFAAsF,EAAEmC,cAAc,kBAAkB,EAAEA,aAAAA,CAAc,kBAAkB,CAAC,CAAA;YAC5K,CAAA,MAAO;AACHrC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,2DAA2D,EAAEmC,aAAAA,CAAc,yDAAyD,CAAC,CAAA;AACtJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAON,KAAAA,EAAY;YACjB,IAAIA,KAAAA,CAAMb,OAAO,IAAIa,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,EAAa;gBACrDpD,MAAAA,CAAO+B,KAAK,CAAC,CAAC,4FAA4F,EAAEM,cAAc,kBAAkB,EAAEA,aAAAA,CAAc,uCAAuC,CAAC,CAAA;AACpMrC,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,2FAA2F,CAAC,CAAA;AAC1G/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,8CAA8C,CAAC,CAAA;AAC7D/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mEAAmE,CAAC,CAAA;AAClF/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,kDAAkD,CAAC,CAAA;AACjE/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,oDAAoD,CAAC,CAAA;AACnE,gBAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,sCAAsC,EAAEjB,aAAAA,CAAc,gDAAgD,CAAC,CAAA;YAC5H,CAAA,MAAO;AACHrC,gBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,gFAAgF,EAAEK,aAAAA,CAAc,kBAAkB,EAAEA,aAAAA,CAAc,UAAU,EAAEN,KAAAA,CAAMb,OAAO,CAAC,0CAA0C,CAAC,CAAA;AACxN,YAAA;AACJ,QAAA;AACJ,IAAA;;AAGAlB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,iEAAiE,EAAE6D,YAAAA,CAAa,mDAAmD,CAAC,CAAA;AACjJ,IAAA,IAAIhE,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sGAAsG,EAAE6D,YAAAA,CAAAA,CAAc,CAAA;IACvI,CAAA,MAAO;QACH,MAAMC,kBAAAA,GAAqB,MAAML,iBAAAA,CAAkBI,YAAAA,CAAAA;AACnD,QAAA,IAAI,CAACC,kBAAAA,EAAoB;;YAErB,MAAMJ,YAAAA,GAAe,MAAM0X,kBAAAA,CAAmBvX,YAAAA,CAAAA;AAE9C,YAAA,IAAIH,YAAAA,EAAc;gBACd5D,MAAAA,CAAOE,IAAI,CAAC,CAAC,wFAAwF,EAAE6D,YAAAA,CAAa,WAAW,EAAEA,YAAAA,CAAAA,CAAc,CAAA;gBAC/I,IAAI;oBACA,MAAMsX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;;AAEhC,wBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,4BAAA,QAAA;AAAUpV,4BAAAA,YAAAA;4BAAc,CAAC,OAAO,EAAEA,YAAAA,CAAAA;AAAe,yBAAA,CAAA;wBACzE/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,4EAA4E,EAAE6D,YAAAA,CAAa,kBAAkB,EAAEA,YAAAA,CAAAA,CAAc,CAAA;oBAC9I,CAAA,EAAG,CAAC,oBAAoB,EAAEA,YAAAA,CAAAA,CAAc,CAAA;AAC5C,gBAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;oBACjB,MAAM,IAAIuB,KAAAA,CAAM,CAAC,+BAA+B,EAAES,aAAa,GAAG,EAAEhC,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACvF,gBAAA;YACJ,CAAA,MAAO;AACHlB,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,kHAAkH,EAAE6D,YAAAA,CAAa,gCAAgC,CAAC,CAAA;gBAC/K,IAAI;;oBAEA,MAAMsX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;;AAEhC,wBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,4BAAA,QAAA;AAAUpV,4BAAAA,YAAAA;AAAc,4BAAA;AAAO,yBAAA,CAAA;AACvD/D,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4EAA4E,EAAE6D,YAAAA,CAAa,eAAe,CAAC,CAAA;;AAGxH,wBAAA,MAAMoV,UAAU,KAAA,EAAO;AAAC,4BAAA,MAAA;AAAQ,4BAAA,QAAA;AAAUpV,4BAAAA;AAAa,yBAAA,CAAA;wBACvD/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,gFAAgF,EAAE6D,YAAAA,CAAa,kBAAkB,EAAEA,YAAAA,CAAAA,CAAc,CAAA;oBAClJ,CAAA,EAAG,CAAC,8BAA8B,EAAEA,YAAAA,CAAAA,CAAc,CAAA;AACtD,gBAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;oBACjB,MAAM,IAAIuB,KAAAA,CAAM,CAAC,gCAAgC,EAAES,aAAa,GAAG,EAAEhC,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACxF,gBAAA;AACJ,YAAA;QACJ,CAAA,MAAO;AACHlB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,qEAAqE,EAAE6D,YAAAA,CAAa,gBAAgB,CAAC,CAAA;AACtH,QAAA;AACJ,IAAA;;AAGA,IAAA,MAAMqT,aAAalV,SAAAA,EAAW6B,YAAAA,CAAAA;IAE9B/D,MAAAA,CAAOE,IAAI,CAAC,kEAAA,GAAqE6D,YAAAA,GAAe,qDAAA,CAAA;AAGhG,IAAA,IAAIyH,EAAAA,GAAyB,IAAA;IAC7B,IAAI7F,UAAAA,GAAqB;AAEzB,IAAA,IAAI5F,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,0FAAA,CAAA;AACZF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,uFAAA,CAAA;IAChB,CAAA,MAAO;QACH,MAAMqb,UAAAA,GAAa,MAAMxH,MAAAA,CAAOyD,oBAAoB,EAAA;QACpDhM,EAAAA,GAAK,MAAMuI,MAAAA,CAAOyH,4BAA4B,CAACD,UAAAA,CAAAA;AACnD,IAAA;AAEA,IAAA,IAAI/P,EAAAA,EAAI;QACJxL,MAAAA,CAAOE,IAAI,CAAC,CAAC,mEAAmE,EAAEsL,EAAAA,CAAGI,QAAQ,CAAC,eAAe,CAAC,CAAA;IAClH,CAAA,MAAO;YAOE1J,mBAAAA,EAQmBA,mBAAAA,EAgBDA,qBAuCFA,mBAAAA,EAqSbA,mBAAAA,EACAA,qBACAA,oBAAAA,EAEJA,oBAAAA,EAGAA,sBAGAA,oBAAAA,EAIAuZ,sBAAAA;AAxXJzb,QAAAA,MAAAA,CAAOE,IAAI,CAAC,yJAAA,CAAA;;AAGZF,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,oKAAA,CAAA;;QAGf,IAAI,EAAA,CAACO,sBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBwZ,eAAe,CAAA,EAAE;AACrC1b,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,oJAAA,CAAA;AACf,YAAA,MAAMuU,wBAAAA,CAAyBnW,QAAAA,CAAAA;QACnC,CAAA,MAAO;AACHC,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,yIAAA,CAAA;AACnB,QAAA;;AAGA,QAAA,MAAMga,mBAAkBzZ,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmB0Z,UAAU;AACrD,QAAA,IAAID,eAAAA,EAAiB;AACjB3b,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAEyb,eAAAA,CAAgB,kDAAkD,CAAC,CAAA;YAC1J,MAAME,OAAAA,GAAU,MAAM,OAAO,0BAAA,CAAA;AAC7B,YAAA,MAAMC,aAAAA,GAAwB;AAC1B,gBAAA,GAAG5Z,SAAS;gBACZC,MAAAA,EAAQpC,QAAAA;gBACRgc,OAAAA,EAAS;oBACLC,KAAAA,EAAOL,eAAAA;oBACPM,YAAAA,EAAc;AAClB;AACJ,aAAA;YACA,MAAMJ,OAAAA,CAAQE,OAAO,CAACD,aAAAA,CAAAA;AAC1B,QAAA;AAEA9b,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,4HAAA,CAAA;AACf,QAAA,MAAMua,kBAAiBha,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAmBia,wBAAwB;AAClE,QAAA,IAAID,cAAAA,IAAkBA,cAAAA,CAAetb,MAAM,GAAG,CAAA,EAAG;AAC7CZ,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,oFAAoF,EAAEua,cAAAA,CAAe/a,IAAI,CAAC,IAAA,CAAA,CAAM,UAAU,EAAE+a,cAAAA,CAAetb,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACzL,MAAMwb,WAAAA,GAAcF,cAAAA,CAAe/a,IAAI,CAAC,GAAA,CAAA;AACxC,YAAA,MAAM4V,qBAAqB,CAAC,WAAW,EAAEqF,WAAAA,CAAY,mBAAmB,CAAC,EAAErc,QAAAA,CAAAA;QAC/E,CAAA,MAAO;AACHC,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,iHAAA,CAAA;AACf,YAAA,MAAMoV,qBAAqB,+BAAA,EAAiChX,QAAAA,CAAAA;AAChE,QAAA;AAEAC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,iJAAA,CAAA;AACZ,QAAA,MAAM6W,qBAAqB,wBAAA,EAA0BhX,QAAAA,EAAU,EAAC,EAAG;;AAGnEC,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,8JAAA,CAAA;;AAEf,QAAA,MAAM0a,YAAAA,GAAe,cAAA;;QAGrB,MAAMhB,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,YAAA,MAAM+O,oBAAAA,CAAqB,CAAC,QAAQ,EAAEsF,cAAc,EAAEtc,QAAAA,CAAAA;QAC1D,CAAA,EAAG,0BAAA,CAAA;AAEHC,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,uHAAA,CAAA;AACf,QAAA,IAAI5B,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,kGAAA,CAAA;QACnB,CAAA,MAAO;YACH,IAAI,MAAMuR,IAAAA,CAAKoJ,gBAAgB,EAAA,EAAI;gBAC/Btc,MAAAA,CAAO2B,OAAO,CAAC,qFAAA,GAAwF0a,YAAAA,GAAe,mCAAA,CAAA;;gBAEtH,MAAMhB,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;oBAChC,MAAMuU,MAAAA,CAAOC,MAAM,CAACta,SAAAA,CAAAA;gBACxB,CAAA,EAAG,2BAAA,CAAA;YACP,CAAA,MAAO;gBACHlC,MAAAA,CAAO2B,OAAO,CAAC,gEAAA,GAAmE0a,YAAAA,GAAe,iCAAA,CAAA;AACrG,YAAA;AACJ,QAAA;;QAGA,MAAMI,YAAAA,GAAeva,CAAAA,CAAAA,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBwa,mBAAmB,MAAK,KAAA,CAAA;AAEhE,QAAA,IAAID,YAAAA,EAAc;AACdzc,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,oIAAoI,EAAEoC,YAAAA,CAAa,mCAAmC,CAAC,CAAA;QAC3M,CAAA,MAAO;AACH/D,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAE6D,YAAAA,CAAa,wDAAwD,CAAC,CAAA;AAC7J,YAAA,IAAIhE,QAAAA,EAAU;AACVC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,YAAY,EAAE6D,YAAAA,CAAa,oBAAoB,CAAC,CAAA;YACjE,CAAA,MAAO;;gBAEH,MAAMsX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;;oBAEhC,IAAI;AACA,wBAAA,MAAM5H,IAAI,CAAC,iBAAiB,EAAE2D,YAAAA,CAAa,CAAC,EAAEA,YAAAA,CAAAA,CAAc,CAAA;wBAC5D/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,2EAA2E,EAAE6D,aAAa,kBAAkB,EAAEA,YAAAA,CAAa,0BAA0B,CAAC,CAAA;AACvK,oBAAA,CAAA,CAAE,OAAO4Y,UAAAA,EAAiB;AACtB3c,wBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,oEAAoE,EAAE+B,YAAAA,CAAa,UAAU,EAAE4Y,UAAAA,CAAWzb,OAAO,CAAC,0DAA0D,CAAC,CAAA;AAC1LlB,wBAAAA,MAAAA,CAAOgC,IAAI,CAAC,+IAAA,CAAA;AAChB,oBAAA;;oBAGA,IAAI;wBACA,MAAM,EAAE7B,MAAAA,EAAQyc,SAAS,EAAE,GAAG,MAAMxc,GAAAA,CAAI,CAAC,oBAAoB,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;wBAC7E,MAAM,EAAE5D,MAAAA,EAAQ0c,YAAY,EAAE,GAAG,MAAMzc,GAAAA,CAAI,CAAC,cAAc,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;AAE1E,wBAAA,IAAI6Y,SAAAA,CAAUtc,IAAI,EAAA,KAAOuc,YAAAA,CAAavc,IAAI,EAAA,EAAI;AAC1CN,4BAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0EAA0E,EAAE6D,YAAAA,CAAa,2CAA2C,CAAC,CAAA;wBACtJ,CAAA,MAAO;;AAEH,4BAAA,IAAI+Y,cAAAA,GAAiB,KAAA;4BACrB,IAAI;gCACA,MAAM1c,GAAAA,CAAI,CAAC,UAAU,EAAE2D,aAAa,qBAAqB,EAAEA,YAAAA,CAAa,6BAA6B,CAAC,CAAA;AACtG/D,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,+EAA+E,EAAE6D,YAAAA,CAAa,oCAAoC,CAAC,CAAA;gCAChJ+Y,cAAAA,GAAiB,IAAA;AACrB,4BAAA,CAAA,CAAE,OAAO7Y,UAAAA,EAAiB;;AAEtB,gCAAA,MAAM8Y,SAAAA,GAAY;AAAC9Y,oCAAAA,UAAAA,CAAW/C,OAAO,IAAI,EAAA;AAAI+C,oCAAAA,UAAAA,CAAW9D,MAAM,IAAI,EAAA;AAAI8D,oCAAAA,UAAAA,CAAW8F,MAAM,IAAI;AAAG,iCAAA,CAAC5I,IAAI,CAAC,GAAA,CAAA;gCACpG,IAAI4b,SAAAA,CAAU3Z,QAAQ,CAAC,UAAA,CAAA,EAAa;AAChCpD,oCAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,2FAA2F,EAAE+B,YAAAA,CAAa,uCAAuC,CAAC,CAAA;;AAG/J,oCAAA,MAAM,EAAE5D,MAAAA,EAAQ6c,eAAe,EAAE,GAAG,MAAM5c,GAAAA,CAAI,sCAAA,CAAA;oCAC9C,MAAM6c,SAAAA,GAAYD,gBAAgB1c,IAAI,EAAA,CAAGC,KAAK,CAAC,IAAA,CAAA,CAAME,MAAM,CAAC6T,OAAAA,CAAAA;AAE5DtU,oCAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,yDAAyD,EAAEsb,SAAAA,CAAU9b,IAAI,CAAC,IAAA,CAAA,CAAM,UAAU,EAAE8b,SAAAA,CAAUrc,MAAM,CAAA,CAAE,CAAA;;AAG9H,oCAAA,MAAMsc,YAAAA,GAAe;AAAC,wCAAA;AAAe,qCAAA;oCACrC,MAAMC,mBAAAA,GAAsBF,UAAUxc,MAAM,CAACiZ,CAAAA,CAAAA,GAAK,CAACwD,YAAAA,CAAa9Z,QAAQ,CAACsW,CAAAA,CAAAA,CAAAA;oCAEzE,IAAIyD,mBAAAA,CAAoBvc,MAAM,GAAG,CAAA,EAAG;AAChCZ,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,uFAAuF,EAAEob,mBAAAA,CAAoBhc,IAAI,CAAC,IAAA,CAAA,CAAM,UAAU,EAAEgc,mBAAAA,CAAoBvc,MAAM,CAAC,2CAA2C,CAAC,CAAA;AACzNZ,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,kEAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,wDAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,qEAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,wDAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,+DAAA,CAAA;AACb/B,wCAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb,wCAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,8DAA8D,CAAC,CAAA;AACpF,oCAAA;;;oCAIAtD,MAAAA,CAAOE,IAAI,CAAC,CAAC,kHAAkH,EAAEgd,YAAAA,CAAa/b,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;oCAC1J,KAAK,MAAMic,QAAQH,SAAAA,CAAW;wCAC1B,IAAIC,YAAAA,CAAa9Z,QAAQ,CAACga,IAAAA,CAAAA,EAAO;AAC7B,4CAAA,MAAMhd,GAAAA,CAAI,CAAC,oBAAoB,EAAEgd,IAAAA,CAAAA,CAAM,CAAA;AACvC,4CAAA,MAAMhd,GAAAA,CAAI,CAAC,QAAQ,EAAEgd,IAAAA,CAAAA,CAAM,CAAA;AAC3Bpd,4CAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,wEAAwE,EAAEyb,IAAAA,CAAK,4BAA4B,CAAC,CAAA;AAChI,wCAAA;AACJ,oCAAA;;AAGA,oCAAA,MAAMhd,IAAI,CAAC,+BAA+B,EAAE2D,YAAAA,CAAa,+DAA+D,CAAC,CAAA;oCACzH/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,uGAAuG,EAAE6D,YAAAA,CAAa,UAAU,EAAEmZ,YAAAA,CAAa/b,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;oCACxK2b,cAAAA,GAAiB,IAAA;gCACrB,CAAA,MAAO;;oCAEH,MAAM7Y,UAAAA;AACV,gCAAA;AACJ,4BAAA;;AAGA,4BAAA,IAAI6Y,cAAAA,EAAgB;;AAEhB9c,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,iJAAA,CAAA;AACZ,gCAAA,MAAME,GAAAA,CAAI,aAAA,CAAA;AACVJ,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,iGAAA,CAAA;;AAGZ,gCAAA,MAAM,EAAEC,MAAAA,EAAQkd,kBAAkB,EAAE,GAAG,MAAMjd,GAAAA,CAAI,wBAAA,CAAA;gCACjD,IAAIid,kBAAAA,CAAmB/c,IAAI,EAAA,EAAI;AAC3BN,oCAAAA,MAAAA,CAAO2B,OAAO,CAAC,iHAAA,CAAA;;AAEf,oCAAA,MAAM2b,qBAAAA,GAAwB,cAAA;AAC9B,oCAAA,MAAMld,GAAAA,CAAI,CAAC,QAAQ,EAAEkd,qBAAAA,CAAAA,CAAuB,CAAA;oCAE5C,IAAI,MAAMpK,IAAAA,CAAKoJ,gBAAgB,EAAA,EAAI;wCAC/Btc,MAAAA,CAAO2B,OAAO,CAAC,4DAAA,GAA+D2b,qBAAAA,GAAwB,4BAAA,CAAA;wCACtG,MAAMf,MAAAA,CAAOC,MAAM,CAACta,SAAAA,CAAAA;AACxB,oCAAA;AACJ,gCAAA;AACJ,4BAAA;AACJ,wBAAA;AACJ,oBAAA,CAAA,CAAE,OAAOH,KAAAA,EAAY;;AAEjB/B,wBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,uEAAuE,EAAEA,KAAAA,CAAMb,OAAO,CAAC,WAAW,EAAE6C,YAAAA,CAAa,2BAA2B,CAAC,CAAA;wBAC3J,MAAMhC,KAAAA;AACV,oBAAA;AACJ,gBAAA,CAAA,EAAG,CAAC,MAAM,EAAEgC,YAAAA,CAAa,oBAAoB,CAAC,CAAA;AAClD,YAAA;AACJ,QAAA;;AAGA/D,QAAAA,MAAAA,CAAOE,IAAI,CAAC,+BAAA,CAAA;AAEZ,QAAA,IAAIH,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,wDAAA,CAAA;AACZyF,YAAAA,UAAAA,GAAa;QACjB,CAAA,MAAO;AAiHCzD,YAAAA,IAAAA,oBAAAA;AAhHJ,YAAA,MAAMwR,mBAAAA,GAAsB,MAAMzO,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;YACnE,MAAM6T,MAAAA,GAAShT,cAAcqO,mBAAAA,EAAqB,cAAA,CAAA;YAClD,MAAMrP,WAAAA,GAAckB,oBAAoB8S,MAAAA,EAAQ,cAAA,CAAA;YAChD,MAAM5T,cAAAA,GAAiBJ,YAAYb,OAAO;YAE1C,IAAI+Z,eAAAA;AACJ,YAAA,IAAIC,iBAAAA,GAAoBzZ,YAAAA;YAExB,IAAI4W,yBAAAA,IAA6BzY,SAAAA,CAAUK,QAAQ,EAAE;;AAEjD,gBAAA,MAAMkb,wBAAwB,MAAMC,+BAAAA,CAChCjZ,gBACApC,aAAAA,EACAH,SAAAA,CAAUK,QAAQ,EAClBwB,YAAAA,CAAAA;AAEJwZ,gBAAAA,eAAAA,GAAkBE,sBAAsBja,OAAO;AAC/Cga,gBAAAA,iBAAAA,GAAoBC,sBAAsB1Z,YAAY;gBAEtD/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,oFAAoF,EAAEuE,eAAe,aAAa,EAAE8Y,eAAAA,CAAgB,6BAA6B,CAAC,CAAA;AAC/Kvd,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,8DAA8D,EAAEsd,iBAAAA,CAAkB,kCAAkC,CAAC,CAAA;;gBAGlIzZ,YAAAA,GAAeyZ,iBAAAA;YACnB,CAAA,MAAO;AAEwBtb,gBAAAA,IAAAA,oBAAAA;;gBAA3B,MAAMyb,kBAAAA,GAAqBzb,EAAAA,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBiB,aAAa,KAAI,OAAA;AAC/Doa,gBAAAA,eAAAA,GAAkBK,uBAAuBnZ,cAAAA,EAAgBkZ,kBAAAA,CAAAA;AAC7D,YAAA;AAEA,YAAA,MAAME,aAAAA,GAAgB,CAAC,CAAC,EAAEN,eAAAA,CAAAA,CAAiB;YAC3C,MAAM9b,SAAAA,GAAY,MAAMqc,gBAAAA,CAAiBD,aAAAA,CAAAA;;AAGzC,YAAA,IAAIpc,SAAAA,EAAW;gBACX,MAAM,EAAEkD,sBAAsB,EAAEoZ,UAAU,EAAE,GAAG,MAAM,OAAO,iBAAA,CAAA;AAE5D/d,gBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,4DAA4D,EAAE6b,aAAAA,CAAc,gDAAgD,CAAC,CAAA;;AAG1I,gBAAA,MAAMG,UAAAA,GAAa,MAAMrZ,sBAAAA,CAAuBN,WAAAA,CAAYQ,IAAI,CAAA;gBAChE,MAAMoZ,OAAAA,GAAU,MAAMF,UAAAA,CAAWF,aAAAA,CAAAA;AAEjC,gBAAA,IAAIG,eAAeT,eAAAA,EAAiB;AAU5Brb,oBAAAA,IAAAA,oBAAAA;;AARJlC,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,gFAAgF,EAAEqd,eAAAA,CAAgB,uCAAuC,CAAC,CAAA;AACvJvd,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,6GAA6G,EAAEqd,eAAAA,CAAAA,CAAiB,CAAA;AAC7Ivd,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,sDAAA,CAAA;AACZF,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,uEAAuE,CAAC,CAAA;AACrFF,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,uDAAuD,CAAC,CAAA;AACrEF,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAEZ,oBAAA,IAAA,CAAIgC,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBgc,oBAAoB,EAAE;wBACzCle,MAAAA,CAAOE,IAAI,CAAC,iGAAA,GAAoGqd,eAAAA,GAAkB,oBAAA,CAAA;;;AAGlInC,wBAAAA,OAAAA,CAAQzI,GAAG,CAAC,0BAAA,CAAA;;AAEZyI,wBAAAA,OAAAA,CAAQzI,GAAG,CAAC,gDAAA,CAAA;AACZ,wBAAA,OAAA;oBACJ,CAAA,MAAO;AACH,wBAAA,MAAM,IAAIrP,KAAAA,CAAM,CAAC,QAAQ,EAAEia,eAAAA,CAAgB,6DAA6D,CAAC,CAAA;AAC7G,oBAAA;gBACJ,CAAA,MAAO;wBAI8FU,eAAAA,EAY7F/b,oBAAAA;;AAdJlC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,0EAAA,GAA6E6b,gBAAgB,UAAA,IAAcG,cAAc,eAAc,CAAA,CAAA;AACnJhe,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,uDAAuD,EAAE6b,aAAAA,CAAc,WAAW,EAAEI,OAAAA,KAAAA,IAAAA,IAAAA,+BAAAA,eAAAA,GAAAA,OAAAA,CAASzB,MAAM,MAAA,IAAA,IAAfyB,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,gBAAiBrc,SAAS,CAAC,GAAG,CAAA,CAAA,CAAA,CAAI,CAAA;oBACnI5B,MAAAA,CAAOgC,IAAI,CAAC,CAAC,4DAA4D,EAAEgc,UAAAA,IAAc,eAAA,CAAgB,WAAW,EAAEA,UAAAA,GAAa,WAAA,GAAc,SAAA,CAAA,CAAW,CAAA;AAC5Jhe,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,gJAAgJ,CAAC,CAAA;AAC9JhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,uDAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,kGAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,0FAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,0CAAA,CAAA;AACZhC,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,0BAA0B,EAAE6b,aAAAA,CAAAA,CAAe,CAAA;AACxD7d,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,0CAA0C,EAAE6b,aAAAA,CAAAA,CAAe,CAAA;AACxE7d,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AAEZ,oBAAA,IAAA,CAAIE,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBic,cAAc,EAAE;wBACnCne,MAAAA,CAAOE,IAAI,CAAC,+FAAA,GAAkG2d,aAAAA,GAAgB,6BAAA,CAAA;AAE9H,wBAAA,IAAI,CAAC9d,QAAAA,EAAU;AACX,4BAAA,MAAM,EAAEoZ,SAAS,EAAE,GAAG,MAAM,OAAO,sBAAA,CAAA;;4BAGnC,IAAI;AACA,gCAAA,MAAMA,UAAU,KAAA,EAAO;AAAC,oCAAA,KAAA;AAAO,oCAAA,IAAA;AAAM0E,oCAAAA;AAAc,iCAAA,CAAA;AACnD7d,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4CAA4C,EAAE2d,aAAAA,CAAc,wBAAwB,CAAC,CAAA;AACtG,4BAAA,CAAA,CAAE,OAAO9b,KAAAA,EAAY;AACjB/B,gCAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,4BAA4B,EAAE/C,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC/D,4BAAA;;4BAGA,IAAI;AACA,gCAAA,MAAMiY,UAAU,KAAA,EAAO;AAAC,oCAAA,MAAA;AAAQ,oCAAA,QAAA;oCAAU,CAAC,WAAW,EAAE0E,aAAAA,CAAAA;AAAgB,iCAAA,CAAA;AACxE7d,gCAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,8CAA8C,EAAE2d,aAAAA,CAAc,0CAA0C,CAAC,CAAA;AAC1H,4BAAA,CAAA,CAAE,OAAO9b,KAAAA,EAAY;AACjB/B,gCAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,6BAA6B,EAAE/C,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAChE,4BAAA;AAEAlB,4BAAAA,MAAAA,CAAOE,IAAI,CAAC,2HAAA,CAAA;wBAChB,CAAA,MAAO;AACHF,4BAAAA,MAAAA,CAAOE,IAAI,CAAC,6CAAA,CAAA;AAChB,wBAAA;oBACJ,CAAA,MAAO;AACH,wBAAA,MAAM,IAAIoD,KAAAA,CAAM,CAAC,IAAI,EAAEua,aAAAA,CAAc,mDAAmD,CAAC,CAAA;AAC7F,oBAAA;AACJ,gBAAA;AACJ,YAAA;AAEA,YAAA,IAAA,CAAI3b,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBiT,WAAW,EAAE;AACgDjT,gBAAAA,IAAAA,oBAAAA;gBAAhFyD,UAAAA,GAAa,MAAMyY,2BAAAA,CAA4B3Z,cAAAA,EAAgB8Y,eAAAA,EAAAA,CAAiBrb,oBAAAA,GAAAA,UAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBiB,aAAa,CAAA;AAChH,gBAAA,MAAMkb,gBAAAA,GAAmB,CAAC,CAAC,EAAE1Y,UAAAA,CAAAA,CAAY;gBACzC,MAAM2Y,kBAAAA,GAAqB,MAAMR,gBAAAA,CAAiBO,gBAAAA,CAAAA;AAElD,gBAAA,IAAIC,kBAAAA,EAAoB;AAMRpc,oBAAAA,IAAAA,oBAAAA;AALZ,oBAAA,MAAM,EAAEyC,sBAAsB,EAAE,GAAG,MAAM,OAAO,iBAAA,CAAA;AAChD,oBAAA,MAAMqZ,UAAAA,GAAa,MAAMrZ,sBAAAA,CAAuBN,WAAAA,CAAYQ,IAAI,CAAA;AAEhE,oBAAA,IAAImZ,eAAerY,UAAAA,EAAY;AAC3B,wBAAA,MAAM,IAAIrC,KAAAA,CAAM,CAAC,IAAI,EAAE+a,gBAAAA,CAAiB,mFAAmF,CAAC,CAAA;oBAChI,CAAA,MAAO,IAAI,GAACnc,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBic,cAAc,CAAA,EAAE;AAC3C,wBAAA,MAAM,IAAI7a,KAAAA,CAAM,CAAC,IAAI,EAAE+a,gBAAAA,CAAiB,mDAAmD,CAAC,CAAA;AAChG,oBAAA;;AAEJ,gBAAA;YACJ,CAAA,MAAO;gBACH1Y,UAAAA,GAAa4X,eAAAA;AACjB,YAAA;YAEAvd,MAAAA,CAAOE,IAAI,CAAC,CAAC,qBAAqB,EAAEuE,cAAAA,CAAe,IAAI,EAAEkB,UAAAA,CAAAA,CAAY,CAAA;AACrEtB,YAAAA,WAAAA,CAAYb,OAAO,GAAGmC,UAAAA;YACtB,MAAMV,OAAAA,CAAQe,SAAS,CAAC,cAAA,EAAgB1B,IAAAA,CAAK2B,SAAS,CAAC5B,WAAAA,EAAa,IAAA,EAAM,CAAA,CAAA,GAAK,IAAA,EAAM,OAAA,CAAA;AACrFrE,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,iCAAiC,EAAEyF,UAAAA,CAAAA,CAAY,CAAA;AAChE,QAAA;;AAGA3F,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,iCAAA,CAAA;;AAEf,QAAA,MAAM4c,uBAAAA,GAA0B,cAAA;;QAGhC,MAAMlD,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,YAAA,MAAM+O,oBAAAA,CAAqB,CAAC,QAAQ,EAAEwH,yBAAyB,EAAExe,QAAAA,CAAAA;QACrE,CAAA,EAAG,oBAAA,CAAA;AAEH,QAAA,IAAIA,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,kCAAA,CAAA;QACnB,CAAA,MAAO;YACH,IAAI,MAAMuR,IAAAA,CAAKoJ,gBAAgB,EAAA,EAAI;AAC/Btc,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,iCAAA,CAAA;gBACf,MAAM0Z,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;oBAChC,MAAMuU,MAAAA,CAAOC,MAAM,CAACta,SAAAA,CAAAA;gBACxB,CAAA,EAAG,qBAAA,CAAA;YACP,CAAA,MAAO;AACHlC,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,+BAAA,CAAA;AACnB,YAAA;AACJ,QAAA;AAEA3B,QAAAA,MAAAA,CAAOE,IAAI,CAAC,6BAAA,CAAA;;AAGZF,QAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,kCAAkC,EAAEzC,aAAAA,CAAAA,CAAe,CAAA;;AAGjE,QAAA,MAAMoZ,aAAAA,GAAgB;AAAE,YAAA,GAAGvZ;AAAU,SAAA;AACrCuZ,QAAAA,aAAAA,CAAc7M,OAAO,GAAG;AACpB,YAAA,GAAG1M,UAAU0M,OAAO;YACpBvM,aAAAA,EAAeA,aAAAA;YACfmB,OAAAA,EAASmC,UAAAA;YACT,GAAIzD,CAAAA,CAAAA,sBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBmQ,IAAI,KAAI;gBAAEA,IAAAA,EAAMnQ,SAAAA,CAAUyR,OAAO,CAACtB;aAAM;YAC/D,GAAInQ,CAAAA,CAAAA,sBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBiT,WAAW,KAAI;gBAAEA,WAAAA,EAAajT,SAAAA,CAAUyR,OAAO,CAACwB;aAAa;YACpF,GAAIjT,CAAAA,CAAAA,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBqQ,QAAQ,KAAI;gBAAEA,QAAAA,EAAUrQ,SAAAA,CAAUyR,OAAO,CAACpB;;AACrE,SAAA;AACA,QAAA,IAAA,CAAIrQ,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBmQ,IAAI,EAAE;YACzBrS,MAAAA,CAAO2B,OAAO,CAAC,CAAC,iDAAiD,EAAEO,SAAAA,CAAUyR,OAAO,CAACtB,IAAI,CAAA,CAAE,CAAA;AAC/F,QAAA;AACA,QAAA,IAAA,CAAInQ,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBiT,WAAW,EAAE;AAChCnV,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,uDAAA,CAAA;AACnB,QAAA;AACA,QAAA,IAAA,CAAIO,uBAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBqQ,QAAQ,EAAE;AAC7BvS,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,0DAAA,CAAA;AACnB,QAAA;;AAEA,QAAA,IAAA,CAAI8Z,yBAAAA,aAAAA,CAAc7M,OAAO,cAArB6M,sBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,sBAAAA,CAAuB5G,cAAc,EAAE;AACvC7U,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,sDAAA,CAAA;AACnB,QAAA;AAEA,QAAA,MAAMsL,cAAAA,GAAiB,MAAMuR,SAAe,CAAC/C,aAAAA,CAAAA;AAE7C,QAAA,IAAI1b,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,wFAAA,CAAA;QAChB,CAAA,MAAO;YACH,MAAMwN,eAAAA,GAAkBxL,SAAAA,CAAUwL,eAAe,IAAIuG,wBAAAA;YACrD,MAAMhP,OAAAA,CAAQiP,eAAe,CAACxG,eAAAA,CAAAA;YAE9B,MAAM+Q,gBAAAA,GAAmB1O,cAAcrC,eAAAA,EAAiB,kBAAA,CAAA;YACxD,MAAMgR,gBAAAA,GAAmB3O,cAAcrC,eAAAA,EAAiB,kBAAA,CAAA;AAExD,YAAA,MAAMzI,QAAQe,SAAS,CAACyY,gBAAAA,EAAkBxR,cAAAA,CAAeE,IAAI,EAAE,OAAA,CAAA;AAC/D,YAAA,MAAMlI,QAAQe,SAAS,CAAC0Y,gBAAAA,EAAkBzR,cAAAA,CAAetB,KAAK,EAAE,OAAA,CAAA;YAChE3L,MAAAA,CAAOE,IAAI,CAAC,CAAC,+CAA+C,EAAEue,iBAAiB,KAAK,EAAEC,gBAAAA,CAAiB,CAAC,CAAC,CAAA;AAC7G,QAAA;AAEA1e,QAAAA,MAAAA,CAAOE,IAAI,CAAC,sBAAA,CAAA;;QAEZ,MAAMqb,UAAAA,GAAa,MAAMxH,MAAAA,CAAOyD,oBAAoB,EAAA;;QAGpD,MAAM6D,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,YAAA,MAAM+O,oBAAAA,CAAqB,CAAC,gBAAgB,EAAEwE,YAAY,EAAExb,QAAAA,CAAAA;QAChE,CAAA,EAAG,CAAC,KAAK,EAAEwb,UAAAA,CAAAA,CAAY,CAAA;AAEvBvb,QAAAA,MAAAA,CAAOE,IAAI,CAAC,0BAAA,CAAA;AACZ,QAAA,IAAIH,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,sDAAA,CAAA;YACZsL,EAAAA,GAAK;gBAAEE,MAAAA,EAAQ,GAAA;gBAAKE,QAAAA,EAAU,uCAAA;AAAyC+S,gBAAAA,MAAAA,EAAQ;AAAG,aAAA;QACtF,CAAA,MAAO;AACH,YAAA,MAAM,EAAExe,MAAAA,EAAQye,cAAc,EAAE,GAAG,MAAMxe,GAAAA,CAAI,wBAAA,CAAA;;AAG7C,YAAA,MAAMye,cAAc9J,aAAAA,CAAc6J,cAAAA,EAAgB1c,SAAAA,CAAU8S,WAAW,EAAEE,QAAQ;AACjF,YAAA,MAAM4J,SAAS/J,aAAAA,CAAc,uBAAA,EAAyB7S,SAAAA,CAAU8S,WAAW,EAAEE,QAAQ;AAErF1J,YAAAA,EAAAA,GAAK,MAAMuI,MAAAA,CAAOgL,iBAAiB,CAACF,WAAAA,EAAaC,QAAQvD,UAAAA,EAAYxX,YAAAA,CAAAA;AACrE,YAAA,IAAI,CAACyH,EAAAA,EAAI;AACL,gBAAA,MAAM,IAAIlI,KAAAA,CAAM,gCAAA,CAAA;AACpB,YAAA;AACAtD,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sBAAsB,EAAEsL,EAAAA,CAAGI,QAAQ,CAAC,EAAE,EAAE2P,UAAAA,CAAW,GAAG,EAAExX,YAAAA,CAAa,CAAC,CAAC,CAAA;AACxF,QAAA;AACJ,IAAA;IAEA/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,gBAAgB,EAAEsL,EAAAA,CAAIE,MAAM,CAAC,sBAAsB,CAAC,CAAA;AACjE,IAAA,IAAI,CAAC3L,QAAAA,EAAU;;AAEX,QAAA,IAAIif,cAAAA,GAAiB,KAAA;QACrB,IAAI;;;AAGA,YAAA,MAAMlH,cAAAA,GAAiB;gBACnBC,YAAAA,EAAc,IAAA;gBACdC,sBAAAA,EAAwB,IAAA;gBACxBC,aAAAA,EAAe,CAAA;AACfC,gBAAAA,sBAAAA,EAAwB;AAC5B,aAAA;AACA,YAAA,IAAI,CAACJ,cAAAA,CAAeC,YAAY,IAAI,CAACD,cAAAA,CAAeE,sBAAsB,EAAE;AAIhF,QAAA,CAAA,CAAE,OAAOjW,KAAAA,EAAY;;AAEjB/B,YAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,uDAAuD,EAAE/C,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC1F,QAAA;AAEA,QAAA,IAAI,CAAC8d,cAAAA,EAAgB;AAED9c,YAAAA,IAAAA,oBAAAA,EACGA,oBAAAA,EAEwBA,oBAAAA;;AAH3C,YAAA,MAAM+c,OAAAA,GAAU/c,CAAAA,CAAAA,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBgd,aAAa,KAAInc,iBAAAA,CAAkB4Q,OAAO,CAACuL,aAAa;YAC3F,MAAMC,UAAAA,GAAajd,EAAAA,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBkd,MAAM,KAAI,KAAA;;YAEhD,MAAMC,oBAAAA,GAAuBF,gBAAcjd,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBmd,oBAAoB,CAAA,IAAI,KAAA;AAEtF,YAAA,MAAMtL,MAAAA,CAAOuL,wBAAwB,CAAC9T,EAAAA,CAAIE,MAAM,EAAE;AAC9CuT,gBAAAA,OAAAA;AACAI,gBAAAA;AACJ,aAAA,CAAA;AACJ,QAAA;AACJ,IAAA;IAEA,MAAME,WAAAA,GAAcrd,EAAAA,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBqd,WAAW,KAAI,QAAA;AACtD,IAAA,IAAIxf,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,gBAAgB,EAAEsL,EAAAA,CAAIE,MAAM,CAAC,OAAO,EAAE6T,WAAAA,CAAY,OAAO,CAAC,CAAA;IAC3E,CAAA,MAAO;QACH,IAAI;YACA,MAAMxL,MAAAA,CAAOyL,gBAAgB,CAAChU,EAAAA,CAAIE,MAAM,EAAE6T,WAAAA,EAAa;AAC3D,QAAA,CAAA,CAAE,OAAOxd,KAAAA,EAAY;;YAEjB,IAAIA,KAAAA,CAAMb,OAAO,KACba,MAAMb,OAAO,CAACkC,QAAQ,CAAC,eAAA,CAAA,IACnBrB,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,+BAAA,CAAA,IACvBrB,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,gBAAA,CAAgB,CAAA,EAC5C;gBACCpD,MAAAA,CAAO+B,KAAK,CAAC,CAAC,kEAAkE,EAAEyJ,EAAAA,CAAIE,MAAM,CAAC,+DAA+D,CAAC,CAAA;AAC7J1L,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,qDAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qCAAqC,EAAEyJ,EAAAA,CAAII,QAAQ,CAAA,CAAE,CAAA;AACnE5L,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,iEAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,+DAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,6HAAA,CAAA;gBACb,MAAM,IAAIuB,MAAM,CAAC,gCAAgC,EAAEkI,EAAAA,CAAIE,MAAM,CAAC,kDAAkD,CAAC,CAAA;YACrH,CAAA,MAAO;;gBAEH,MAAM3J,KAAAA;AACV,YAAA;AACJ,QAAA;AACJ,IAAA;;AAGA/B,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4BAA4B,EAAE6D,YAAAA,CAAa,GAAG,CAAC,CAAA;;AAG5D,IAAA,IAAI0b,iBAAAA,GAAoB,KAAA;AACxB,IAAA,IAAI,CAAC1f,QAAAA,EAAU;AACX,QAAA,MAAM,EAAEI,MAAAA,EAAQwJ,YAAY,EAAE,GAAG,MAAMwP,UAAU,KAAA,EAAO;AAAC,YAAA,QAAA;AAAU,YAAA;AAAc,SAAA,CAAA;QACjF,IAAIxP,YAAAA,CAAarJ,IAAI,EAAA,EAAI;AACrBN,YAAAA,MAAAA,CAAOE,IAAI,CAAC,8IAAA,CAAA;AACZ,YAAA,MAAMiZ,UAAU,KAAA,EAAO;AAAC,gBAAA,OAAA;AAAS,gBAAA,MAAA;AAAQ,gBAAA,IAAA;AAAM,gBAAA;AAAgD,aAAA,CAAA;YAC/FsG,iBAAAA,GAAoB,IAAA;AACpBzf,YAAAA,MAAAA,CAAOE,IAAI,CAAC,wGAAA,CAAA;AAChB,QAAA;AACJ,IAAA;IAEA,IAAI;;QAEA,MAAMmb,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,YAAA,MAAM+O,oBAAAA,CAAqB,CAAC,aAAa,EAAEhT,cAAc,EAAEhE,QAAAA,CAAAA;QAC/D,CAAA,EAAG,CAAC,SAAS,EAAEgE,YAAAA,CAAAA,CAAc,CAAA;;AAG7B,QAAA,IAAI,CAAChE,QAAAA,EAAU;AACXC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,oEAAoE,EAAE6D,YAAAA,CAAa,+CAA+C,CAAC,CAAA;YAChJ,IAAI;AACA,gBAAA,MAAMH,YAAAA,GAAe,MAAMxD,GAAAA,CAAI,CAAC,yCAAyC,EAAE2D,YAAAA,CAAAA,CAAc,CAAA,CAAEF,IAAI,CAAC,IAAM,IAAA,CAAA,CAAMC,KAAK,CAAC,IAAM,KAAA,CAAA;AAExH,gBAAA,IAAIF,YAAAA,EAAc;oBACd,MAAMyX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,wBAAA,MAAM5H,GAAAA,CAAI,CAAC,iBAAiB,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;AAC5C,wBAAA,MAAM3D,IAAI,CAAC,iBAAiB,EAAE2D,YAAAA,CAAa,UAAU,CAAC,CAAA;oBAC1D,CAAA,EAAG,CAAC,KAAK,EAAEA,YAAAA,CAAAA,CAAc,CAAA;AACzB/D,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAE6D,YAAAA,CAAa,mCAAmC,CAAC,CAAA;gBAC5I,CAAA,MAAO;AACH/D,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,kEAAkE,EAAE6D,YAAAA,CAAa,yDAAyD,CAAC,CAAA;AAC5J,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO2b,SAAAA,EAAgB;gBACrB,IAAIA,SAAAA,CAAUxe,OAAO,IAAIwe,SAAAA,CAAUxe,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,EAAa;AAC7DpD,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qEAAqE,EAAEgC,YAAAA,CAAa,8CAA8C,CAAC,CAAA;AACjJ/D,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,0DAA0D,CAAC,CAAA;AACzE/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mDAAmD,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AACjF/D,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qDAAqD,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AACnF/D,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qCAAqC,CAAC,CAAA;AACpD/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,mEAAmE,CAAC,CAAA;AAClF/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+CAA+C,CAAC,CAAA;AAC9D/B,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,oDAAoD,EAAEM,aAAAA,CAAAA,CAAe,CAAA;AACnFrC,oBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,qDAAqD,CAAC,CAAA;oBACpE,MAAM2d,SAAAA;gBACV,CAAA,MAAO;oBACH1f,MAAAA,CAAOgC,IAAI,CAAC,CAAC,kEAAkE,EAAE+B,aAAa,2BAA2B,EAAE2b,SAAAA,CAAUxe,OAAO,CAAA,CAAE,CAAA;;AAElJ,gBAAA;AACJ,YAAA;QACJ,CAAA,MAAO;AACHlB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAE6D,YAAAA,CAAa,kCAAkC,CAAC,CAAA;AAC9E,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;;QAEjB,IAAI,CAAChC,QAAAA,KAAagC,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,IACxBrB,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,IACvBrB,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,UAAA,CAAA,IACvBrB,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,kBAAA,CAAkB,CAAA,EAAI;AAE1DpD,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+EAA+E,EAAEgC,YAAAA,CAAa,iDAAiD,CAAC,CAAA;AAC9J/D,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,4DAAA,CAAA;AACb/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,wFAAwF,CAAC,CAAA;AACvG/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,+CAA+C,CAAC,CAAA;AAC9D/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,sDAAsD,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AACpF/D,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,0DAA0D,EAAEgC,YAAAA,CAAAA,CAAc,CAAA;AACxF/D,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,0CAA0C,CAAC,CAAA;AACzD/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,wDAAwD,CAAC,CAAA;AACvE/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,uGAAA,CAAA;AAEb,YAAA,MAAM,IAAIuB,KAAAA,CAAM,CAAC,eAAe,EAAES,YAAAA,CAAa,qDAAqD,CAAC,CAAA;QACzG,CAAA,MAAO;;YAEH,MAAMhC,KAAAA;AACV,QAAA;AACJ,IAAA;;AAGA,IAAA,IAAI0d,iBAAAA,EAAmB;AACnBzf,QAAAA,MAAAA,CAAOE,IAAI,CAAC,mIAAA,CAAA;QACZ,IAAI;AACA,YAAA,MAAMiZ,UAAU,KAAA,EAAO;AAAC,gBAAA,OAAA;AAAS,gBAAA;AAAM,aAAA,CAAA;AACvCnZ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,mGAAA,CAAA;AAChB,QAAA,CAAA,CAAE,OAAOyf,UAAAA,EAAiB;YACtB3f,MAAAA,CAAOgC,IAAI,CAAC,CAAC,yEAAyE,EAAE2d,UAAAA,CAAWze,OAAO,CAAC,iCAAiC,CAAC,CAAA;AAC7IlB,YAAAA,MAAAA,CAAOgC,IAAI,CAAC,wHAAA,CAAA;AAChB,QAAA;AACJ,IAAA;;;AAIA,IAAA,IAAI,CAACjC,QAAAA,EAAU;QACXC,MAAAA,CAAOE,IAAI,CAAC,CAAC,oGAAoG,EAAEyF,UAAAA,CAAW,WAAW,EAAE5B,YAAAA,CAAAA,CAAc,CAAA;;AAGzJ,QAAA,MAAM6b,yBAAAA,GAA4B,MAAM3a,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;QACzE,MAAMY,iBAAAA,GAAoBC,cAAcua,yBAAAA,EAA2B,cAAA,CAAA;;QAGnE,IAAIxa,iBAAAA,CAAkB5B,OAAO,KAAKmC,UAAAA,EAAY;AAC1C3F,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,yEAAyE,EAAEkF,iBAAAA,CAAkB5B,OAAO,CAAC,aAAa,EAAEmC,UAAAA,CAAW,mBAAmB,CAAC,CAAA;;AAGhKP,YAAAA,iBAAAA,CAAkB5B,OAAO,GAAGmC,UAAAA;YAC5B,MAAMV,OAAAA,CAAQe,SAAS,CAAC,cAAA,EAAgB1B,IAAAA,CAAK2B,SAAS,CAACb,iBAAAA,EAAmB,IAAA,EAAM,CAAA,CAAA,GAAK,IAAA,EAAM,OAAA,CAAA;YAC3FpF,MAAAA,CAAOE,IAAI,CAAC,CAAC,kFAAkF,EAAEyF,UAAAA,CAAW,WAAW,EAAE5B,YAAAA,CAAAA,CAAc,CAAA;;YAGvI,MAAMsX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,gBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,oBAAA,KAAA;AAAO,oBAAA;AAAe,iBAAA,CAAA;YAClD,CAAA,EAAG,gCAAA,CAAA;;YAGH,IAAI,MAAMjG,IAAAA,CAAKoJ,gBAAgB,EAAA,EAAI;AAC/Btc,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,wHAAA,CAAA;gBACZ,MAAMmb,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;oBAChC,MAAMuU,MAAAA,CAAOC,MAAM,CAACta,SAAAA,CAAAA;gBACxB,CAAA,EAAG,iCAAA,CAAA;AACHlC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,kEAAA,CAAA;;AAGZF,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,oEAAoE,EAAE6D,YAAAA,CAAa,iBAAiB,CAAC,CAAA;gBAClH,MAAMsX,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,oBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,wBAAA,MAAA;AAAQ,wBAAA,QAAA;AAAUpV,wBAAAA;AAAa,qBAAA,CAAA;gBAC3D,CAAA,EAAG,CAAC,uBAAuB,EAAEA,YAAAA,CAAAA,CAAc,CAAA;AAC3C/D,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,sEAAA,CAAA;YAChB,CAAA,MAAO;AACHF,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,4EAAA,CAAA;AACnB,YAAA;QACJ,CAAA,MAAO;YACH3B,MAAAA,CAAOE,IAAI,CAAC,CAAC,6EAA6E,EAAEyF,UAAAA,CAAW,WAAW,EAAE5B,YAAAA,CAAAA,CAAc,CAAA;AACtI,QAAA;AACJ,IAAA;;AAGA/D,IAAAA,MAAAA,CAAOE,IAAI,CAAC,yBAAA,CAAA;IACZ,IAAI2f,OAAAA;AACJ,IAAA,IAAI9f,QAAAA,EAAU;AACVC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,oDAAA,CAAA;AACZ2f,QAAAA,OAAAA,GAAU;IACd,CAAA,MAAO;;;QAGHA,OAAAA,GAAU,CAAC,CAAC,EAAEla,UAAAA,CAAAA,CAAY;;QAG1B,IAAI;;YAEA,IAAI,CAACma,eAAeD,OAAAA,CAAAA,EAAU;AAC1B,gBAAA,MAAM,IAAIvc,KAAAA,CAAM,CAAC,kBAAkB,EAAEuc,OAAAA,CAAAA,CAAS,CAAA;AAClD,YAAA;AACA,YAAA,MAAM,EAAE1f,MAAM,EAAE,GAAG,MAAMgZ,UAAU,KAAA,EAAO;AAAC,gBAAA,KAAA;AAAO,gBAAA,IAAA;AAAM0G,gBAAAA;AAAQ,aAAA,CAAA;YAChE,IAAI1f,MAAAA,CAAOG,IAAI,EAAA,KAAOuf,OAAAA,EAAS;AAC3B7f,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,IAAI,EAAE2f,OAAAA,CAAQ,8CAA8C,CAAC,CAAA;YAC9E,CAAA,MAAO;gBACH,MAAMxE,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,oBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,wBAAA,KAAA;AAAO0G,wBAAAA;AAAQ,qBAAA,CAAA;gBAC3C,CAAA,EAAG,CAAC,WAAW,EAAEA,OAAAA,CAAAA,CAAS,CAAA;AAC1B7f,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,mBAAmB,EAAE2f,OAAAA,CAAAA,CAAS,CAAA;AAC/C,YAAA;AACJ,QAAA,CAAA,CAAE,OAAO9d,KAAAA,EAAO;;YAEZ,MAAMsZ,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,gBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,oBAAA,KAAA;AAAO0G,oBAAAA;AAAQ,iBAAA,CAAA;YAC3C,CAAA,EAAG,CAAC,WAAW,EAAEA,OAAAA,CAAAA,CAAS,CAAA;AAC1B7f,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,mBAAmB,EAAE2f,OAAAA,CAAAA,CAAS,CAAA;AAC/C,QAAA;;AAGA,QAAA,IAAIE,YAAAA,GAAe,KAAA;QACnB,IAAI;AACA,YAAA,MAAM,EAAE5f,MAAM,EAAE,GAAG,MAAMgZ,UAAU,KAAA,EAAO;AAAC,gBAAA,WAAA;AAAa,gBAAA,QAAA;gBAAU,CAAC,UAAU,EAAE0G,OAAAA,CAAAA;AAAU,aAAA,CAAA;YACzF,IAAI1f,MAAAA,CAAOG,IAAI,EAAA,EAAI;AACfN,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,IAAI,EAAE2f,OAAAA,CAAQ,wCAAwC,CAAC,CAAA;YACxE,CAAA,MAAO;gBACH,MAAMxE,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,oBAAA,MAAMmR,UAAU,KAAA,EAAO;AAAC,wBAAA,MAAA;AAAQ,wBAAA,QAAA;AAAU0G,wBAAAA;AAAQ,qBAAA,CAAA;gBACtD,CAAA,EAAG,CAAC,SAAS,EAAEA,OAAAA,CAAAA,CAAS,CAAA;AACxB7f,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sBAAsB,EAAE2f,OAAAA,CAAAA,CAAS,CAAA;gBAC9CE,YAAAA,GAAe,IAAA;AACnB,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOhe,KAAAA,EAAO;;YAEZ,IAAI;AACA,gBAAA,MAAMoX,UAAU,KAAA,EAAO;AAAC,oBAAA,MAAA;AAAQ,oBAAA,QAAA;AAAU0G,oBAAAA;AAAQ,iBAAA,CAAA;AAClD7f,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sBAAsB,EAAE2f,OAAAA,CAAAA,CAAS,CAAA;gBAC9CE,YAAAA,GAAe,IAAA;AACnB,YAAA,CAAA,CAAE,OAAOC,SAAAA,EAAgB;gBACrB,IAAIA,SAAAA,CAAU9e,OAAO,IAAI8e,SAAAA,CAAU9e,OAAO,CAACkC,QAAQ,CAAC,gBAAA,CAAA,EAAmB;AACnEpD,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,IAAI,EAAE2f,OAAAA,CAAQ,wCAAwC,CAAC,CAAA;gBACxE,CAAA,MAAO;oBACH,MAAMG,SAAAA;AACV,gBAAA;AACJ,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAID,YAAAA,EAAc;AACd/f,YAAAA,MAAAA,CAAO2B,OAAO,CAAC,iDAAA,CAAA;AACf,YAAA,MAAM,IAAIse,OAAAA,CAAQC,CAAAA,UAAWC,UAAAA,CAAWD,OAAAA,EAAS;AACrD,QAAA;AACJ,IAAA;AAEAlgB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,4BAAA,CAAA;AACZ,IAAA,IAAIH,QAAAA,EAAU;AAEiBmC,QAAAA,IAAAA,oBAAAA;AAD3BlC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,4EAAA,CAAA;QACZ,MAAM2T,iBAAAA,GAAoB,GAAC3R,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,qBAAmB4R,YAAY,CAAA;AAC1D,QAAA,IAAID,iBAAAA,EAAmB;AACnB7T,YAAAA,MAAAA,CAAOE,IAAI,CAAC,4CAAA,CAAA;QAChB,CAAA,MAAO;AACHF,YAAAA,MAAAA,CAAOE,IAAI,CAAC,gDAAA,CAAA;AAChB,QAAA;IACJ,CAAA,MAAO;QACH,MAAMwN,eAAAA,GAAkBxL,SAAAA,CAAUwL,eAAe,IAAIuG,wBAAAA;QACrD,MAAMwK,gBAAAA,GAAmB1O,cAAcrC,eAAAA,EAAiB,kBAAA,CAAA;QACxD,MAAMgR,gBAAAA,GAAmB3O,cAAcrC,eAAAA,EAAiB,kBAAA,CAAA;AAExD,QAAA,MAAMG,mBAAAA,GAAsB,MAAM5I,OAAAA,CAAQT,QAAQ,CAACia,gBAAAA,EAAkB,OAAA,CAAA;AACrE,QAAA,MAAM2B,YAAAA,GAAe,MAAMnb,OAAAA,CAAQT,QAAQ,CAACka,gBAAAA,EAAkB,OAAA,CAAA;;AAG9D,QAAA,IAAI2B,OAAAA,GAAU,CAAA;AACd,QAAA,MAAOA,UAAU,CAAA,CAAG;YAChB,IAAI;AAK2Bne,gBAAAA,IAAAA,oBAAAA;AAJ3B,gBAAA,MAAM6R,MAAAA,CAAOuM,aAAa,CAACT,OAAAA,EAASO,YAAAA,EAAcvS,mBAAAA,CAAAA;AAClD7N,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,6CAA6C,EAAE2f,OAAAA,CAAAA,CAAS,CAAA;;gBAGrE,MAAMhM,iBAAAA,GAAoB,GAAC3R,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAmB4R,YAAY,CAAA;AAC1D,gBAAA,IAAID,iBAAAA,EAAmB;AACnB7T,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,qIAAA,CAAA;AACZ,oBAAA,MAAMsD,UAAUqc,OAAAA,CAAQxc,OAAO,CAAC,IAAA,EAAM;oBACtC,MAAM0Q,MAAAA,CAAOwM,wBAAwB,CAAC/c,OAAAA,CAAAA;gBAC1C,CAAA,MAAO;AACHxD,oBAAAA,MAAAA,CAAO8E,KAAK,CAAC,oDAAA,CAAA;AACjB,gBAAA;AAEA,gBAAA,MAAA;AACJ,YAAA,CAAA,CAAE,OAAO/C,KAAAA,EAAY;;gBAEjB,MAAMye,kBAAAA,GAAqBze,MAAMb,OAAO,KACpCa,KAAAA,CAAMb,OAAO,CAACkC,QAAQ,CAAC,WAAA,CAAA,IACnBrB,MAAMb,OAAO,CAACkC,QAAQ,CAAC,gBAAA,CAAA,IACvBrB,MAAMb,OAAO,CAACkC,QAAQ,CAAC,0BAAA,CAA0B,CAAA;gBAGzD,IAAIod,kBAAAA,IAAsBH,UAAU,CAAA,EAAG;oBACnCrgB,MAAAA,CAAO2B,OAAO,CAAC,CAAC,IAAI,EAAEke,OAAAA,CAAQ,wDAAwD,EAAEQ,OAAAA,GAAU,CAAA,CAAE,cAAc,CAAC,CAAA;AACnH,oBAAA,MAAM,IAAIJ,OAAAA,CAAQC,CAAAA,OAAAA,GAAWC,WAAWD,OAAAA,EAAS,IAAA,CAAA,CAAA;AACjDG,oBAAAA,OAAAA,EAAAA;AACJ,gBAAA,CAAA,MAAO,IAAIG,kBAAAA,EAAoB;;AAE3B,oBAAA,MAAM,IAAIld,KAAAA,CAAM,CAAC,IAAI,EAAEuc,OAAAA,CAAQ,+BAA+B,EAAE,CAAA,GAAIQ,OAAAA,GAAU,CAAA,CAAE,mFAAmF,CAAC,CAAA;gBACxK,CAAA,MAAO;;oBAEH,MAAMte,KAAAA;AACV,gBAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA;;IAGA,MAAM0e,gBAAAA,GAAmBve,CAAAA,CAAAA,mBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAmBwe,uBAAuB,MAAK,KAAA,CAAA;AACxE,IAAA,IAAID,gBAAAA,EAAkB;AAClBzgB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,kCAAA,CAAA;AACZ,QAAA,IAAIH,QAAAA,EAAU;AACVC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;QAChB,CAAA,MAAO;AACqBgC,YAAAA,IAAAA,oBAAAA,EACLA,sBACwBA,oBAAAA,EAGvBA,oBAAAA;AALpB,YAAA,MAAMye,eAAAA,GAAkBze,CAAAA,CAAAA,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmB0e,uBAAuB,KAAI7d,iBAAAA,CAAkB4Q,OAAO,CAACiN,uBAAuB;YACvH,MAAMzB,UAAAA,GAAajd,EAAAA,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBkd,MAAM,KAAI,KAAA;YAChD,MAAMC,oBAAAA,GAAuBF,gBAAcjd,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAmBmd,oBAAoB,CAAA,IAAI,KAAA;;AAGtF,YAAA,IAAIwB,iBAAgB3e,oBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,MAAA,IAAA,IAAjBzR,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,qBAAmB4e,oBAAoB;AAE3D,YAAA,IAAI,CAACD,aAAAA,IAAiBA,aAAAA,CAAcjgB,MAAM,KAAK,CAAA,EAAG;AAC9CZ,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,gGAAA,CAAA;gBACZ,IAAI;oBACA2gB,aAAAA,GAAgB,MAAM9M,OAAOgN,8BAA8B,EAAA;oBAC3D,IAAIF,aAAAA,CAAcjgB,MAAM,KAAK,CAAA,EAAG;AAC5BZ,wBAAAA,MAAAA,CAAOE,IAAI,CAAC,0DAAA,CAAA;oBAChB,CAAA,MAAO;wBACHF,MAAAA,CAAOE,IAAI,CAAC,CAAC,iCAAiC,EAAE2gB,aAAAA,CAAc1f,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC9E,oBAAA;AACJ,gBAAA,CAAA,CAAE,OAAOY,KAAAA,EAAY;AACjB/B,oBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,yCAAyC,EAAED,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACvE2f,oBAAAA,aAAAA,GAAgBlM;AACpB,gBAAA;AACJ,YAAA;YAEA,MAAMZ,MAAAA,CAAO2M,uBAAuB,CAACb,OAAAA,EAAS;gBAC1CZ,OAAAA,EAAS0B,eAAAA;AACTE,gBAAAA,aAAAA;AACAxB,gBAAAA;AACJ,aAAA,CAAA;AACJ,QAAA;IACJ,CAAA,MAAO;AACHrf,QAAAA,MAAAA,CAAO2B,OAAO,CAAC,8DAAA,CAAA;AACnB,IAAA;;AAGA3B,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,yIAAyI,CAAC,CAAA;AACvJ,IAAA,MAAM6W,oBAAAA,CAAqB,CAAC,aAAa,EAAE1U,eAAe,EAAEtC,QAAAA,CAAAA;AAE5D,IAAA,IAAI,CAACA,QAAAA,EAAU;;;AAGX,QAAA,IAAIwf,gBAAgB,QAAA,EAAU;;;YAG1Bvf,MAAAA,CAAOE,IAAI,CAAC,CAAC,UAAU,EAAEmC,cAAc,IAAI,EAAE0B,YAAAA,CAAa,kBAAkB,CAAC,CAAA;AAC7E,YAAA,MAAM3D,GAAAA,CAAI,CAAC,iBAAiB,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;YAC5C/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,8DAA8D,EAAEmC,cAAc,WAAW,EAAE0B,YAAAA,CAAa,uBAAuB,CAAC,CAAA;;;AAI7I/D,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,mEAAmE,EAAEmC,aAAAA,CAAc,uDAAuD,CAAC,CAAA;YAExJ,IAAI;;gBAEA,IAAI;AACA,oBAAA,MAAMjC,GAAAA,CAAI,CAAC,iBAAiB,EAAEiC,eAAe,EAAE;wBAAEyH,oBAAAA,EAAsB;AAAK,qBAAA,CAAA;oBAC5E,MAAM1J,GAAAA,CAAI,CAAC,oCAAoC,EAAEiC,cAAc,CAAC,EAAE0B,cAAc,EAAE;wBAAE+F,oBAAAA,EAAsB;AAAK,qBAAA,CAAA;oBAC/G9J,MAAAA,CAAO2B,OAAO,CAAC,CAAC,8BAA8B,EAAEU,aAAAA,CAAc,gBAAgB,EAAE0B,YAAAA,CAAAA,CAAc,CAAA;AAClG,gBAAA,CAAA,CAAE,OAAM;;AAEJ/D,oBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,OAAO,EAAEU,aAAAA,CAAc,oCAAoC,CAAC,CAAA;AAChF,gBAAA;;AAGA,gBAAA,MAAMjC,GAAAA,CAAI,CAAC,mCAAmC,EAAEiC,aAAAA,CAAAA,CAAe,CAAA;AAC/DrC,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,0EAA0E,EAAEmC,aAAAA,CAAc,wCAAwC,CAAC,CAAA;AACpJ,YAAA,CAAA,CAAE,OAAO2d,SAAAA,EAAgB;;gBAErBhgB,MAAAA,CAAOgC,IAAI,CAAC,CAAC,iEAAiE,EAAEK,cAAc,2BAA2B,EAAE2d,SAAAA,CAAU9e,OAAO,CAAA,CAAE,CAAA;AAC9IlB,gBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,8EAA8E,CAAC,CAAA;AAC5FhC,gBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,8FAA8F,EAAEK,aAAAA,CAAAA,CAAe,CAAA;AAChI,YAAA;QACJ,CAAA,MAAO;;YAEHrC,MAAAA,CAAOE,IAAI,CAAC,CAAC,qEAAqE,EAAE6D,aAAa,WAAW,EAAE1B,aAAAA,CAAc,uCAAuC,CAAC,CAAA;;;AAIpK,YAAA,IAAI2e,oBAAAA,GAAuB,KAAA;YAC3B,IAAI;AACA,gBAAA,MAAM7H,UAAU,KAAA,EAAO;AAAC,oBAAA,OAAA;AAASpV,oBAAAA,YAAAA;AAAc,oBAAA;AAAY,iBAAA,CAAA;gBAC3Did,oBAAAA,GAAuB,IAAA;gBACvBhhB,MAAAA,CAAOE,IAAI,CAAC,CAAC,2EAA2E,EAAE6D,aAAa,WAAW,EAAE1B,aAAAA,CAAc,iBAAiB,CAAC,CAAA;AACxJ,YAAA,CAAA,CAAE,OAAM;AACJrC,gBAAAA,MAAAA,CAAO2B,OAAO,CAAC,CAAC,4DAA4D,CAAC,CAAA;AACjF,YAAA;AAEA,YAAA,IAAI,CAACqf,oBAAAA,EAAsB;AACvB,gBAAA,MAAM5gB,IAAI,CAAC,UAAU,EAAE2D,YAAAA,CAAa,UAAU,CAAC,CAAA;gBAC/C/D,MAAAA,CAAOE,IAAI,CAAC,CAAC,2DAA2D,EAAE6D,aAAa,WAAW,EAAE1B,aAAAA,CAAc,iBAAiB,CAAC,CAAA;AACxI,YAAA;AACJ,QAAA;QAIA,IAAI0Y,UAAAA,GAAa;QAEjB,IAAIJ,yBAAAA,IAA6BzY,SAAAA,CAAUK,QAAQ,EAAE;AACjD,YAAA,MAAM0e,kBAAAA,GAAqB/e,SAAAA,CAAUK,QAAQ,CAACF,aAAAA,CAAc;AAC5D,YAAA,IAAI4e,kBAAAA,KAAAA,IAAAA,IAAAA,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAoBzd,OAAO,EAAE;;AAE7B,gBAAA,IAAIyd,kBAAAA,CAAmBzd,OAAO,CAACP,cAAc,EAAE;AAC3Cie,oBAAiB,CAAC,GAAG,EAAED,mBAAmBzd,OAAO,CAACP,cAAc,CAAA,CAAE;AACtE,gBAAA;AACA,gBAAA,IAAIge,kBAAAA,CAAmBzd,OAAO,CAAC1B,GAAG,EAAE;oBAChCiZ,UAAAA,GAAakG,kBAAAA,CAAmBzd,OAAO,CAAC1B,GAAG;AAC/C,gBAAA;AACJ,YAAA;AACJ,QAAA;;;;;AAMA9B,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,wEAAwE,EAAE6a,UAAAA,CAAW,kCAAkC,CAAC,CAAA;QACrI,IAAI;;AAEA,YAAA,MAAMvV,eAAAA,GAAkB,MAAMP,OAAAA,CAAQT,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;YAC/D,MAAMiB,OAAAA,GAAUJ,cAAcG,eAAAA,EAAiB,cAAA,CAAA;YAC/C,MAAME,gBAAAA,GAAmBH,oBAAoBE,OAAAA,EAAS,cAAA,CAAA;YACtD,MAAM0b,UAAAA,GAAazb,iBAAiBlC,OAAO;;AAG3C,YAAA,MAAM,EAAE4d,0BAA0B,EAAE,GAAG,MAAM,OAAO,iBAAA,CAAA;;;;AAIpD,YAAA,MAAMC,0BAA0Bzb,uBAAAA,CAAsBub,UAAAA,CAAAA;YACtD,MAAMxb,UAAAA,GAAayb,2BAA2BC,uBAAAA,EAAyBtG,UAAAA,CAAAA;;AAGvErV,YAAAA,gBAAAA,CAAiBlC,OAAO,GAAGmC,UAAAA;YAC3B,MAAMV,OAAAA,CAAQe,SAAS,CAAC,cAAA,EAAgB1B,IAAAA,CAAK2B,SAAS,CAACP,gBAAAA,EAAkB,IAAA,EAAM,CAAA,CAAA,GAAK,IAAA,EAAM,OAAA,CAAA;AAE1F1F,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,uEAAuE,EAAEyF,UAAAA,CAAW,wCAAwC,CAAC,CAAA;;YAG1I,MAAM0V,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,gBAAA,MAAM5H,GAAAA,CAAI,sBAAA,CAAA;AACV,gBAAA,MAAMA,IAAI,CAAC,8BAA8B,EAAEuF,UAAAA,CAAW,CAAC,CAAC,CAAA;YAC5D,CAAA,EAAG,yBAAA,CAAA;AACP,QAAA,CAAA,CAAE,OAAO2b,YAAAA,EAAmB;YACxBthB,MAAAA,CAAOgC,IAAI,CAAC,CAAC,iEAAiE,EAAEsf,YAAAA,CAAapgB,OAAO,CAAC,8BAA8B,CAAC,CAAA;AACpIlB,YAAAA,MAAAA,CAAOgC,IAAI,CAAC,8HAAA,CAAA;AAChB,QAAA;;AAGAhC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,6DAA6D,EAAEmC,aAAAA,CAAc,qDAAqD,CAAC,CAAA;QAChJ,IAAI;YACA,MAAMgZ,cAAAA,CAAetT,OAAAA,CAAQC,GAAG,EAAA,EAAI,UAAA;AAChC,gBAAA,MAAM5H,GAAAA,CAAI,CAAC,gBAAgB,EAAEiC,aAAAA,CAAAA,CAAe,CAAA;YAChD,CAAA,EAAG,CAAC,KAAK,EAAEA,aAAAA,CAAAA,CAAe,CAAA;AAC1BrC,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,yEAAyE,EAAEmC,aAAAA,CAAc,kCAAkC,CAAC,CAAA;AAC7I,QAAA,CAAA,CAAE,OAAO2d,SAAAA,EAAgB;AACrBhgB,YAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,mEAAmE,EAAEK,aAAAA,CAAc,UAAU,EAAE2d,SAAAA,CAAU9e,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAC1JlB,YAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,4EAA4E,EAAEK,aAAAA,CAAAA,CAAe,CAAA;AAC9G,QAAA;IACJ,CAAA,MAAO;QACHrC,MAAAA,CAAOE,IAAI,CAAC,CAAC,gFAAgF,EAAE6D,aAAa,WAAW,EAAE1B,aAAAA,CAAc,oBAAoB,CAAC,CAAA;AAC5JrC,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,sGAAsG,CAAC,CAAA;AACpHF,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,4EAA4E,EAAEmC,aAAAA,CAAc,iBAAiB,CAAC,CAAA;AAC/H,IAAA;AAEArC,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,oEAAoE,EAAEmC,aAAAA,CAAc,gDAAgD,CAAC,CAAA;AACtJ;;AClmDA;;AAEC,IACM,eAAekf,sBAAAA,CAClBrf,SAAiB,EACjB6B,YAAqB,EAAA;AAErB,IAAA,MAAMqJ,MAAAA,GAA2B;QAC7BoU,KAAAA,EAAO,IAAA;AACPC,QAAAA,MAAAA,EAAQ,EAAE;AACV9Y,QAAAA,QAAAA,EAAU;AACd,KAAA;IAEA,MAAM5I,QAAAA,GAAWmC,SAAAA,CAAUC,MAAM,IAAI,KAAA;;IAGrC,MAAM8d,OAAAA,CAAQyB,GAAG,CAAC;AACdC,QAAAA,kBAAAA,CAAmBvU,MAAAA,EAAQrN,QAAAA,CAAAA;AAC3B6hB,QAAAA,cAAAA,CAAexU,MAAAA,EAAQrN,QAAAA,CAAAA;AACvB8hB,QAAAA,kBAAAA,CAAmBzU,QAAQrJ,YAAAA,EAAchE,QAAAA,CAAAA;AACzC+hB,QAAAA,qBAAAA,CAAsB1U,QAAQrJ,YAAAA,EAAchE,QAAAA,CAAAA;AAC5CgiB,QAAAA,YAAAA,CAAa3U,MAAQrN,CAAAA;AACrBiiB,QAAAA,uBAAAA,CAAwB5U,QAAQlL,SAAWnC,CAAAA;AAC3CkiB,QAAAA,gBAAAA,CAAiB7U,QAAQlL,SAAAA,EAAWnC,QAAAA;AACvC,KAAA,CAAA;AAEDqN,IAAAA,MAAAA,CAAOoU,KAAK,GAAGpU,MAAAA,CAAOqU,MAAM,CAAC7gB,MAAM,KAAK,CAAA;IACxC,OAAOwM,MAAAA;AACX;AAEA;;AAEC,IACD,eAAeuU,kBAAAA,CAAmBvU,MAAwB,EAAErN,QAAiB,EAAA;IACzE,IAAI;AACA,QAAA,IAAI,CAACA,QAAAA,EAAU;AACX,YAAA,MAAMK,GAAAA,CAAI,yBAAA,CAAA;AACd,QAAA;AACJ,IAAA,CAAA,CAAE,OAAM;QACJgN,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;YACfwgB,KAAAA,EAAO,gBAAA;YACPhhB,OAAAA,EAAS,+CAAA;YACTihB,UAAAA,EAAY;AAChB,SAAA,CAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAeP,cAAAA,CAAexU,MAAwB,EAAErN,QAAiB,EAAA;IACrE,IAAI;AACA,QAAA,IAAI,CAACA,QAAAA,EAAU;AACX,YAAA,MAAM,EAAEI,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,wBAAA,CAAA;YAC7B,IAAID,MAAAA,CAAOG,IAAI,EAAA,EAAI;AACf,gBAAA,MAAM8hB,KAAAA,GAAQjiB,MAAAA,CAAOG,IAAI,EAAA,CAAGC,KAAK,CAAC,IAAA,CAAA,CAAMyG,GAAG,CAACtG,CAAAA,IAAAA,GAAQA,IAAAA,CAAKkB,SAAS,CAAC,GAAGtB,IAAI,EAAA,CAAA;gBAC1E8M,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;oBACfwgB,KAAAA,EAAO,YAAA;oBACPhhB,OAAAA,EAAS,2CAAA;oBACTkhB,KAAAA,EAAOA,KAAAA;oBACPD,UAAAA,EAAY;AAChB,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOpgB,KAAAA,EAAY;QACjBqL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;YACfwgB,KAAAA,EAAO,YAAA;AACPhhB,YAAAA,OAAAA,EAAS,CAAC,4BAA4B,EAAEa,KAAAA,CAAMb,OAAO,CAAA,CAAE;YACvDihB,UAAAA,EAAY;AAChB,SAAA,CAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAeN,kBAAAA,CAAmBzU,MAAwB,EAAErJ,YAAgC,EAAEhE,QAAiB,EAAA;IAC3G,IAAI;QACA,IAAI,CAACA,YAAYgE,YAAAA,EAAc;AAC3B,YAAA,MAAM,EAAE5D,MAAM,EAAE,GAAG,MAAMC,GAAAA,CAAI,2BAAA,CAAA;YAC7B,MAAMiC,aAAAA,GAAgBlC,OAAOG,IAAI,EAAA;AAEjC,YAAA,IAAI+B,kBAAkB0B,YAAAA,EAAc;gBAChCqJ,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;oBACfwgB,KAAAA,EAAO,gBAAA;AACPhhB,oBAAAA,OAAAA,EAAS,CAAC,2CAA2C,EAAE6C,YAAAA,CAAa,CAAC,CAAC;oBACtEoe,UAAAA,EAAY;AAChB,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOpgB,KAAAA,EAAY;QACjBqL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;YACfwgB,KAAAA,EAAO,gBAAA;AACPhhB,YAAAA,OAAAA,EAAS,CAAC,gCAAgC,EAAEa,KAAAA,CAAMb,OAAO,CAAA;AAC7D,SAAA,CAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAe4gB,qBAAAA,CAAsB1U,MAAwB,EAAErJ,YAAgC,EAAEhE,QAAiB,EAAA;IAC9G,IAAI;QACA,IAAI,CAACA,YAAYgE,YAAAA,EAAc;;YAE3B,IAAI;AACA,gBAAA,MAAM3D,GAAAA,CAAI,CAAC,uBAAuB,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;;gBAGlD,MAAM,EAAE5D,MAAAA,EAAQyX,QAAQ,EAAE,GAAG,MAAMxX,GAAAA,CAAI,CAAC,cAAc,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;gBACtE,MAAM,EAAE5D,MAAAA,EAAQ0X,SAAS,EAAE,GAAG,MAAMzX,GAAAA,CAAI,CAAC,qBAAqB,EAAE2D,YAAAA,CAAAA,CAAc,CAAA;AAE9E,gBAAA,IAAI6T,QAAAA,CAAStX,IAAI,EAAA,KAAOuX,SAAAA,CAAUvX,IAAI,EAAA,EAAI;oBACtC8M,MAAAA,CAAOzE,QAAQ,CAACjH,IAAI,CAAC;wBACjBwgB,KAAAA,EAAO,oBAAA;AACPhhB,wBAAAA,OAAAA,EAAS,CAAC,eAAe,EAAE6C,YAAAA,CAAa,4BAA4B,CAAC;AACrEoe,wBAAAA,UAAAA,EAAY,CAAC,kBAAkB,EAAEpe,YAAAA,CAAa,oBAAoB,EAAEA,YAAAA,CAAAA;AACxE,qBAAA,CAAA;AACJ,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAM;;AAER,YAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOhC,KAAAA,EAAY;;QAEjBqL,MAAAA,CAAOzE,QAAQ,CAACjH,IAAI,CAAC;YACjBwgB,KAAAA,EAAO,oBAAA;AACPhhB,YAAAA,OAAAA,EAAS,CAAC,qCAAqC,EAAEa,KAAAA,CAAMb,OAAO,CAAA;AAClE,SAAA,CAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAe6gB,YAAAA,CAAa3U,MAAwB,EAAEiV,SAAkB,EAAA;AACpE,IAAA,MAAMpd,OAAAA,GAAUC,aAAAA,EAAAA;AAChB,IAAA,MAAMkT,kBAAkB5R,aAAAA,CAAKrF,IAAI,CAAC4G,OAAAA,CAAQC,GAAG,EAAA,EAAI,cAAA,CAAA;IAEjD,IAAI;AAaK3D,QAAAA,IAAAA,oBAAAA;AAZL,QAAA,IAAI,CAAC,MAAMY,OAAAA,CAAQ6Q,MAAM,CAACsC,eAAAA,CAAAA,EAAkB;YACxChL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;gBACfwgB,KAAAA,EAAO,cAAA;gBACPhhB,OAAAA,EAAS,6CAAA;gBACTkhB,KAAAA,EAAO;AAAChK,oBAAAA;AAAgB;AAC5B,aAAA,CAAA;AACA,YAAA;AACJ,QAAA;AAEA,QAAA,MAAMrL,OAAAA,GAAU,MAAM9H,OAAAA,CAAQT,QAAQ,CAAC4T,eAAAA,EAAiB,OAAA,CAAA;QACxD,MAAM/T,WAAAA,GAAcC,IAAAA,CAAKC,KAAK,CAACwI,OAAAA,CAAAA;QAE/B,IAAI,EAAA,CAAC1I,uBAAAA,WAAAA,CAAYiU,OAAO,cAAnBjU,oBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAqBkU,cAAc,CAAA,EAAE;YACtCnL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;gBACfwgB,KAAAA,EAAO,mBAAA;gBACPhhB,OAAAA,EAAS,qEAAA;gBACTkhB,KAAAA,EAAO;AAAChK,oBAAAA;AAAgB,iBAAA;gBACxB+J,UAAAA,EAAY;AAChB,aAAA,CAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAE,OAAOpgB,KAAAA,EAAY;QACjBqL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;YACfwgB,KAAAA,EAAO,cAAA;AACPhhB,YAAAA,OAAAA,EAAS,CAAC,8BAA8B,EAAEa,KAAAA,CAAMb,OAAO,CAAA,CAAE;YACzDkhB,KAAAA,EAAO;AAAChK,gBAAAA;AAAgB;AAC5B,SAAA,CAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAe4J,uBAAAA,CAAwB5U,MAAwB,EAAElL,SAAiB,EAAEmgB,SAAkB,EAAA;;IAElG,IAAIngB,SAAAA,CAAU2F,IAAI,EAAE;AAChB,QAAA,MAAM5C,OAAAA,GAAUC,aAAAA,EAAAA;QAChB,MAAMod,QAAAA,GAAWva,QAAQC,GAAG,EAAA;AAC5B,QAAA,MAAMoQ,eAAAA,GAAkB5R,aAAAA,CAAKrF,IAAI,CAACmhB,QAAAA,EAAU,cAAA,CAAA;QAE5C,IAAI;AACA,YAAA,IAAI,CAAC,MAAMrd,OAAAA,CAAQ6Q,MAAM,CAACsC,eAAAA,CAAAA,EAAkB;gBACxChL,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;oBACfwgB,KAAAA,EAAO,qBAAA;oBACPhhB,OAAAA,EAAS,yCAAA;oBACTkhB,KAAAA,EAAO;AAAChK,wBAAAA;AAAgB,qBAAA;oBACxB+J,UAAAA,EAAY;AAChB,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAE,OAAOpgB,KAAAA,EAAY;YACjBqL,MAAAA,CAAOzE,QAAQ,CAACjH,IAAI,CAAC;gBACjBwgB,KAAAA,EAAO,qBAAA;AACPhhB,gBAAAA,OAAAA,EAAS,CAAC,sCAAsC,EAAEa,KAAAA,CAAMb,OAAO,CAAA;AACnE,aAAA,CAAA;AACJ,QAAA;AACJ,IAAA;AACJ;AAEA;;AAEC,IACD,eAAe+gB,gBAAAA,CAAiB7U,MAAwB,EAAElL,SAAiB,EAAEmgB,SAAkB,EAAA;AACnEngB,IAAAA,IAAAA,kBAAAA;IAAxB,MAAM+U,eAAAA,GAAkB/U,CAAAA,CAAAA,kBAAAA,GAAAA,SAAAA,CAAUyR,OAAO,cAAjBzR,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmB+U,eAAe,KAAI,EAAE;AAChE,IAAA,MAAMsL,cAAwB,EAAE;IAEhC,KAAK,MAAMpL,UAAUF,eAAAA,CAAiB;AAClC,QAAA,IAAI,CAAClP,OAAAA,CAAQmE,GAAG,CAACiL,OAAO,EAAE;AACtBoL,YAAAA,WAAAA,CAAY7gB,IAAI,CAACyV,MAAAA,CAAAA;AACrB,QAAA;AACJ,IAAA;IAEA,IAAIoL,WAAAA,CAAY3hB,MAAM,GAAG,CAAA,EAAG;AACxB,QAAA,IAAIyhB,SAAAA,EAAW;YACXjV,MAAAA,CAAOzE,QAAQ,CAACjH,IAAI,CAAC;gBACjBwgB,KAAAA,EAAO,uBAAA;AACPhhB,gBAAAA,OAAAA,EAAS,CAAC,wCAAwC,EAAEqhB,WAAAA,CAAYphB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO;gBAC5EghB,UAAAA,EAAY;AAChB,aAAA,CAAA;QACJ,CAAA,MAAO;YACH/U,MAAAA,CAAOqU,MAAM,CAAC/f,IAAI,CAAC;gBACfwgB,KAAAA,EAAO,uBAAA;AACPhhB,gBAAAA,OAAAA,EAAS,CAAC,wCAAwC,EAAEqhB,WAAAA,CAAYphB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO;gBAC5EghB,UAAAA,EAAY;AAChB,aAAA,CAAA;AACJ,QAAA;AACJ,IAAA;AACJ;AAEA;;IAGO,SAASK,oBAAAA,CAAqBpV,MAAwB,EAAA;AACzD,IAAA,MAAMpN,MAAAA,GAASsG,SAAAA,EAAAA;AAEf,IAAA,IAAI8G,MAAAA,CAAOqU,MAAM,CAAC7gB,MAAM,GAAG,CAAA,EAAG;AAC1BZ,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,4DAAA,GAA+DqL,OAAOqU,MAAM,CAAC7gB,MAAM,GAAG,2BAAA,CAAA;AACnGZ,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACb/B,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,wDAAA,CAAA;AACbqL,QAAAA,MAAAA,CAAOqU,MAAM,CAAC5f,OAAO,CAAC,CAACE,KAAAA,EAAO0gB,GAAAA,GAAAA;AAC1BziB,YAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,EAAE,EAAE0gB,MAAM,CAAA,CAAE,GAAG,EAAE1gB,KAAAA,CAAMmgB,KAAK,CAAC,EAAE,EAAEngB,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;YAC9D,IAAIa,KAAAA,CAAMqgB,KAAK,IAAIrgB,KAAAA,CAAMqgB,KAAK,CAACxhB,MAAM,GAAG,CAAA,EAAG;gBACvCZ,MAAAA,CAAO+B,KAAK,CAAC,CAAC,YAAY,EAAEA,MAAMqgB,KAAK,CAACjhB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AACxD,YAAA;YACA,IAAIY,KAAAA,CAAMogB,UAAU,EAAE;AAClBniB,gBAAAA,MAAAA,CAAO+B,KAAK,CAAC,CAAC,OAAO,EAAEA,KAAAA,CAAMogB,UAAU,CAAA,CAAE,CAAA;AAC7C,YAAA;AACJ,QAAA,CAAA,CAAA;AACAniB,QAAAA,MAAAA,CAAO+B,KAAK,CAAC,EAAA,CAAA;AACjB,IAAA;AAEA,IAAA,IAAIqL,MAAAA,CAAOzE,QAAQ,CAAC/H,MAAM,GAAG,CAAA,EAAG;AAC5BZ,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AACZhC,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,kEAAA,GAAqEoL,OAAOzE,QAAQ,CAAC/H,MAAM,GAAG,iCAAA,CAAA;AAC1GZ,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AACZoL,QAAAA,MAAAA,CAAOzE,QAAQ,CAAC9G,OAAO,CAAC,CAAC6K,OAAAA,EAAS+V,GAAAA,GAAAA;AAC9BziB,YAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,EAAE,EAAEygB,MAAM,CAAA,CAAE,GAAG,EAAE/V,OAAAA,CAAQwV,KAAK,CAAC,EAAE,EAAExV,OAAAA,CAAQxL,OAAO,CAAA,CAAE,CAAA;YACjE,IAAIwL,OAAAA,CAAQyV,UAAU,EAAE;AACpBniB,gBAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,OAAO,EAAE0K,OAAAA,CAAQyV,UAAU,CAAA,CAAE,CAAA;AAC9C,YAAA;AACJ,QAAA,CAAA,CAAA;AACAniB,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,EAAA,CAAA;AAChB,IAAA;IAEA,IAAIoL,MAAAA,CAAOoU,KAAK,EAAE;AACdxhB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,uFAAA,CAAA;AAChB,IAAA;AACJ;AAEA;;IAGO,SAASwiB,uBAAAA,CAAwBtV,MAAwB,EAAA;IAC5D,IAAI,CAACA,MAAAA,CAAOoU,KAAK,EAAE;AACf,QAAA,MAAM,IAAImB,eAAAA,CACN,CAAC,kCAAkC,EAAEvV,MAAAA,CAAOqU,MAAM,CAAC7gB,MAAM,CAAC,SAAS,CAAC,EACpE;YACIgiB,KAAAA,EAAO;AACX,SAAA,EACAxV,MAAAA,CAAOqU,MAAM,EACbrU,MAAAA,CAAOzE,QAAQ,CAAA;AAEvB,IAAA;AACJ;;AC7PA;;IAGO,SAASka,eAAAA,CAAgBhS,MAAoB,EAAA;AAChD,IAAA,MAAM7Q,MAAAA,GAASsG,SAAAA,EAAAA;AAEftG,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,8DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;AAGZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,qBAAA,CAAA;IACZF,MAAAA,CAAOE,IAAI,CAAC,CAAC,aAAa,EAAE2Q,MAAAA,CAAOiS,cAAc,CAACC,OAAO,CAAA,CAAE,CAAA;IAC3D/iB,MAAAA,CAAOE,IAAI,CAAC,CAAC,aAAa,EAAE2Q,MAAAA,CAAOiS,cAAc,CAACE,QAAQ,CAAA,CAAE,CAAA;AAC5DhjB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;AAGZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,gCAAA,CAAA;AACZ2Q,IAAAA,MAAAA,CAAOoS,UAAU,CAACphB,OAAO,CAAC,CAACqhB,EAAAA,EAAIT,GAAAA,GAAAA;QAC3BziB,MAAAA,CAAOE,IAAI,CAAC,CAAC,GAAG,EAAEuiB,GAAAA,GAAM,CAAA,CAAE,EAAE,EAAES,EAAAA,CAAGC,IAAI,CAAA,CAAE,CAAA;AACvCnjB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,MAAM,EAAEgjB,EAAAA,CAAGE,WAAW,CAAA,CAAE,CAAA;QACrC,IAAIF,EAAAA,CAAGG,OAAO,EAAE;AACZrjB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,eAAe,EAAEgjB,EAAAA,CAAGG,OAAO,CAAA,CAAE,CAAA;AAC9C,QAAA;QACA,IAAIH,EAAAA,CAAGd,KAAK,IAAIc,EAAAA,CAAGd,KAAK,CAACxhB,MAAM,GAAG,CAAA,EAAG;AACjCZ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,cAAA,CAAA;AACZgjB,YAAAA,EAAAA,CAAGd,KAAK,CAACvgB,OAAO,CAACub,CAAAA,IAAAA,GAAAA;AACbpd,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAEkd,IAAAA,CAAK5W,IAAI,CAAA,CAAE,CAAA;gBACrC,IAAI4W,IAAAA,CAAKkG,OAAO,EAAE;AACdtjB,oBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAEkd,IAAAA,CAAKkG,OAAO,CAAA,CAAE,CAAA;AAC5C,gBAAA;AACJ,YAAA,CAAA,CAAA;AACJ,QAAA;AACJ,IAAA,CAAA,CAAA;AACAtjB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;AAGZ,IAAA,IAAI2Q,MAAAA,CAAO0S,IAAI,CAAC3iB,MAAM,GAAG,CAAA,EAAG;AACxBZ,QAAAA,MAAAA,CAAOE,IAAI,CAAC,0BAAA,CAAA;AACZ2Q,QAAAA,MAAAA,CAAO0S,IAAI,CAAC1hB,OAAO,CAACC,CAAAA,GAAAA,GAAAA;AAChB9B,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,KAAK,EAAE4B,GAAAA,CAAAA,CAAK,CAAA;AAC7B,QAAA,CAAA,CAAA;AACA9B,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB,IAAA;;AAGAF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,iBAAA,CAAA;IACZF,MAAAA,CAAOE,IAAI,CAAC,CAAC,YAAY,EAAE2Q,MAAAA,CAAO2S,UAAU,CAACC,OAAO,CAAA,CAAE,CAAA;IACtDzjB,MAAAA,CAAOE,IAAI,CAAC,CAAC,YAAY,EAAE2Q,MAAAA,CAAO2S,UAAU,CAAChgB,OAAO,CAAA,CAAE,CAAA;AACtD,IAAA,IAAIqN,OAAO2S,UAAU,CAACpB,KAAK,CAACxhB,MAAM,GAAG,CAAA,EAAG;AACpCZ,QAAAA,MAAAA,CAAOE,IAAI,CAAC,2BAAA,CAAA;AACZ2Q,QAAAA,MAAAA,CAAO2S,UAAU,CAACpB,KAAK,CAACvgB,OAAO,CAACub,CAAAA,IAAAA,GAAAA;AAC5Bpd,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,QAAQ,EAAEkd,IAAAA,CAAAA,CAAM,CAAA;AACjC,QAAA,CAAA,CAAA;AACJ,IAAA;AACApd,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;IAGZ,IAAI2Q,MAAAA,CAAO6S,SAAS,EAAE;AAClB1jB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,kBAAA,CAAA;QACZF,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAE2Q,MAAAA,CAAO6S,SAAS,CAAC/X,KAAK,CAAA,CAAE,CAAA;QAClD3L,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAE2Q,MAAAA,CAAO6S,SAAS,CAACC,YAAY,CAAA,CAAE,CAAA;QACzD3jB,MAAAA,CAAOE,IAAI,CAAC,CAAC,WAAW,EAAE2Q,MAAAA,CAAO6S,SAAS,CAAC3f,YAAY,CAAA,CAAE,CAAA;AACzD/D,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB,IAAA;AAEAF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,8DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,sDAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB;AAEA;;IAGO,SAAS0jB,mBAAAA,CAAoB/S,MAAwB,EAAA;AACxD,IAAA,MAAM7Q,MAAAA,GAASsG,SAAAA,EAAAA;AAEftG,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,8DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;AAGZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,yBAAA,CAAA;IACZF,MAAAA,CAAOE,IAAI,CAAC,CAAC,mBAAmB,EAAE2Q,MAAAA,CAAOgT,UAAU,CAACjjB,MAAM,CAAA,CAAE,CAAA;AAC5DZ,IAAAA,MAAAA,CAAOE,IAAI,CAAC,qBAAA,CAAA;AACZ2Q,IAAAA,MAAAA,CAAOgT,UAAU,CAAChiB,OAAO,CAAC,CAACiiB,GAAAA,EAAKrB,GAAAA,GAAAA;QAC5BziB,MAAAA,CAAOE,IAAI,CAAC,CAAC,MAAM,EAAEuiB,GAAAA,GAAM,CAAA,CAAE,EAAE,EAAEqB,GAAAA,CAAAA,CAAK,CAAA;AAC1C,IAAA,CAAA,CAAA;AACA9jB,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;;AAGZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,wBAAA,CAAA;AACZ2Q,IAAAA,MAAAA,CAAO0F,QAAQ,CAAC1U,OAAO,CAACiiB,CAAAA,GAAAA,GAAAA;AACpB9jB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,IAAI,EAAE4jB,GAAAA,CAAIC,KAAK,CAAC,EAAE,EAAED,GAAAA,CAAIjf,IAAI,CAAA,CAAE,CAAA;AAC3C,QAAA,IAAIif,GAAAA,CAAI7Z,YAAY,CAACrJ,MAAM,GAAG,CAAA,EAAG;YAC7BZ,MAAAA,CAAOE,IAAI,CAAC,CAAC,qBAAqB,EAAE4jB,IAAI7Z,YAAY,CAAC9I,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AACrE,QAAA;QACA,IAAI2iB,GAAAA,CAAIE,aAAa,EAAE;AACnBhkB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,gBAAgB,EAAE4jB,IAAIE,aAAa,CAAC3R,IAAI,CAAC,GAAG,EAAEyR,GAAAA,CAAIE,aAAa,CAACvR,EAAE,CAAA,CAAE,CAAA;AACrF,QAAA;AACA,QAAA,IAAIqR,GAAAA,CAAIb,UAAU,CAACriB,MAAM,GAAG,CAAA,EAAG;AAC3BZ,YAAAA,MAAAA,CAAOE,IAAI,CAAC,oBAAA,CAAA;AACZ4jB,YAAAA,GAAAA,CAAIb,UAAU,CAACphB,OAAO,CAACqhB,CAAAA,EAAAA,GAAAA;AACnBljB,gBAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,YAAY,EAAEgjB,EAAAA,CAAAA,CAAI,CAAA;AACnC,YAAA,CAAA,CAAA;AACJ,QAAA;AACAljB,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB,IAAA,CAAA,CAAA;;AAGA,IAAA,IAAI2Q,MAAAA,CAAOoT,iBAAiB,CAACrjB,MAAM,GAAG,CAAA,EAAG;AACrCZ,QAAAA,MAAAA,CAAOE,IAAI,CAAC,sCAAA,CAAA;AACZ2Q,QAAAA,MAAAA,CAAOoT,iBAAiB,CAACpiB,OAAO,CAACqiB,CAAAA,MAAAA,GAAAA;AAC7BlkB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,GAAG,EAAEgkB,MAAAA,CAAOT,OAAO,CAAA,CAAE,CAAA;AAClCzjB,YAAAA,MAAAA,CAAOE,IAAI,CAAC,CAAC,MAAM,EAAEgkB,OAAOC,UAAU,CAAC,EAAE,EAAED,OAAO7R,IAAI,CAAC,GAAG,EAAE6R,MAAAA,CAAOzR,EAAE,CAAA,CAAE,CAAA;AAC3E,QAAA,CAAA,CAAA;AACAzS,QAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB,IAAA;AAEAF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,8DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,sDAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,6DAAA,CAAA;AACZF,IAAAA,MAAAA,CAAOE,IAAI,CAAC,EAAA,CAAA;AAChB;AAEA;;AAEC,IACM,SAASkkB,kBAAAA,CACZ3f,cAAsB,EACtB8Y,eAAuB,EACvB8G,WAAmB,EACnBpB,UAAsC,EACtClf,YAAqB,EACrB4f,YAAqB,EAAA;IAErB,OAAO;AACHV,QAAAA,UAAAA;QACAH,cAAAA,EAAgB;YACZC,OAAAA,EAASte,cAAAA;YACTue,QAAAA,EAAUzF;AACd,SAAA;QACAgG,IAAAA,EAAM;YAAC,CAAC,CAAC,EAAEhG,eAAAA,CAAAA;AAAkB,SAAA;QAC7BiG,UAAAA,EAAY;YACRC,OAAAA,EAASY,WAAAA;YACT7gB,OAAAA,EAAS+Z,eAAAA;YACT6E,KAAAA,EAAO,EAAE;AACb,SAAA;AACAsB,QAAAA,SAAAA,EAAW3f,gBAAgB4f,YAAAA,GAAe;YACtChY,KAAAA,EAAO,CAAC,QAAQ,EAAE4R,eAAAA,CAAAA,CAAiB;AACnCxZ,YAAAA,YAAAA;AACA4f,YAAAA;SACJ,GAAIhP;AACR,KAAA;AACJ;;ACjNA,MAAM3U,MAAAA,GAASsG,SAAAA,EAAAA;AAoEf;;IAGA,SAASge,kBAAkBC,gBAAwB,EAAA;IAC/C,OAAO/d,aAAAA,CAAKrF,IAAI,CAACojB,gBAAAA,EAAkB,mCAAA,CAAA;AACvC;AAEA;;IAGO,eAAeC,cAAAA,CAAeC,UAA6B,EAAA;AAC9D,IAAA,MAAMxf,OAAAA,GAAUC,aAAAA,EAAAA;IAChB,MAAMwf,cAAAA,GAAiBJ,iBAAAA,CAAkBG,UAAAA,CAAWF,gBAAgB,CAAA;IAEpE,IAAI;QACA,MAAMtf,OAAAA,CAAQe,SAAS,CACnB0e,cAAAA,EACApgB,KAAK2B,SAAS,CAACwe,UAAAA,EAAY,IAAA,EAAM,CAAA,CAAA,EACjC,OAAA,CAAA;AAGJzkB,QAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,oDAAoD,EAAE2f,WAAW7B,KAAK,CAAC,YAAY,EAAE6B,WAAWJ,WAAW,CAAC,YAAY,EAAEI,UAAAA,CAAWjhB,OAAO,CAAA,CAAE,CAAA;AAChK,IAAA,CAAA,CAAE,OAAOzB,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,2DAA2D,EAAED,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AAC7F,IAAA;AACJ;AAEA;;IAGO,eAAeyjB,cAAAA,CAAeJ,gBAAwB,EAAA;AACzD,IAAA,MAAMtf,OAAAA,GAAUC,aAAAA,EAAAA;AAChB,IAAA,MAAMwf,iBAAiBJ,iBAAAA,CAAkBC,gBAAAA,CAAAA;IAEzC,IAAI;AACA,QAAA,IAAI,CAAC,MAAMtf,OAAAA,CAAQ6Q,MAAM,CAAC4O,cAAAA,CAAAA,EAAiB;YACvC,OAAO,IAAA;AACX,QAAA;AAEA,QAAA,MAAM3X,OAAAA,GAAU,MAAM9H,OAAAA,CAAQT,QAAQ,CAACkgB,cAAAA,EAAgB,OAAA,CAAA;QACvD,MAAMD,UAAAA,GAAangB,IAAAA,CAAKC,KAAK,CAACwI,OAAAA,CAAAA;AAE9B/M,QAAAA,MAAAA,CAAO8E,KAAK,CAAC,CAAC,sDAAsD,EAAE2f,WAAW7B,KAAK,CAAC,YAAY,EAAE6B,WAAWJ,WAAW,CAAC,YAAY,EAAEI,UAAAA,CAAWjhB,OAAO,CAAA,CAAE,CAAA;QAE9J,OAAOihB,UAAAA;AACX,IAAA,CAAA,CAAE,OAAO1iB,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,2DAA2D,EAAED,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;QACzF,OAAO,IAAA;AACX,IAAA;AACJ;AAEA;;IAGO,eAAe0jB,gBAAAA,CAAiBL,gBAAwB,EAAA;AAC3D,IAAA,MAAMtf,OAAAA,GAAUC,aAAAA,EAAAA;AAChB,IAAA,MAAMwf,iBAAiBJ,iBAAAA,CAAkBC,gBAAAA,CAAAA;IAEzC,IAAI;AACA,QAAA,IAAI,MAAMtf,OAAAA,CAAQ6Q,MAAM,CAAC4O,cAAAA,CAAAA,EAAiB;YACtC,MAAMzf,OAAAA,CAAQ4f,UAAU,CAACH,cAAAA,CAAAA;AACzB1kB,YAAAA,MAAAA,CAAO8E,KAAK,CAAC,4EAAA,CAAA;AACjB,QAAA;AACJ,IAAA,CAAA,CAAE,OAAO/C,KAAAA,EAAY;AACjB/B,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,CAAC,+DAA+D,EAAED,KAAAA,CAAMb,OAAO,CAAA,CAAE,CAAA;AACjG,IAAA;AACJ;AAEA;;AAEC,IACM,eAAe4jB,gBAAAA,CAClBP,gBAAwB,EACxBxI,OAAmC,EAAA;IAEnC,MAAMgJ,QAAAA,GAAW,MAAMJ,cAAAA,CAAeJ,gBAAAA,CAAAA;AAEtC,IAAA,IAAI,CAACQ,QAAAA,EAAU;AACX/kB,QAAAA,MAAAA,CAAOgC,IAAI,CAAC,4DAAA,CAAA;AACZ,QAAA;AACJ,IAAA;AAEA,IAAA,MAAMgjB,OAAAA,GAA6B;AAC/B,QAAA,GAAGD,QAAQ;AACX,QAAA,GAAGhJ,OAAO;QACVtL,SAAAA,EAAW,IAAIC,OAAOC,WAAW;AACrC,KAAA;AAEA,IAAA,MAAM6T,cAAAA,CAAeQ,OAAAA,CAAAA;AACzB;AAsBA;;IAGO,SAASC,uBAAAA,CAAwBR,UAA6B,EAAA;IACjE,MAAM7B,KAAAA,GAAQ6B,WAAW7B,KAAK;;;AAI9B,IAAA,IAAIA,KAAAA,KAAU,aAAA,IAAiBA,KAAAA,KAAU,WAAA,IAAeA,UAAU,YAAA,EAAc;QAC5E,OAAO;YACHsC,WAAAA,EAAa,IAAA;YACbhT,MAAAA,EAAQ,UAAA;YACRiT,WAAAA,EAAa,8CAAA;YACbC,KAAAA,EAAO;AACH,gBAAA,wCAAA;AACA,gBAAA,kCAAA;AACA,gBAAA;AACH,aAAA;YACDC,KAAAA,EAAO;AAAC,gBAAA;AAA6C;AACzD,SAAA;AACJ,IAAA;;;AAIA,IAAA,IAAIzC,KAAAA,KAAU,WAAA,IAAe,CAAC6B,UAAAA,CAAWa,YAAY,EAAE;QACnD,OAAO;YACHJ,WAAAA,EAAa,IAAA;YACbhT,MAAAA,EAAQ,UAAA;YACRiT,WAAAA,EAAa,2DAAA;YACbC,KAAAA,EAAO;AACH,gBAAA,wCAAA;AACA,gBAAA,uCAAA;AACA,gBAAA,qCAAA;AACA,gBAAA,oCAAA;AACA,gBAAA;AACH,aAAA;YACDC,KAAAA,EAAO;AACH,gBAAA,gDAAA;AACA,gBAAA,qDAAA;AACA,gBAAA;AACH;AACL,SAAA;AACJ,IAAA;;;IAIA,IAAKzC,CAAAA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,gBAAe,KAAM,CAAC6B,UAAAA,CAAWa,YAAY,EAAE;QAChF,OAAO;YACHJ,WAAAA,EAAa,IAAA;YACbhT,MAAAA,EAAQ,UAAA;YACRiT,WAAAA,EAAa,wDAAA;YACbC,KAAAA,EAAO;AACH,gBAAA,iBAAA;AACA,gBAAA,kCAAA;AACA,gBAAA,sBAAA;AACA,gBAAA,mBAAA;AACA,gBAAA;AACH,aAAA;YACDC,KAAAA,EAAO;AACH,gBAAA,oCAAA;AACA,gBAAA;AACH;AACL,SAAA;AACJ,IAAA;;;AAIA,IAAA,IAAIZ,WAAWa,YAAY,IAAI1C,KAAAA,KAAU,eAAA,IAAmBA,UAAU,WAAA,EAAa;QAC/E,OAAO;YACHsC,WAAAA,EAAa,KAAA;YACbhT,MAAAA,EAAQ,aAAA;YACRiT,WAAAA,EAAa,qDAAA;YACbC,KAAAA,EAAO;AACH,gBAAA,2CAAA;AACA,gBAAA,8CAAA;AACA,gBAAA,8CAAA;AACA,gBAAA;AACH,aAAA;YACDC,KAAAA,EAAO;AACH,gBAAA,yBAAA;AACA,gBAAA;AACH;AACL,SAAA;AACJ,IAAA;;AAGA,IAAA,IAAIzC,UAAU,QAAA,EAAU;;QAEpB,IAAI6B,UAAAA,CAAWa,YAAY,EAAE;AACzB,YAAA,OAAOL,uBAAAA,CAAwB;AAAE,gBAAA,GAAGR,UAAU;gBAAE7B,KAAAA,EAAO;AAAgB,aAAA,CAAA;QAC3E,CAAA,MAAO,IAAI6B,UAAAA,CAAWc,QAAQ,EAAE;AAC5B,YAAA,OAAON,uBAAAA,CAAwB;AAAE,gBAAA,GAAGR,UAAU;gBAAE7B,KAAAA,EAAO;AAAY,aAAA,CAAA;QACvE,CAAA,MAAO;AACH,YAAA,OAAOqC,uBAAAA,CAAwB;AAAE,gBAAA,GAAGR,UAAU;gBAAE7B,KAAAA,EAAO;AAAc,aAAA,CAAA;AACzE,QAAA;AACJ,IAAA;;IAGA,OAAO;QACHsC,WAAAA,EAAa,KAAA;QACbhT,MAAAA,EAAQ,MAAA;QACRiT,WAAAA,EAAa,uDAAA;QACbC,KAAAA,EAAO;AACH,YAAA,uCAAA;AACA,YAAA,gDAAA;AACA,YAAA,8BAAA;AACA,YAAA;AACH,SAAA;QACDC,KAAAA,EAAO;AAAC,YAAA;AAA+B;AAC3C,KAAA;AACJ;AAEA;;IAGO,SAASG,oBAAAA,CAAqBf,UAA6B,EAAA;AAC9D,IAAA,MAAMnX,QAAkB,EAAE;AAE1BA,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,GAAA,CAAI8K,MAAM,CAAC,EAAA,CAAA,CAAA;AACtBc,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,4BAAA,CAAA;AACX4L,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,GAAA,CAAI8K,MAAM,CAAC,EAAA,CAAA,CAAA;AACtBc,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,EAAA,CAAA;AACX4L,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,SAAS,EAAE+iB,UAAAA,CAAWJ,WAAW,CAAA,CAAE,CAAA;AAC/C/W,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,SAAS,EAAE+iB,UAAAA,CAAWjhB,OAAO,CAAA,CAAE,CAAA;AAC3C8J,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,OAAO,EAAE+iB,UAAAA,CAAW7B,KAAK,CAAA,CAAE,CAAA;AACvCtV,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,QAAQ,EAAE+iB,UAAAA,CAAWjc,MAAM,CAAA,CAAE,CAAA;AACzC8E,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,WAAW,EAAE+iB,UAAAA,CAAWhU,SAAS,CAAA,CAAE,CAAA;AAC/CnD,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,EAAA,CAAA;IAEX,IAAI+iB,UAAAA,CAAWc,QAAQ,EAAE;AACrBjY,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,eAAe,EAAE+iB,UAAAA,CAAWc,QAAQ,CAAA,CAAE,CAAA;QAClD,IAAId,UAAAA,CAAWgB,KAAK,EAAE;AAClBnY,YAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,QAAQ,EAAE+iB,UAAAA,CAAWgB,KAAK,CAAA,CAAE,CAAA;AAC5C,QAAA;AACJ,IAAA;AAEA,IAAA,IAAIhB,UAAAA,CAAWlB,IAAI,CAAC3iB,MAAM,GAAG,CAAA,EAAG;QAC5B0M,KAAAA,CAAM5L,IAAI,CAAC,CAAC,cAAc,EAAE+iB,WAAWlB,IAAI,CAACpiB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC5D,IAAA;IAEA,IAAIsjB,UAAAA,CAAWa,YAAY,EAAE;AACzBhY,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,sBAAA,CAAA;IACf,CAAA,MAAO;AACH4L,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,qBAAA,CAAA;AACf,IAAA;IAEA,IAAI+iB,UAAAA,CAAWiB,cAAc,EAAE;AAC3BpY,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,UAAU,EAAE+iB,UAAAA,CAAWiB,cAAc,CAAA,CAAE,CAAA;AACvD,IAAA;IAEA,IAAIjB,UAAAA,CAAW1iB,KAAK,EAAE;AAClBuL,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,EAAA,CAAA;AACX4L,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,QAAA,CAAA;AACX4L,QAAAA,KAAAA,CAAM5L,IAAI,CAAC,CAAC,EAAE,EAAE+iB,UAAAA,CAAW1iB,KAAK,CAAA,CAAE,CAAA;AACtC,IAAA;AAEAuL,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,EAAA,CAAA;AACX4L,IAAAA,KAAAA,CAAM5L,IAAI,CAAC,GAAA,CAAI8K,MAAM,CAAC,EAAA,CAAA,CAAA;IAEtB,OAAOc,KAAAA,CAAMnM,IAAI,CAAC,IAAA,CAAA;AACtB;AAEA;;IAGO,SAASwkB,eAAAA,CAAgBlB,UAA6B,EAAA;IACzD,OAAOA,UAAAA,CAAW7B,KAAK,KAAK,QAAA,IACpB6B,UAAAA,CAAW7B,KAAK,KAAK,WAAA,IAAe,CAAC6B,UAAAA,CAAWa,YAAY,IAC5Db,UAAAA,CAAW7B,KAAK,KAAK,QAAA,IAAY,CAAC6B,UAAAA,CAAWa,YAAY,IACzDb,UAAAA,CAAW7B,KAAK,KAAK,gBAAA,IAAoB,CAAC6B,UAAAA,CAAWa,YAAY;AAC7E;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/commands/development.ts","../src/commands/check-development.ts","../src/commands/release.ts","../src/commands/publish.ts","../src/commands/validation.ts","../src/commands/dryRunReporter.ts","../src/utils/checkpoints.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Development command - Manages transition to working branch for active development\n *\n * This command handles the workflow of moving to the working branch from any other branch:\n *\n * New behavior:\n * 1. Fetch latest remote information\n * 2. Switch to the \"working\" branch (create if needed) and sync with remote\n * 3. Merge latest changes from \"development\" branch if it exists\n * 4. Run npm install and commit any changes (e.g., package-lock.json)\n * 5. Run `npm version pre<incrementLevel> --preid=<tag>` to bump version\n *\n * This is designed for reverse flow - taking you back to working for active development.\n */\n\nimport { getDryRunLogger, Config, findDevelopmentBranch, KODRDRIV_DEFAULTS, incrementPatchVersion, incrementMinorVersion, incrementMajorVersion } from '@grunnverk/core';\nimport { run, localBranchExists, getCurrentBranch, safeJsonParse, validatePackageJson } from '@grunnverk/git-tools';\nimport { createStorage } from '@grunnverk/shared';\n\n/**\n * Create retroactive working branch tags for past releases\n * Scans git history for X.X.X-dev.0 commits and tags them\n */\nasync function createRetroactiveTags(\n workingBranch: string,\n isDryRun: boolean,\n logger: any,\n tagPrefix: string = 'working/'\n): Promise<void> {\n logger.info('');\n logger.info('DEV_TAG_SCAN_STARTING: Scanning git history for past release points | Purpose: Create retroactive tags | Pattern: X.X.X-dev.0 version bumps');\n logger.info('DEV_TAG_SCAN_PATTERN: Looking for development version bump commits | Version Format: X.X.X-dev.0 | Purpose: Identify release points');\n logger.info('');\n\n try {\n // Get all commits on working branch with oneline format\n const { stdout } = await run(`git log ${workingBranch} --oneline --all`);\n const commits = stdout.trim().split('\\n');\n\n // Find commits that are version bumps to -dev.0 (these mark release points)\n const devCommits = commits.filter(line => {\n // Match patterns like: \"4.4.52-dev.0\" or \"chore: bump version to 4.4.52-dev.0\"\n return /\\b\\d+\\.\\d+\\.\\d+-dev\\.0\\b/.test(line);\n });\n\n logger.info(`DEV_TAG_COMMITS_FOUND: Found potential development version commits | Count: ${devCommits.length} | Status: Analyzing for tag creation`);\n\n const tagsCreated: string[] = [];\n const tagsSkipped: string[] = [];\n\n for (const commitLine of devCommits) {\n const [sha, ...messageParts] = commitLine.split(' ');\n const message = messageParts.join(' ');\n\n // Extract version from message (e.g., \"4.4.52-dev.0\" → \"4.4.52\")\n const versionMatch = message.match(/(\\d+\\.\\d+\\.\\d+)-dev\\.0/);\n if (!versionMatch) continue;\n\n const releaseVersion = versionMatch[1]; // e.g., \"4.4.52\"\n const workingTagName = `${tagPrefix}v${releaseVersion}`;\n\n // Check if tag already exists\n const tagExistsResult = await run(`git tag -l \"${workingTagName}\"`);\n const tagExists = tagExistsResult.stdout.trim() !== '';\n\n if (tagExists) {\n tagsSkipped.push(workingTagName);\n logger.verbose(` Skip: ${workingTagName} (already exists)`);\n continue;\n }\n\n if (!isDryRun) {\n // Tag the commit that represents the dev version bump\n // This is the commit AFTER the release, which marks the starting point\n logger.verbose(` Create: ${workingTagName} at ${sha.substring(0, 7)}`);\n await run(`git tag ${workingTagName} ${sha}`);\n tagsCreated.push(workingTagName);\n } else {\n logger.info(`DEV_TAG_DRY_RUN: Would create retroactive tag | Mode: dry-run | Tag: ${workingTagName} | Commit: ${sha.substring(0, 7)}`);\n tagsCreated.push(workingTagName);\n }\n }\n\n logger.info('');\n\n if (tagsCreated.length > 0 && !isDryRun) {\n logger.info(`DEV_TAG_PUSHING: Pushing retroactive tags to remote | Count: ${tagsCreated.length} | Remote: origin | Command: git push origin --tags`);\n await run('git push origin --tags');\n logger.info('');\n logger.info(`DEV_TAG_PUSH_SUCCESS: Successfully created and pushed retroactive tags | Count: ${tagsCreated.length} | Remote: origin | Status: completed`);\n tagsCreated.forEach(tag => logger.info(`DEV_TAG_CREATED: Retroactive tag created | Tag: ${tag} | Status: pushed`));\n } else if (tagsCreated.length > 0 && isDryRun) {\n logger.info(`DEV_TAG_DRY_RUN_SUMMARY: Would create and push retroactive tags | Mode: dry-run | Count: ${tagsCreated.length}`);\n tagsCreated.forEach(tag => logger.info(`DEV_TAG_DRY_RUN_TAG: Would create tag | Tag: ${tag} | Mode: dry-run`));\n }\n\n if (tagsSkipped.length > 0) {\n logger.verbose('');\n logger.verbose(`Skipped ${tagsSkipped.length} existing tags:`);\n tagsSkipped.forEach(tag => logger.verbose(` - ${tag}`));\n }\n\n if (tagsCreated.length === 0 && tagsSkipped.length === 0) {\n logger.info('DEV_TAG_NO_COMMITS: No development version commits found in history | Pattern: X.X.X-dev.0 | Status: Nothing to tag | Action: No retroactive tags created');\n }\n\n logger.info('');\n\n } catch (error: any) {\n logger.warn(`DEV_TAG_CREATION_FAILED: Unable to create retroactive tags | Error: ${error.message} | Impact: Past releases not tagged | Alternative: Manual tagging available`);\n logger.warn('DEV_TAG_MANUAL_OPTION: Manual tagging option available | Action: Use git tag manually for past releases | Purpose: Tag historical releases');\n // Don't throw - retroactive tagging is optional\n }\n}\n\n/**\n * Execute the development command\n */\nexport const execute = async (runConfig: Config): Promise<string> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info('DEV_BRANCH_NAVIGATION: Navigating to working branch for development | Purpose: Start development cycle | Next: Version bump and sync');\n\n try {\n // Get current branch\n const currentBranch = isDryRun ? 'mock-branch' : await getCurrentBranch();\n logger.info(`DEV_CURRENT_BRANCH: Current branch identified | Branch: ${currentBranch} | Action: Determine working branch`);\n\n // Find the working/development branch from configuration\n let workingBranch = 'working'; // Default fallback\n\n if (runConfig.branches) {\n const configuredDevBranch = findDevelopmentBranch(runConfig.branches);\n if (configuredDevBranch) {\n workingBranch = configuredDevBranch;\n logger.info(`DEV_WORKING_BRANCH_CONFIGURED: Using configured working branch | Branch: ${workingBranch} | Source: config | Current: ${currentBranch}`);\n } else {\n logger.info(`DEV_WORKING_BRANCH_DEFAULT: No working branch configured | Branch: ${workingBranch} | Source: default | Current: ${currentBranch}`);\n }\n } else {\n logger.info(`DEV_WORKING_BRANCH_NO_CONFIG: No branch configuration found | Branch: ${workingBranch} | Source: default | Current: ${currentBranch}`);\n }\n\n // Track what actions are taken to determine the appropriate return message\n let branchCreated = false;\n let branchUpdated = false;\n let alreadyOnBranch = false;\n let mergedDevelopmentIntoWorking = false;\n\n // Determine prerelease tag and increment level from configuration\n const allBranchConfig = runConfig.branches || KODRDRIV_DEFAULTS.branches;\n let prereleaseTag = 'dev'; // Default\n let incrementLevel = 'patch'; // Default\n\n // Check for development command specific targetVersion override\n if (runConfig.development?.targetVersion) {\n const targetVersion = runConfig.development.targetVersion;\n\n // Validate targetVersion\n if (!['patch', 'minor', 'major'].includes(targetVersion) && !/^\\d+\\.\\d+\\.\\d+$/.test(targetVersion.replace(/^v/, ''))) {\n throw new Error(`Invalid target version: ${targetVersion}. Expected \"patch\", \"minor\", \"major\", or a valid version string like \"2.1.0\"`);\n }\n\n incrementLevel = targetVersion;\n } else if (allBranchConfig && (allBranchConfig as any)[workingBranch]) {\n const workingBranchConfig = (allBranchConfig as any)[workingBranch];\n if (workingBranchConfig.version) {\n if (workingBranchConfig.version.tag) {\n prereleaseTag = workingBranchConfig.version.tag;\n }\n if (workingBranchConfig.version.incrementLevel) {\n incrementLevel = workingBranchConfig.version.incrementLevel;\n }\n }\n }\n\n logger.info(`DEV_VERSION_CONFIG: Development version configuration | Prerelease Tag: ${prereleaseTag} | Increment Level: ${incrementLevel}`);\n logger.info(`DEV_VERSION_STRATEGY: Version increment strategy | Level: ${incrementLevel} | Tag: ${prereleaseTag} | Purpose: Development version management`);\n\n // Step 1: Fetch latest remote information\n if (!isDryRun) {\n logger.info('DEV_GIT_FETCH: Fetching latest remote information | Remote: origin | Purpose: Ensure sync before branch operations');\n try {\n await run('git fetch origin');\n logger.info('DEV_GIT_FETCH_SUCCESS: Successfully fetched remote information | Remote: origin | Status: up-to-date');\n } catch (error: any) {\n logger.warn(`DEV_GIT_FETCH_FAILED: Unable to fetch remote | Remote: origin | Error: ${error.message} | Impact: May have stale branch info`);\n }\n } else {\n logger.info('DEV_GIT_FETCH_DRY_RUN: Would fetch latest remote information | Mode: dry-run | Remote: origin');\n }\n\n // Special case: If currently on development branch, merge development into working\n if (currentBranch === 'development') {\n if (!isDryRun) {\n logger.info('DEV_MERGE_STARTING: Currently on development branch, merging into working | Source: development | Target: working | Purpose: Sync branches before development');\n await run(`git checkout ${workingBranch}`);\n await run(`git merge development --no-ff -m \"Merge development into working for continued development\"`);\n await run('npm install');\n\n // Check if npm install created any changes and commit them\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n await run('git add -A');\n await run('git commit -m \"chore: update dependencies after merge\"');\n }\n\n // Stay on working branch for development (removed checkout development)\n mergedDevelopmentIntoWorking = true;\n } else {\n logger.info('DEV_MERGE_DRY_RUN: Would merge development into working | Mode: dry-run | Source: development | Target: working');\n mergedDevelopmentIntoWorking = true;\n }\n }\n\n // Step 2: Switch to working branch (create if needed) - skip if we handled development branch case\n if (!isDryRun && !mergedDevelopmentIntoWorking) {\n const workingBranchExists = await localBranchExists(workingBranch);\n if (!workingBranchExists) {\n logger.info(`DEV_BRANCH_CREATING: Working branch does not exist, creating now | Branch: ${workingBranch} | Action: Create and checkout | Source: current HEAD`);\n await run(`git checkout -b ${workingBranch}`);\n logger.info(`DEV_BRANCH_CREATED: Successfully created and switched to branch | Branch: ${workingBranch} | Status: checked-out`);\n branchCreated = true;\n } else if (currentBranch !== workingBranch) {\n logger.info(`DEV_BRANCH_SWITCHING: Switching to working branch | Branch: ${workingBranch} | Action: checkout | Previous: ${currentBranch}`);\n await run(`git checkout ${workingBranch}`);\n logger.info(`DEV_BRANCH_SWITCHED: Successfully switched to branch | Branch: ${workingBranch} | Status: checked-out`);\n branchUpdated = true;\n } else {\n logger.info(`DEV_BRANCH_CURRENT: Already on working branch | Branch: ${workingBranch} | Status: no-switch-needed`);\n alreadyOnBranch = true;\n }\n } else if (!mergedDevelopmentIntoWorking) {\n // For dry run, we need to mock the logic\n const workingBranchExists = await localBranchExists(workingBranch);\n if (!workingBranchExists) {\n branchCreated = true;\n } else if (currentBranch !== workingBranch) {\n branchUpdated = true;\n } else {\n alreadyOnBranch = true;\n }\n logger.info(`DEV_BRANCH_DRY_RUN: Would switch to working branch | Mode: dry-run | Branch: ${workingBranch} | Action: Create if needed`);\n logger.info(`DEV_SYNC_DRY_RUN: Would sync branch with remote | Mode: dry-run | Branch: ${workingBranch} | Purpose: Avoid conflicts`);\n }\n\n // Step 2.1: Sync with remote working branch to avoid conflicts\n if (!isDryRun) {\n try {\n logger.info(`DEV_BRANCH_SYNCING: Synchronizing working branch with remote | Branch: ${workingBranch} | Remote: origin/${workingBranch} | Purpose: Avoid conflicts`);\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${workingBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n // Use explicit fetch+merge instead of pull to avoid git config conflicts\n await run(`git fetch origin ${workingBranch}`);\n await run(`git merge origin/${workingBranch} --no-edit`);\n logger.info(`DEV_BRANCH_SYNCED: Successfully synchronized with remote | Branch: ${workingBranch} | Remote: origin/${workingBranch} | Status: in-sync`);\n } else {\n logger.info(`DEV_REMOTE_BRANCH_NOT_FOUND: No remote branch exists | Branch: ${workingBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`DEV_MERGE_CONFLICTS: Merge conflicts detected when syncing with remote | Branch: ${workingBranch} | Remote: origin | Status: conflicts-detected`);\n logger.error(`DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Resume development | Command: kodrdriv development`);\n throw new Error(`Merge conflicts detected when syncing ${workingBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`DEV_SYNC_FAILED: Could not sync with remote | Branch: ${workingBranch} | Remote: origin | Error: ${error.message}`);\n }\n }\n }\n\n // Step 2.5: Sync with target branch (main) if it exists\n // This is a safety net for when publish fails or user ends up on target branch\n if (!isDryRun) {\n // Determine target branch from config\n const targetBranch = allBranchConfig && (allBranchConfig as any)[workingBranch]?.targetBranch || 'main';\n const targetBranchExists = await localBranchExists(targetBranch);\n\n if (targetBranchExists) {\n logger.info(`DEV_TARGET_SYNC: Syncing working branch with target branch | Working: ${workingBranch} | Target: ${targetBranch} | Strategy: fast-forward`);\n try {\n await run(`git merge ${targetBranch} --ff-only`);\n logger.info(`DEV_TARGET_MERGED_FF: Fast-forward merged target into working | Target: ${targetBranch} | Working: ${workingBranch} | Status: merged`);\n } catch (error: any) {\n // Fast-forward failed, might need regular merge\n if (error.message && error.message.includes('Not possible to fast-forward')) {\n logger.warn(`DEV_NO_FAST_FORWARD: Cannot fast-forward merge | Target: ${targetBranch} | Working: ${workingBranch} | Reason: Divergent history`);\n logger.info(`DEV_REGULAR_MERGE_ATTEMPTING: Attempting regular merge | Strategy: fast-forward preferred | Purpose: Sync branches`);\n try {\n await run(`git merge ${targetBranch} -m \"Merge ${targetBranch} into ${workingBranch} for sync\"`);\n logger.info(`DEV_TARGET_MERGED: Merged target into working | Target: ${targetBranch} | Working: ${workingBranch} | Status: merged`);\n\n // Run npm install after merge\n logger.info('DEV_POST_MERGE_INSTALL: Running npm install after merge | Command: npm install | Purpose: Update dependencies');\n await run('npm install');\n\n // Check if npm install created changes\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n logger.info('DEV_POST_MERGE_COMMIT: Committing changes from npm install | Purpose: Finalize merge');\n await run('git add -A');\n await run('git commit -m \"chore: update dependencies after merge\"');\n }\n } catch (mergeError: any) {\n if (mergeError.message && mergeError.message.includes('CONFLICT')) {\n logger.error(`DEV_MERGE_CONFLICTS: Merge conflicts detected | Target: ${targetBranch} | Working: ${workingBranch} | Status: conflicts-detected`);\n logger.error(`DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Update dependencies | Command: npm install`);\n logger.error(` Step 5: Resume development | Command: kodrdriv development`);\n throw new Error(`Merge conflicts detected when merging ${targetBranch} into ${workingBranch}. Please resolve conflicts manually.`);\n } else {\n throw mergeError;\n }\n }\n } else {\n logger.warn(`DEV_TARGET_MERGE_FAILED: Could not merge target into working | Target: ${targetBranch} | Working: ${workingBranch} | Error: ${error.message}`);\n }\n }\n } else {\n logger.info(`DEV_TARGET_NOT_EXISTS: Target branch does not exist | Branch: ${targetBranch} | Action: Skipping target sync | Status: no-target-branch`);\n }\n } else {\n logger.info('Would sync working branch with target branch (main) if it exists');\n }\n\n // Step 3: Merge latest changes from development branch if it exists\n if (!isDryRun) {\n const developmentBranchExists = await localBranchExists('development');\n if (mergedDevelopmentIntoWorking) {\n logger.info('DEV_ALREADY_MERGED: Already merged from development | Reason: Was on development branch | Action: Skipping');\n } else if (developmentBranchExists) {\n logger.info('DEV_DEVELOPMENT_MERGE: Merging latest changes from development branch | Source: development | Target: ' + workingBranch + ' | Purpose: Sync development changes');\n\n try {\n await run(`git merge development --no-ff -m \"Merge latest development changes into ${workingBranch}\"`);\n logger.info('DEV_DEVELOPMENT_MERGED: Successfully merged development changes | Source: development | Target: ' + workingBranch + ' | Status: merged');\n\n // Run npm install after merge to update dependencies\n logger.info('DEV_DEVELOPMENT_INSTALL: Running npm install after merge | Command: npm install | Purpose: Update dependencies');\n await run('npm install');\n\n // Check if npm install created any changes (e.g., package-lock.json)\n const gitStatus = await run('git status --porcelain');\n if (gitStatus.stdout.trim()) {\n logger.info('DEV_POST_MERGE_COMMIT: Committing changes from npm install | Purpose: Finalize merge');\n await run('git add -A');\n await run(`git commit -m \"chore: update package-lock.json after merge\"`);\n logger.info('DEV_CHANGES_COMMITTED: Changes committed successfully | Status: committed');\n }\n\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`DEV_DEV_MERGE_CONFLICTS: Merge conflicts detected | Source: development | Target: ${workingBranch} | Status: conflicts-detected`);\n logger.error(`DEV_DEV_CONFLICT_RESOLUTION: Manual conflict resolution required:`);\n logger.error(` Step 1: Resolve conflicts in the files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Complete merge | Command: git commit`);\n logger.error(` Step 4: Update dependencies | Command: npm install`);\n logger.error(` Step 5: Bump version | Command: npm version pre${incrementLevel} --preid=${prereleaseTag}`);\n throw new Error(`Merge conflicts detected when merging development into ${workingBranch}. Please resolve conflicts manually.`);\n } else {\n logger.error(`DEV_DEV_MERGE_FAILED: Failed to merge development branch | Source: development | Target: ${workingBranch} | Error: ${error.message}`);\n throw error;\n }\n }\n } else {\n logger.info('DEV_NO_DEV_BRANCH: Development branch does not exist | Branch: development | Action: Skipping merge step | Status: not-found');\n }\n } else {\n logger.info('DEV_DEV_MERGE_DRY_RUN: Would merge development if exists | Mode: dry-run | Source: development | Target: working');\n logger.info('DEV_INSTALL_DRY_RUN: Would run npm install after merge | Mode: dry-run | Command: npm install');\n logger.info('DEV_COMMIT_DRY_RUN: Would commit npm install changes | Mode: dry-run');\n }\n\n // Step 4.5: Create retroactive tags if requested (one-time operation)\n if (runConfig.development?.createRetroactiveTags) {\n const tagPrefix = runConfig.development?.workingTagPrefix || 'working/';\n await createRetroactiveTags(workingBranch, isDryRun, logger, tagPrefix);\n }\n\n // Step 5: Check if we already have a proper development version\n if (alreadyOnBranch && !mergedDevelopmentIntoWorking) {\n // Check if current version is already a development version with the right tag\n const fs = await import('fs/promises');\n try {\n const packageJson = JSON.parse(await fs.readFile('package.json', 'utf-8'));\n const currentVersion = packageJson.version;\n\n // If current version already has the dev tag, check if base version is published\n if (currentVersion.includes(`-${prereleaseTag}.`)) {\n // Check if base version is already published on npm\n const baseVersion = currentVersion.split('-')[0];\n const { getNpmPublishedVersion } = await import('@grunnverk/core');\n const publishedVersion = await getNpmPublishedVersion(packageJson.name);\n\n if (publishedVersion !== baseVersion) {\n logger.info(`DEV_ALREADY_DEV_VERSION: Already on working branch with development version | Branch: ${workingBranch} | Version: ${currentVersion} | Status: no-bump-needed`);\n return 'Already on working branch with development version';\n }\n\n logger.warn(`DEV_VERSION_CONFLICT: Base version already published | Current: ${currentVersion} | Published: ${publishedVersion} | Action: Will bump to next dev version`);\n // Continue with version bump logic\n }\n } catch {\n logger.debug('Could not check current version, proceeding with version bump');\n }\n }\n\n // Step 5.5: Tag working branch with current release version BEFORE bumping\n if (runConfig.development?.tagWorkingBranch !== false) {\n try {\n const fs = await import('fs/promises');\n const packageJson = JSON.parse(await fs.readFile('package.json', 'utf-8'));\n const currentVersion = packageJson.version;\n\n // Only tag if current version is a release version (not already a dev version)\n const isReleaseVersion = currentVersion &&\n !currentVersion.includes('-dev.') &&\n !currentVersion.includes('-alpha.') &&\n !currentVersion.includes('-beta.') &&\n !currentVersion.includes('-rc.');\n\n if (isReleaseVersion) {\n const tagPrefix = runConfig.development?.workingTagPrefix || 'working/';\n const workingTagName = `${tagPrefix}v${currentVersion}`;\n\n if (!isDryRun) {\n logger.info(`DEV_TAG_RELEASE_VERSION: Current version is release version | Version: ${currentVersion} | Type: release | Action: Will tag before bump`);\n logger.verbose(`Checking if tag ${workingTagName} exists...`);\n\n // Check if tag already exists\n const tagExistsResult = await run(`git tag -l \"${workingTagName}\"`);\n const tagExists = tagExistsResult.stdout.trim() !== '';\n\n if (tagExists) {\n logger.info(`DEV_TAG_EXISTS: Tag already exists | Tag: ${workingTagName} | Action: Skipping tag creation | Status: already-tagged`);\n } else {\n // Create tag on current commit (working branch at release version)\n logger.verbose(`Creating tag ${workingTagName} at current HEAD...`);\n await run(`git tag ${workingTagName}`);\n\n // Push tag to remote\n logger.verbose(`Pushing tag ${workingTagName} to origin...`);\n await run(`git push origin ${workingTagName}`);\n\n logger.info(`DEV_TAG_CREATED: Tagged working branch | Tag: ${workingTagName} | Version: ${currentVersion} | Status: tagged-and-pushed`);\n logger.info(`DEV_TAG_RELEASE_NOTES_HINT: Release notes can be generated | Version: v${currentVersion} | Command: kodrdriv release --from {previous-tag} --to ${workingTagName}`);\n }\n } else {\n logger.info(`DEV_TAG_DRY_RUN: Would tag working branch | Mode: dry-run | Tag: ${workingTagName} | Version: ${currentVersion}`);\n }\n } else if (currentVersion) {\n logger.verbose(`Current version is ${currentVersion} (prerelease), skipping tag creation`);\n } else {\n logger.debug('Could not determine current version, skipping tag creation');\n }\n } catch (error: any) {\n if (!isDryRun) {\n logger.warn(`DEV_TAG_FAILED: Could not tag working branch | Error: ${error.message} | Impact: Not critical | Alternative: Manual tagging`);\n logger.warn('DEV_TAG_MANUAL: Manual tagging option available | Action: Tag manually later | Purpose: Mark release point');\n } else {\n logger.info('Would tag working branch with current release version if applicable');\n }\n // Don't throw - tagging is optional, continue with version bump\n }\n } else if (isDryRun) {\n logger.info('Tagging disabled (--no-tag-working-branch)');\n }\n\n // Step 6: Bump version manually to avoid npm version's automatic git add\n // Note: npm version --no-git-tag-version still runs \"git add package.json package-lock.json\"\n // which fails when package-lock.json is gitignored\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n logger.info(`DEV_VERSION_BUMPING: Bumping version with prerelease tag | Level: ${incrementLevel} | Tag: ${prereleaseTag}`);\n } else {\n logger.info(`DEV_VERSION_EXPLICIT: Setting explicit version | Version: ${incrementLevel}-${prereleaseTag}.0 | Type: explicit`);\n }\n\n if (!isDryRun) {\n try {\n const storage = createStorage();\n\n // CRITICAL FIX: After publish, we need to use the target branch's version as the base\n // for incrementing, not the working branch's version (which might be an old dev version).\n // This ensures that after publishing v0.0.15, we bump to 0.0.16-dev.0, not 0.0.15-dev.0.\n const targetBranch = allBranchConfig && (allBranchConfig as any)[workingBranch]?.targetBranch || 'main';\n let currentVersion: string;\n\n try {\n // Try to read version from target branch (main) to get the released version\n const targetPackageResult = await run(`git show ${targetBranch}:package.json`);\n const targetPackageJson = safeJsonParse(targetPackageResult.stdout, 'package.json from target branch');\n const validatedTargetPkg = validatePackageJson(targetPackageJson, 'package.json from target branch');\n currentVersion = validatedTargetPkg.version;\n logger.info(`DEV_VERSION_SOURCE: Using version from target branch | Branch: ${targetBranch} | Version: ${currentVersion} | Purpose: Ensure proper increment after release`);\n } catch (error: any) {\n // Fallback: If target branch doesn't exist or can't be read, use current working branch version\n logger.warn(`DEV_VERSION_FALLBACK: Could not read version from target branch ${targetBranch} | Error: ${error.message} | Fallback: Using current branch version`);\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n currentVersion = validatedPkgJson.version;\n }\n\n let newVersion: string;\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n // First increment the base version, then add prerelease tag\n let baseVersion: string;\n switch (incrementLevel) {\n case 'patch':\n baseVersion = incrementPatchVersion(currentVersion);\n break;\n case 'minor':\n baseVersion = incrementMinorVersion(currentVersion);\n break;\n case 'major':\n baseVersion = incrementMajorVersion(currentVersion);\n break;\n default:\n baseVersion = incrementPatchVersion(currentVersion);\n }\n newVersion = `${baseVersion}-${prereleaseTag}.0`;\n } else {\n // Explicit version like \"3.5.0\"\n const cleanVersion = incrementLevel.replace(/^v/, '');\n newVersion = `${cleanVersion}-${prereleaseTag}.0`;\n }\n\n // Read current package.json from working branch to update\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n\n // Update package.json with new version\n validatedPkgJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(validatedPkgJson, null, 2) + '\\n', 'utf-8');\n\n logger.info(`DEV_VERSION_BUMPED: Version bumped successfully | New Version: ${newVersion} | Status: completed`);\n\n // Manually commit the version bump (package-lock.json is ignored)\n await run('git add package.json');\n await run(`git commit -m \"chore: bump to ${newVersion}\"`);\n\n // Return appropriate message based on what actions were taken\n if (mergedDevelopmentIntoWorking) {\n return 'Merged development into working and ready for development';\n } else if (branchCreated) {\n return 'Created working branch with development version';\n } else if (branchUpdated) {\n return 'Updated working branch with development version';\n } else if (alreadyOnBranch) {\n return 'Already on working branch with development version';\n } else {\n return `Ready for development on ${workingBranch} with version ${newVersion}`;\n }\n } catch (error: any) {\n logger.error(`DEV_VERSION_BUMP_FAILED: Failed to bump version | Error: ${error.message} | Impact: Version not updated`);\n throw new Error(`Failed to bump ${incrementLevel} version: ${error.message}`);\n }\n } else {\n if (['patch', 'minor', 'major'].includes(incrementLevel)) {\n logger.info(`Would bump version with prerelease tag: ${incrementLevel} --preid=${prereleaseTag}`);\n } else {\n logger.info(`Would set explicit version: ${incrementLevel}-${prereleaseTag}.0`);\n }\n\n // Return appropriate message based on what actions were taken\n if (mergedDevelopmentIntoWorking) {\n return 'Merged development into working and ready for development';\n } else if (branchCreated) {\n return 'Created working branch with development version';\n } else if (branchUpdated) {\n return 'Updated working branch with development version';\n } else if (alreadyOnBranch) {\n return 'Already on working branch with development version';\n } else {\n return `Ready for development on ${workingBranch} (dry run)`;\n }\n }\n\n } catch (error: any) {\n logger.error('Failed to prepare working branch for development:', error.message);\n throw error;\n }\n};\n","#!/usr/bin/env node\n/**\n * Check Development Command - Verifies development readiness\n *\n * This command checks:\n * 1. Branch status (not on main/master)\n * 2. Remote sync status\n * 3. Dev version status\n * 4. Link status for local dependencies\n * 5. Open PRs from working branch\n */\n\nimport { Config, getLogger } from '@grunnverk/core';\nimport { scanForPackageJsonFiles } from '@grunnverk/tree-core';\nimport { getGitStatusSummary, getLinkedDependencies, run } from '@grunnverk/git-tools';\nimport { getOctokit } from '@grunnverk/github-tools';\nimport { isDevelopmentVersion } from '@grunnverk/core';\nimport { readFile, access } from 'fs/promises';\nimport * as path from 'path';\n\n/**\n * Default patterns for subprojects to exclude from scanning\n */\nconst DEFAULT_EXCLUDE_SUBPROJECTS = [\n 'doc/',\n 'docs/',\n 'examples/',\n 'test-*/',\n];\n\n/**\n * Checks if .gitignore contains required patterns to prevent publishing\n * development artifacts and sensitive files.\n */\nasync function checkGitignorePatterns(directory: string, checks: any): Promise<void> {\n const logger = getLogger();\n const gitignorePath = path.join(directory, '.gitignore');\n\n // Required patterns that must be present in .gitignore\n const requiredPatterns = [\n 'node_modules',\n 'dist',\n 'package-lock.json',\n '.env',\n 'output/',\n 'coverage',\n '.kodrdriv*'\n ];\n\n // Check if .gitignore exists\n try {\n await access(gitignorePath);\n } catch {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push('.gitignore file not found');\n checks.gitignore.issues.push(`Create .gitignore with patterns: ${requiredPatterns.join(', ')}`);\n return;\n }\n\n // Read .gitignore content\n let gitignoreContent: string;\n try {\n gitignoreContent = await readFile(gitignorePath, 'utf-8');\n } catch (error: any) {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push(`Failed to read .gitignore: ${error.message}`);\n return;\n }\n\n // Parse .gitignore into lines, ignoring comments and empty lines\n const gitignoreLines = gitignoreContent\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('#'));\n\n // Check for missing patterns\n const missingPatterns: string[] = [];\n for (const pattern of requiredPatterns) {\n // Check if the pattern exists in any of the gitignore lines\n const found = gitignoreLines.some(line => {\n // Exact match\n if (line === pattern) return true;\n\n // Pattern with wildcard - check if the pattern or any matching line exists\n if (pattern.includes('*')) {\n const basePattern = pattern.replace('*', '');\n // Accept exact wildcard pattern, base pattern, or any line starting with base\n return line === pattern || line === basePattern || line.startsWith(basePattern);\n }\n\n // Pattern with trailing slash - check both with and without slash\n if (pattern.endsWith('/')) {\n const basePattern = pattern.slice(0, -1);\n return line === basePattern || line === pattern || line.startsWith(pattern);\n }\n\n // Line with trailing slash - check if it matches the pattern (e.g., \"node_modules/\" matches \"node_modules\")\n if (line.endsWith('/')) {\n const lineBase = line.slice(0, -1);\n return lineBase === pattern || line.startsWith(pattern + '/');\n }\n\n return false;\n });\n\n if (!found) {\n missingPatterns.push(pattern);\n }\n }\n\n // Report missing patterns (relaxed check - allow variations)\n const criticalMissing = missingPatterns.filter(p => !p.includes('coverage') && p !== 'package-lock.json');\n if (criticalMissing.length > 0) {\n checks.gitignore.passed = false;\n checks.gitignore.issues.push(`Missing required patterns: ${criticalMissing.join(', ')}`);\n checks.gitignore.issues.push('These patterns prevent committing build artifacts and sensitive files');\n }\n\n logger.debug(`Gitignore check: ${checks.gitignore.passed ? 'passed' : 'failed'}`);\n}\n\n/**\n * Execute check-development command\n */\nexport async function execute(config: Config): Promise<string> {\n const logger = getLogger();\n // Get directory from config - check multiple possible locations\n const directory = (config as any).directory ||\n config.tree?.directories?.[0] ||\n process.cwd();\n\n // Get validateRelease flag - controls merge conflicts and open PRs checks\n const validateRelease = (config as any).validateReleaseWorkflow ?? false;\n\n logger.info(`Checking development readiness in ${directory}${validateRelease ? ' (full release validation)' : ' (quick check)'}`);\n\n // Build exclusion patterns\n const excludedPatterns = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.git/**',\n ...DEFAULT_EXCLUDE_SUBPROJECTS.map((pattern: string) => {\n const normalized = pattern.endsWith('/') ? pattern.slice(0, -1) : pattern;\n return `**/${normalized}/**`;\n }),\n ];\n\n // Determine if this is a tree or single package\n const packageJsonFiles = await scanForPackageJsonFiles(directory, excludedPatterns);\n const isTree = packageJsonFiles.length > 1;\n\n logger.info(`Detected ${isTree ? 'tree' : 'single package'} with ${packageJsonFiles.length} package(s)`);\n\n const checks = {\n gitignore: { passed: true, issues: [] as string[] },\n branch: { passed: true, issues: [] as string[] },\n remoteSync: { passed: true, issues: [] as string[] },\n mergeConflicts: { passed: true, issues: [] as string[], warnings: [] as string[] },\n devVersion: { passed: true, issues: [] as string[] },\n linkStatus: { passed: true, issues: [] as string[], warnings: [] as string[] },\n openPRs: { passed: true, issues: [] as string[], warnings: [] as string[] },\n releaseWorkflow: { passed: true, issues: [] as string[], warnings: [] as string[] },\n };\n\n const packagesToCheck = isTree ? packageJsonFiles : [path.join(directory, 'package.json')];\n\n // Check .gitignore patterns (required for publish to succeed)\n await checkGitignorePatterns(directory, checks);\n\n // Build a set of all local package names for link status checking\n const localPackageNames = new Set<string>();\n for (const pkgJsonPath of packagesToCheck) {\n try {\n const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(pkgJsonContent);\n if (pkgJson.name) {\n localPackageNames.add(pkgJson.name);\n }\n } catch {\n // Skip packages we can't read\n }\n }\n\n for (const pkgJsonPath of packagesToCheck) {\n const pkgDir = path.dirname(pkgJsonPath);\n const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(pkgJsonContent);\n const pkgName = pkgJson.name || path.basename(pkgDir);\n\n // 1. Check branch status\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n if (gitStatus.branch === 'main' || gitStatus.branch === 'master') {\n checks.branch.passed = false;\n checks.branch.issues.push(`${pkgName} is on ${gitStatus.branch} branch`);\n }\n } catch (error: any) {\n checks.branch.issues.push(`${pkgName}: Could not check branch - ${error.message || error}`);\n }\n\n // 2. Check remote sync status\n try {\n await run('git fetch', { cwd: pkgDir });\n const { stdout: statusOutput } = await run('git status -sb', { cwd: pkgDir });\n\n if (statusOutput.includes('behind')) {\n checks.remoteSync.passed = false;\n const match = statusOutput.match(/behind (\\d+)/);\n const count = match ? match[1] : 'some';\n checks.remoteSync.issues.push(`${pkgName} is ${count} commits behind remote`);\n }\n } catch (error: any) {\n checks.remoteSync.issues.push(`${pkgName}: Could not check remote sync - ${error.message || error}`);\n }\n\n // 3. Check for merge conflicts with target branch (main) - ALWAYS CHECK THIS\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n const currentBranch = gitStatus.branch;\n const targetBranch = 'main'; // The branch we'll merge into during publish\n\n // Skip if we're already on main\n if (currentBranch !== 'main' && currentBranch !== 'master') {\n // Fetch latest to ensure we have up-to-date refs\n await run('git fetch origin', { cwd: pkgDir });\n\n // Try a test merge to detect conflicts\n // Use --no-commit --no-ff to simulate the merge without actually doing it\n try {\n // Check if there would be conflicts using git merge --no-commit --no-ff\n // This is safer as it doesn't modify the working tree\n await run(\n `git merge --no-commit --no-ff origin/${targetBranch}`,\n { cwd: pkgDir }\n );\n\n // If we get here, check if there are conflicts\n const { stdout: statusAfterMerge } = await run('git status --porcelain', { cwd: pkgDir });\n\n if (statusAfterMerge.includes('UU ') || statusAfterMerge.includes('AA ') ||\n statusAfterMerge.includes('DD ') || statusAfterMerge.includes('AU ') ||\n statusAfterMerge.includes('UA ') || statusAfterMerge.includes('DU ') ||\n statusAfterMerge.includes('UD ')) {\n checks.mergeConflicts.passed = false;\n checks.mergeConflicts.issues.push(\n `${pkgName}: Merge conflicts detected with ${targetBranch} branch`\n );\n }\n\n // Abort the test merge (only if there's actually a merge in progress)\n try {\n await run('git merge --abort', { cwd: pkgDir, suppressErrorLogging: true });\n } catch {\n // Ignore - there might not be a merge to abort if it was a fast-forward\n }\n } catch (mergeError: any) {\n // Abort any partial merge\n try {\n await run('git merge --abort', { cwd: pkgDir, suppressErrorLogging: true });\n } catch {\n // Ignore abort errors\n }\n\n // If merge failed, there are likely conflicts\n if (mergeError.message?.includes('CONFLICT') || mergeError.stderr?.includes('CONFLICT') || mergeError.stdout?.includes('CONFLICT')) {\n checks.mergeConflicts.passed = false;\n checks.mergeConflicts.issues.push(\n `${pkgName}: Merge conflicts detected with ${targetBranch} branch`\n );\n } else {\n // Some other error - log as warning\n checks.mergeConflicts.warnings.push(\n `${pkgName}: Could not check for merge conflicts - ${mergeError.message || mergeError}`\n );\n }\n }\n }\n } catch (error: any) {\n checks.mergeConflicts.warnings.push(\n `${pkgName}: Could not check for merge conflicts - ${error.message || error}`\n );\n }\n\n // 4. Check dev version status\n const version = pkgJson.version;\n if (!version) {\n checks.devVersion.issues.push(`${pkgName}: No version field in package.json`);\n } else if (!isDevelopmentVersion(version)) {\n checks.devVersion.passed = false;\n checks.devVersion.issues.push(`${pkgName} has non-dev version: ${version}`);\n } else {\n // Check if base version exists on npm\n const baseVersion = version.split('-')[0];\n try {\n const { stdout } = await run(`npm view ${pkgName}@${baseVersion} version`, { cwd: pkgDir, suppressErrorLogging: true });\n if (stdout.trim() === baseVersion) {\n checks.devVersion.passed = false;\n checks.devVersion.issues.push(\n `${pkgName}: Base version ${baseVersion} already published (current: ${version})`\n );\n }\n } catch {\n // Version doesn't exist on npm, which is good\n }\n }\n\n // 5. Check link status (warning only - links are recommended but not required)\n if (pkgJson.dependencies || pkgJson.devDependencies) {\n try {\n const linkedDeps = await getLinkedDependencies(pkgDir);\n const allDeps = {\n ...pkgJson.dependencies,\n ...pkgJson.devDependencies,\n };\n\n const localDeps = Object.keys(allDeps).filter(dep => localPackageNames.has(dep));\n const unlinkedLocal = localDeps.filter(dep => !linkedDeps.has(dep));\n\n if (unlinkedLocal.length > 0) {\n // Don't fail the check, just warn - links are recommended but not required\n checks.linkStatus.warnings.push(\n `${pkgName}: Local dependencies not linked (recommended): ${unlinkedLocal.join(', ')}`\n );\n }\n } catch (error: any) {\n checks.linkStatus.warnings.push(`${pkgName}: Could not check link status - ${error.message || error}`);\n }\n }\n\n // 6. Check for open PRs from working branch - only if validateRelease is true\n if (validateRelease && pkgJson.repository?.url) {\n try {\n const gitStatus = await getGitStatusSummary(pkgDir);\n const currentBranch = gitStatus.branch;\n\n // Extract owner/repo from repository URL\n const repoUrl = pkgJson.repository.url;\n const match = repoUrl.match(/github\\.com[:/]([^/]+)\\/([^/.]+)/);\n\n if (match) {\n const [, owner, repo] = match;\n\n try {\n const octokit = getOctokit();\n const { data: openPRs } = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${currentBranch}`,\n });\n\n if (openPRs.length > 0) {\n checks.openPRs.passed = false;\n for (const pr of openPRs) {\n const prInfo = `PR #${pr.number}: ${pr.title} (${pr.html_url})`;\n checks.openPRs.issues.push(`${pkgName}: ${prInfo}`);\n }\n }\n } catch (prError: any) {\n // Only log if it's not a 404 (repo might not exist on GitHub)\n if (!prError.message?.includes('404') && (!prError.status || prError.status !== 404)) {\n checks.openPRs.warnings.push(\n `${pkgName}: Could not check PRs - ${prError.message || prError}`\n );\n }\n }\n }\n } catch (error: any) {\n // Don't fail the check if we can't check PRs\n checks.openPRs.warnings.push(\n `${pkgName}: Could not check for open PRs - ${error.message || error}`\n );\n }\n }\n\n // 7. Check release workflow readiness (validate build, test, publish dry-run)\n // This check validates that the package can be successfully published\n // Only run if explicitly requested via config flag\n if ((config as any).validateReleaseWorkflow) {\n try {\n logger.info(`${pkgName}: Validating release workflow readiness...`);\n\n // Check 1: Build succeeds\n try {\n await run('npm run build', { cwd: pkgDir });\n logger.debug(`${pkgName}: Build check passed`);\n } catch (buildError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Build fails - ${buildError.message || buildError}`\n );\n }\n\n // Check 2: Tests pass\n try {\n await run('npm test', { cwd: pkgDir });\n logger.debug(`${pkgName}: Test check passed`);\n } catch (testError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Tests fail - ${testError.message || testError}`\n );\n }\n\n // Check 3: Publish dry-run succeeds\n try {\n await run('npm publish --dry-run', { cwd: pkgDir });\n logger.debug(`${pkgName}: Publish dry-run check passed`);\n } catch (publishError: any) {\n checks.releaseWorkflow.passed = false;\n checks.releaseWorkflow.issues.push(\n `${pkgName}: Publish dry-run fails - ${publishError.message || publishError}`\n );\n }\n\n // Check 4: NPM_TOKEN environment variable\n if (!process.env.NPM_TOKEN) {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: NPM_TOKEN environment variable not set (required for publishing)`\n );\n }\n\n // Check 5: GitHub workflow file exists\n const workflowPath = path.join(pkgDir, '.github', 'workflows', 'npm-publish.yml');\n try {\n await readFile(workflowPath, 'utf-8');\n logger.debug(`${pkgName}: GitHub workflow file exists`);\n } catch {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: GitHub workflow file not found at .github/workflows/npm-publish.yml`\n );\n }\n\n } catch (error: any) {\n checks.releaseWorkflow.warnings.push(\n `${pkgName}: Could not validate release workflow - ${error.message || error}`\n );\n }\n }\n }\n\n // Build summary - linkStatus and releaseWorkflow are not included in allPassed (recommendations)\n // mergeConflicts is ALWAYS checked (critical for preventing post-merge failures)\n // openPRs is only checked when validateRelease is true\n const allPassed = checks.gitignore.passed &&\n checks.branch.passed &&\n checks.remoteSync.passed &&\n checks.mergeConflicts.passed &&\n checks.devVersion.passed &&\n (validateRelease ? checks.openPRs.passed : true);\n\n const hasWarnings = checks.linkStatus.warnings.length > 0 ||\n checks.mergeConflicts.warnings.length > 0 ||\n checks.openPRs.warnings.length > 0 ||\n checks.releaseWorkflow.warnings.length > 0;\n\n // Log results\n let summary = `\\n${'='.repeat(60)}\\n`;\n summary += `Development Readiness Check${validateRelease ? ' (Full Release Validation)' : ' (Quick Check)'}\\n`;\n summary += `${'='.repeat(60)}\\n\\n`;\n summary += `Type: ${isTree ? 'Tree (monorepo)' : 'Single package'}\\n`;\n summary += `Packages checked: ${packagesToCheck.length}\\n\\n`;\n\n if (allPassed) {\n summary += `✅ Status: READY FOR DEVELOPMENT\\n\\n`;\n summary += `All required checks passed:\\n`;\n summary += ` ✓ Gitignore patterns\\n`;\n summary += ` ✓ Branch status\\n`;\n summary += ` ✓ Remote sync\\n`;\n summary += ` ✓ No merge conflicts with main\\n`;\n summary += ` ✓ Dev versions\\n`;\n if (validateRelease) {\n summary += ` ✓ No open PRs\\n`;\n }\n if (!hasWarnings) {\n summary += ` ✓ All local dependencies linked\\n`;\n }\n } else {\n summary += `⚠️ Status: NOT READY\\n\\n`;\n\n if (!checks.gitignore.passed) {\n summary += `❌ Gitignore Issues:\\n`;\n checks.gitignore.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.branch.passed) {\n summary += `❌ Branch Issues:\\n`;\n checks.branch.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.remoteSync.passed) {\n summary += `❌ Remote Sync Issues:\\n`;\n checks.remoteSync.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.mergeConflicts.passed) {\n summary += `❌ Merge Conflict Issues:\\n`;\n checks.mergeConflicts.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n summary += ` To resolve merge conflicts:\\n`;\n summary += ` 1. Fetch latest: git fetch origin main\\n`;\n summary += ` 2. Merge main into your branch: git merge origin/main\\n`;\n summary += ` 3. Resolve conflicts in your editor\\n`;\n summary += ` 4. Commit the merge: git add . && git commit\\n`;\n summary += ` 5. Run check-development again to verify\\n`;\n summary += `\\n`;\n }\n\n if (!checks.devVersion.passed) {\n summary += `❌ Dev Version Issues:\\n`;\n checks.devVersion.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (validateRelease && !checks.openPRs.passed) {\n summary += `❌ Open PR Issues:\\n`;\n checks.openPRs.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n\n if (!checks.releaseWorkflow.passed) {\n summary += `❌ Release Workflow Issues:\\n`;\n checks.releaseWorkflow.issues.forEach(issue => summary += ` - ${issue}\\n`);\n summary += `\\n`;\n }\n }\n\n // Log warnings separately (non-blocking)\n if (hasWarnings) {\n summary += `⚠️ Recommendations:\\n`;\n checks.linkStatus.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n checks.mergeConflicts.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n if (validateRelease) {\n checks.openPRs.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n }\n checks.releaseWorkflow.warnings.forEach(warning => summary += ` - ${warning}\\n`);\n summary += `\\n`;\n }\n\n summary += `${'='.repeat(60)}\\n`;\n\n return summary;\n}\n","#!/usr/bin/env node\nimport { Formatter, Model } from '@kjerneverk/riotprompt';\nimport 'dotenv/config';\nimport type { ChatCompletionMessageParam } from 'openai/resources';\nimport { getDefaultFromRef, getCurrentBranch, safeJsonParse } from '@grunnverk/git-tools';\nimport {\n Config,\n Log,\n Diff,\n DEFAULT_EXCLUDED_PATTERNS,\n DEFAULT_TO_COMMIT_ALIAS,\n DEFAULT_OUTPUT_DIRECTORY,\n DEFAULT_MAX_DIFF_BYTES,\n improveContentWithLLM,\n toAIConfig,\n createStorageAdapter,\n createLoggerAdapter,\n getDryRunLogger,\n getOutputPath,\n getTimestampedRequestFilename,\n getTimestampedResponseFilename,\n getTimestampedReleaseNotesFilename,\n validateReleaseSummary,\n ReleaseSummary,\n filterContent,\n type LLMImprovementConfig,\n} from '@grunnverk/core';\nimport {\n createCompletionWithRetry,\n getUserChoice,\n editContentInEditor,\n getLLMFeedbackInEditor,\n requireTTY,\n STANDARD_CHOICES,\n ReleaseContext,\n runAgenticRelease,\n generateReflectionReport,\n createReleasePrompt,\n} from '@grunnverk/ai-service';\nimport { createStorage } from '@grunnverk/shared';\nimport * as GitHub from '@grunnverk/github-tools';\n\n// Helper function to read context files\nasync function readContextFiles(contextFiles: string[] | undefined, logger: any): Promise<string> {\n if (!contextFiles || contextFiles.length === 0) {\n return '';\n }\n\n const storage = createStorage();\n const contextParts: string[] = [];\n\n for (const filePath of contextFiles) {\n try {\n const content = await storage.readFile(filePath, 'utf8');\n contextParts.push(`## Context from ${filePath}\\n\\n${content}\\n`);\n logger.debug(`Read context from file: ${filePath}`);\n } catch (error: any) {\n logger.warn(`Failed to read context file ${filePath}: ${error.message}`);\n }\n }\n\n return contextParts.join('\\n---\\n\\n');\n}\n\n// Helper function to edit release notes using editor\nasync function editReleaseNotesInteractively(releaseSummary: ReleaseSummary): Promise<ReleaseSummary> {\n const templateLines = [\n '# Edit your release notes below. Lines starting with \"#\" will be ignored.',\n '# The first line is the title, everything else is the body.',\n '# Save and close the editor when you are done.'\n ];\n\n const content = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n const result = await editContentInEditor(content, templateLines, '.md');\n\n const lines = result.content.split('\\n');\n const title = lines[0].trim();\n const body = lines.slice(1).join('\\n').trim();\n\n return { title, body };\n}\n\n// Helper function to improve release notes using LLM\nasync function improveReleaseNotesWithLLM(\n releaseSummary: ReleaseSummary,\n runConfig: Config,\n promptConfig: any,\n promptContext: any,\n outputDirectory: string,\n logContent: string,\n diffContent: string\n): Promise<ReleaseSummary> {\n // Get user feedback on what to improve using the editor\n const releaseNotesContent = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n const userFeedback = await getLLMFeedbackInEditor('release notes', releaseNotesContent);\n\n const improvementConfig: LLMImprovementConfig = {\n contentType: 'release notes',\n createImprovedPrompt: async (promptConfig, currentSummary, promptContext) => {\n const improvementPromptContent = {\n logContent: logContent,\n diffContent: diffContent,\n releaseFocus: `Please improve these release notes based on the user's feedback: \"${userFeedback}\".\n\nCurrent release notes:\nTitle: \"${currentSummary.title}\"\nBody: \"${currentSummary.body}\"\n\nPlease revise the release notes according to the user's feedback while maintaining accuracy and following good release note practices.`,\n };\n const promptResult = await createReleasePrompt(promptConfig, improvementPromptContent, promptContext);\n // Format the prompt into a proper request with messages\n const aiConfig = toAIConfig(runConfig);\n const modelToUse = aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o-mini';\n return Formatter.create({ logger: getDryRunLogger(false) }).formatPrompt(modelToUse as Model, promptResult.prompt);\n },\n callLLM: async (request, runConfig, outputDirectory) => {\n const aiConfig = toAIConfig(runConfig);\n const aiStorageAdapter = createStorageAdapter(outputDirectory);\n const aiLogger = createLoggerAdapter(false);\n const modelToUse = aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o-mini';\n const openaiReasoning = aiConfig.commands?.release?.reasoning || aiConfig.reasoning;\n return await createCompletionWithRetry(\n request.messages as ChatCompletionMessageParam[],\n {\n model: modelToUse,\n openaiReasoning,\n responseFormat: { type: 'json_object' },\n debug: runConfig.debug,\n debugRequestFile: getOutputPath(outputDirectory, getTimestampedRequestFilename('release-improve')),\n debugResponseFile: getOutputPath(outputDirectory, getTimestampedResponseFilename('release-improve')),\n storage: aiStorageAdapter,\n logger: aiLogger,\n }\n );\n },\n processResponse: (response: any) => {\n return validateReleaseSummary(response);\n }\n };\n\n return await improveContentWithLLM(\n releaseSummary,\n runConfig,\n promptConfig,\n promptContext,\n outputDirectory,\n improvementConfig\n );\n}\n\n// Helper function to generate self-reflection output for release notes using observability module\nasync function generateSelfReflection(\n agenticResult: any,\n outputDirectory: string,\n storage: any,\n logger: any\n): Promise<void> {\n try {\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];\n const reflectionPath = getOutputPath(outputDirectory, `agentic-reflection-release-${timestamp}.md`);\n\n // Use new observability reflection generator\n const report = await generateReflectionReport({\n iterations: agenticResult.iterations || 0,\n toolCallsExecuted: agenticResult.toolCallsExecuted || 0,\n maxIterations: agenticResult.maxIterations || 30,\n toolMetrics: agenticResult.toolMetrics || [],\n conversationHistory: agenticResult.conversationHistory || [],\n releaseNotes: agenticResult.releaseNotes,\n logger\n });\n\n // Save the report to output directory\n await storage.writeFile(reflectionPath, report, 'utf8');\n\n logger.info('');\n logger.info('═'.repeat(80));\n logger.info('📊 SELF-REFLECTION REPORT GENERATED');\n logger.info('═'.repeat(80));\n logger.info('');\n logger.info('📁 Location: %s', reflectionPath);\n logger.info('');\n logger.info('📈 Report Summary:');\n const iterations = agenticResult.iterations || 0;\n const toolCalls = agenticResult.toolCallsExecuted || 0;\n const uniqueTools = new Set((agenticResult.toolMetrics || []).map((m: any) => m.name)).size;\n logger.info(` • ${iterations} iterations completed`);\n logger.info(` • ${toolCalls} tool calls executed`);\n logger.info(` • ${uniqueTools} unique tools used`);\n logger.info('');\n logger.info('💡 Use this report to:');\n logger.info(' • Understand which tools were most effective');\n logger.info(' • Identify performance bottlenecks');\n logger.info(' • Optimize tool selection and usage patterns');\n logger.info(' • Improve agentic release notes generation');\n logger.info('');\n logger.info('═'.repeat(80));\n } catch (error: any) {\n logger.warn('Failed to generate self-reflection report: %s', error.message);\n }\n}\n\n// Interactive feedback loop for release notes\nasync function handleInteractiveReleaseFeedback(\n releaseSummary: ReleaseSummary,\n runConfig: Config,\n promptConfig: any,\n promptContext: any,\n outputDirectory: string,\n storage: any,\n logContent: string,\n diffContent: string\n): Promise<{ action: 'confirm' | 'skip', finalSummary: ReleaseSummary }> {\n const logger = getDryRunLogger(false);\n let currentSummary = releaseSummary;\n\n while (true) {\n // Display the current release notes\n logger.info('\\nRELEASE_NOTES_GENERATED: Generated release notes from AI | Title Length: ' + currentSummary.title.length + ' | Body Length: ' + currentSummary.body.length);\n logger.info('─'.repeat(50));\n logger.info('RELEASE_NOTES_TITLE: %s', currentSummary.title);\n logger.info('');\n logger.info('RELEASE_NOTES_BODY: Release notes content:');\n logger.info(currentSummary.body);\n logger.info('─'.repeat(50));\n\n // Get user choice\n const userChoice = await getUserChoice(\n '\\nWhat would you like to do with these release notes?',\n [\n STANDARD_CHOICES.CONFIRM,\n STANDARD_CHOICES.EDIT,\n STANDARD_CHOICES.SKIP,\n STANDARD_CHOICES.IMPROVE\n ],\n {\n nonTtyErrorSuggestions: ['Use --dry-run to see the generated content without interaction']\n }\n );\n\n switch (userChoice) {\n case 'c':\n return { action: 'confirm', finalSummary: currentSummary };\n\n case 'e':\n try {\n currentSummary = await editReleaseNotesInteractively(currentSummary);\n } catch (error: any) {\n logger.error(`RELEASE_NOTES_EDIT_FAILED: Unable to edit release notes | Error: ${error.message} | Impact: Using original notes`);\n // Continue the loop to show options again\n }\n break;\n\n case 's':\n return { action: 'skip', finalSummary: currentSummary };\n\n case 'i':\n try {\n currentSummary = await improveReleaseNotesWithLLM(\n currentSummary,\n runConfig,\n promptConfig,\n promptContext,\n outputDirectory,\n logContent,\n diffContent\n );\n } catch (error: any) {\n logger.error(`RELEASE_NOTES_IMPROVE_FAILED: Unable to improve release notes | Error: ${error.message} | Impact: Using current version`);\n // Continue the loop to show options again\n }\n break;\n\n default:\n // This shouldn't happen, but continue the loop\n break;\n }\n }\n}\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n // Get current branch to help determine best tag comparison\n const currentBranch = runConfig.release?.currentBranch || await getCurrentBranch();\n\n // Resolve the from reference with fallback logic if not explicitly provided\n const fromRef = runConfig.release?.from ?? await getDefaultFromRef(\n runConfig.release?.fromMain || false,\n currentBranch\n );\n const toRef = runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS;\n\n logger.debug(`Using git references: from=${fromRef}, to=${toRef}`);\n\n const log = await Log.create({\n from: fromRef,\n to: toRef,\n limit: runConfig.release?.messageLimit\n });\n let logContent = '';\n\n const maxDiffBytes = runConfig.release?.maxDiffBytes ?? DEFAULT_MAX_DIFF_BYTES;\n const diff = await Diff.create({\n from: fromRef,\n to: toRef,\n excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS,\n maxDiffBytes\n });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const promptConfig = {\n overridePaths: runConfig.discoveredConfigDirs || [],\n overrides: runConfig.overrides || false,\n };\n // Helper function to determine versions for milestone lookup\n const determineVersionsForMilestones = async (): Promise<string[]> => {\n const versions: string[] = [];\n\n // Get current package.json version to determine likely release version\n try {\n const storage = createStorage();\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const packageJson = safeJsonParse(packageJsonContents, 'package.json');\n const currentVersion = packageJson.version;\n\n if (currentVersion) {\n // If it's a dev version (e.g., \"0.1.1-dev.0\"), extract base version\n if (currentVersion.includes('-dev.')) {\n const baseVersion = currentVersion.split('-')[0];\n versions.push(baseVersion);\n logger.debug(`Detected dev version ${currentVersion}, will check milestone for ${baseVersion}`);\n } else {\n // Use current version as-is\n versions.push(currentVersion);\n logger.debug(`Using current version ${currentVersion} for milestone lookup`);\n }\n }\n } catch (error: any) {\n logger.debug(`Failed to read package.json version: ${error.message}`);\n }\n\n // Handle edge case: if publish targetVersion is different from current version\n if (runConfig.publish?.targetVersion &&\n runConfig.publish.targetVersion !== 'patch' &&\n runConfig.publish.targetVersion !== 'minor' &&\n runConfig.publish.targetVersion !== 'major') {\n\n const targetVersion = runConfig.publish.targetVersion;\n if (!versions.includes(targetVersion)) {\n versions.push(targetVersion);\n logger.debug(`Added target version ${targetVersion} for milestone lookup`);\n }\n }\n\n return versions;\n };\n\n // Get milestone issues if enabled\n let milestoneIssuesContent = '';\n const milestonesEnabled = !runConfig.release?.noMilestones;\n\n if (milestonesEnabled) {\n logger.info('RELEASE_MILESTONE_CHECK: Checking for milestone issues | Purpose: Include in release notes | Source: GitHub milestones');\n const versions = await determineVersionsForMilestones();\n\n if (versions.length > 0) {\n milestoneIssuesContent = await GitHub.getMilestoneIssuesForRelease(versions, 50000);\n if (milestoneIssuesContent) {\n logger.info('RELEASE_MILESTONE_INCLUDED: Incorporated milestone issues into context | Count: ' + (milestoneIssuesContent?.length || 0) + ' | Purpose: Enrich release notes');\n } else {\n logger.debug('No milestone issues found to incorporate');\n }\n } else {\n logger.debug('No versions determined for milestone lookup');\n }\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n // Always ensure output directory exists for request/response files\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const storage = createStorage();\n await storage.ensureDirectory(outputDirectory);\n\n // Create adapters for ai-service\n const aiConfig = toAIConfig(runConfig);\n const aiStorageAdapter = createStorageAdapter(outputDirectory);\n const aiLogger = createLoggerAdapter(isDryRun);\n\n // Read context from files if provided\n const contextFromFiles = await readContextFiles(runConfig.release?.contextFiles, logger);\n\n // Combine file context with existing context\n const combinedContext = [\n runConfig.release?.context,\n contextFromFiles\n ].filter(Boolean).join('\\n\\n---\\n\\n');\n\n // Run agentic release notes generation\n const agenticResult = await runAgenticRelease({\n fromRef,\n toRef,\n logContent,\n diffContent,\n milestoneIssues: milestoneIssuesContent,\n releaseFocus: runConfig.release?.focus,\n userContext: combinedContext || undefined,\n targetVersion: runConfig.release?.version, // Pass explicit version if provided by publish command\n model: aiConfig.commands?.release?.model || aiConfig.model || 'gpt-4o',\n maxIterations: runConfig.release?.maxAgenticIterations || 30,\n debug: runConfig.debug,\n debugRequestFile: getOutputPath(outputDirectory, getTimestampedRequestFilename('release')),\n debugResponseFile: getOutputPath(outputDirectory, getTimestampedResponseFilename('release')),\n storage: aiStorageAdapter,\n logger: aiLogger,\n openaiReasoning: aiConfig.commands?.release?.reasoning || aiConfig.reasoning,\n });\n\n const iterations = agenticResult.iterations || 0;\n const toolCalls = agenticResult.toolCallsExecuted || 0;\n logger.info(`🔍 Analysis complete: ${iterations} iterations, ${toolCalls} tool calls`);\n\n // Generate self-reflection output if enabled\n if (runConfig.release?.selfReflection) {\n await generateSelfReflection(agenticResult, outputDirectory, storage, logger);\n }\n\n // Apply stop-context filtering to release notes\n const titleFilterResult = filterContent(agenticResult.releaseNotes.title, runConfig.stopContext);\n const bodyFilterResult = filterContent(agenticResult.releaseNotes.body, runConfig.stopContext);\n let releaseSummary: ReleaseSummary = {\n title: titleFilterResult.filtered,\n body: bodyFilterResult.filtered,\n };\n\n // Handle interactive mode\n if (runConfig.release?.interactive && !isDryRun) {\n requireTTY('Interactive mode requires a terminal. Use --dry-run instead.');\n\n const interactivePromptContext: ReleaseContext = {\n context: combinedContext || undefined,\n directories: runConfig.contextDirectories,\n };\n\n const interactiveResult = await handleInteractiveReleaseFeedback(\n releaseSummary,\n runConfig,\n promptConfig,\n interactivePromptContext,\n outputDirectory,\n storage,\n logContent,\n diffContent\n );\n\n if (interactiveResult.action === 'skip') {\n logger.info('RELEASE_ABORTED: Release notes generation aborted by user | Reason: User choice | Status: cancelled');\n } else {\n logger.info('RELEASE_FINALIZED: Release notes finalized and accepted | Status: ready | Next: Create release or save');\n }\n\n releaseSummary = interactiveResult.finalSummary;\n }\n\n // Save timestamped copy of release notes to output directory\n try {\n const timestampedFilename = getTimestampedReleaseNotesFilename();\n const outputPath = getOutputPath(outputDirectory, timestampedFilename);\n\n // Format the release notes as markdown\n const releaseNotesContent = `# ${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n\n await storage.writeFile(outputPath, releaseNotesContent, 'utf-8');\n logger.debug('Saved timestamped release notes: %s', outputPath);\n } catch (error: any) {\n logger.warn('RELEASE_SAVE_FAILED: Failed to save timestamped release notes | Error: %s | Impact: Notes not persisted to file', error.message);\n }\n\n if (isDryRun) {\n logger.info('RELEASE_SUMMARY_COMPLETE: Generated release summary successfully | Status: completed');\n logger.info('RELEASE_SUMMARY_TITLE: %s', releaseSummary.title);\n logger.info('RELEASE_SUMMARY_BODY: %s', releaseSummary.body);\n }\n\n return releaseSummary;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport path from 'path';\nimport * as Commit from '@grunnverk/commands-git';\nimport * as Release from './release';\nimport fs from 'fs/promises';\n\nimport { getLogger, getDryRunLogger, Config, PullRequest, Diff, getOutputPath, checkIfTagExists, confirmVersionInteractively, calculateBranchDependentVersion, DEFAULT_OUTPUT_DIRECTORY, KODRDRIV_DEFAULTS, runGitWithLock, filterContent } from '@grunnverk/core';\nimport { run, runWithDryRunSupport, runSecure, validateGitRef, safeJsonParse, validatePackageJson, isBranchInSyncWithRemote, safeSyncBranchWithRemote, localBranchExists, remoteBranchExists } from '@grunnverk/git-tools';\nimport * as GitHub from '@grunnverk/github-tools';\nimport { createStorage, incrementPatchVersion, calculateTargetVersion } from '@grunnverk/shared';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const logger = getLogger();\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n\n } catch (error: any) {\n logger.warn(`NPMRC_READ_FAILED: Unable to read .npmrc configuration file | Path: ${npmrcPath} | Error: ${error.message}`);\n logger.verbose('NPMRC_READ_IMPACT: Environment variable detection for publishing may be affected due to failed .npmrc read');\n }\n } else {\n logger.debug('NPMRC_NOT_FOUND: No .npmrc file present in current directory | Action: Skipping environment variable scan | Path: ' + npmrcPath);\n }\n\n return envVars;\n};\n\n/**\n * Checks if .gitignore contains required patterns to prevent publishing\n * development artifacts and sensitive files.\n */\nconst checkGitignorePatterns = async (storage: any, isDryRun: boolean): Promise<void> => {\n const logger = getDryRunLogger(isDryRun);\n const gitignorePath = path.join(process.cwd(), '.gitignore');\n\n // Required patterns that must be present in .gitignore\n const requiredPatterns = [\n 'node_modules',\n 'dist',\n 'package-lock.json',\n '.env',\n 'output/',\n 'coverage',\n '.kodrdriv*'\n ];\n\n // Check if .gitignore exists\n if (!await storage.exists(gitignorePath)) {\n logger.error('GITIGNORE_MISSING: .gitignore file not found | Path: ' + gitignorePath + ' | Impact: Critical files may be committed');\n logger.error('');\n logger.error('GITIGNORE_REQUIRED: .gitignore is required for kodrdriv to work properly');\n logger.error('GITIGNORE_PURPOSE: Prevents committing development artifacts and sensitive files');\n logger.error('');\n logger.error('GITIGNORE_CREATE: Create .gitignore with these patterns:');\n for (const pattern of requiredPatterns) {\n logger.error(` ${pattern}`);\n }\n logger.error('');\n throw new Error('.gitignore file is required but not found. Please create it with the required patterns.');\n }\n\n // Read .gitignore content\n let gitignoreContent: string;\n try {\n gitignoreContent = await storage.readFile(gitignorePath, 'utf-8');\n } catch (error: any) {\n logger.error(`GITIGNORE_READ_FAILED: Unable to read .gitignore | Path: ${gitignorePath} | Error: ${error.message}`);\n throw new Error(`Failed to read .gitignore: ${error.message}`);\n }\n\n // Parse .gitignore into lines, ignoring comments and empty lines\n const gitignoreLines = gitignoreContent\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line && !line.startsWith('#'));\n\n // Check for missing patterns\n const missingPatterns: string[] = [];\n for (const pattern of requiredPatterns) {\n // Check if the pattern exists in any of the gitignore lines\n const found = gitignoreLines.some(line => {\n // Exact match\n if (line === pattern) return true;\n\n // Pattern with wildcard - check if the pattern or any matching line exists\n if (pattern.includes('*')) {\n const basePattern = pattern.replace('*', '');\n // Accept exact wildcard pattern, base pattern, or any line starting with base\n return line === pattern || line === basePattern || line.startsWith(basePattern);\n }\n\n // Pattern with trailing slash - check both with and without slash\n if (pattern.endsWith('/')) {\n const basePattern = pattern.slice(0, -1);\n return line === basePattern || line === pattern || line.startsWith(pattern);\n }\n\n // Line with trailing slash - check if it matches the pattern (e.g., \"node_modules/\" matches \"node_modules\")\n if (line.endsWith('/')) {\n const lineBase = line.slice(0, -1);\n return lineBase === pattern || line.startsWith(pattern + '/');\n }\n\n return false;\n });\n\n if (!found) {\n missingPatterns.push(pattern);\n }\n }\n\n // Report missing patterns (relaxed check - allow variations)\n const criticalMissing = missingPatterns.filter(p => !p.includes('coverage') && p !== 'package-lock.json');\n if (criticalMissing.length > 0) {\n logger.error('GITIGNORE_INCOMPLETE: Required patterns missing from .gitignore | Path: ' + gitignorePath + ' | Count: ' + criticalMissing.length);\n logger.error('');\n logger.error('GITIGNORE_MISSING_PATTERNS: The following patterns must be added to .gitignore:');\n for (const pattern of criticalMissing) {\n logger.error(` ${pattern}`);\n }\n logger.error('');\n logger.error('GITIGNORE_WHY_REQUIRED: These patterns are required because:');\n logger.error(' node_modules - Dependencies should not be committed');\n logger.error(' dist - Build artifacts should not be committed');\n logger.error(' .env - Environment variables may contain secrets');\n logger.error(' output/ - Build output directory should not be committed');\n logger.error(' .kodrdriv* - kodrdriv internal files should not be committed');\n logger.error('');\n throw new Error(`Missing required .gitignore patterns: ${criticalMissing.join(', ')}. Please add them to your .gitignore file.`);\n } else if (missingPatterns.length > 0) {\n logger.warn('GITIGNORE_VARIATION: Some patterns have variations in .gitignore (acceptable) | Patterns: ' + missingPatterns.join(', '));\n }\n\n logger.verbose('GITIGNORE_VERIFIED: All required patterns present in .gitignore | Path: ' + gitignorePath + ' | Status: valid');\n};\n\n/**\n * Checks if package-lock.json contains file: dependencies (from npm link)\n * and cleans them up if found by removing package-lock.json and regenerating it.\n */\nconst cleanupNpmLinkReferences = async (isDryRun: boolean): Promise<void> => {\n const logger = getDryRunLogger(isDryRun);\n const packageLockPath = path.join(process.cwd(), 'package-lock.json');\n\n try {\n // Check if package-lock.json exists\n try {\n await fs.access(packageLockPath);\n } catch {\n // No package-lock.json, nothing to clean\n logger.verbose('PACKAGE_LOCK_NOT_FOUND: No package-lock.json file exists | Action: Skipping npm link cleanup | Path: ' + packageLockPath);\n return;\n }\n\n // Read and parse package-lock.json\n const packageLockContent = await fs.readFile(packageLockPath, 'utf-8');\n const packageLock = safeJsonParse(packageLockContent, packageLockPath);\n\n // Check for file: dependencies in the lockfile\n let hasFileReferences = false;\n\n // Check in packages (npm v7+)\n if (packageLock.packages) {\n for (const [pkgPath, pkgInfo] of Object.entries(packageLock.packages as Record<string, any>)) {\n if (pkgInfo.resolved && typeof pkgInfo.resolved === 'string' && pkgInfo.resolved.startsWith('file:')) {\n // Check if it's a relative path (from npm link) rather than a workspace path\n const resolvedPath = pkgInfo.resolved.replace('file:', '');\n if (resolvedPath.startsWith('../') || resolvedPath.startsWith('./')) {\n hasFileReferences = true;\n logger.verbose(`NPM_LINK_DETECTED: Found npm link reference in packages section | Package: ${pkgPath} | Resolved: ${pkgInfo.resolved} | Type: relative_file_dependency`);\n break;\n }\n }\n }\n }\n\n // Check in dependencies (npm v6)\n if (!hasFileReferences && packageLock.dependencies) {\n for (const [pkgName, pkgInfo] of Object.entries(packageLock.dependencies as Record<string, any>)) {\n if (pkgInfo.version && typeof pkgInfo.version === 'string' && pkgInfo.version.startsWith('file:')) {\n const versionPath = pkgInfo.version.replace('file:', '');\n if (versionPath.startsWith('../') || versionPath.startsWith('./')) {\n hasFileReferences = true;\n logger.verbose(`NPM_LINK_DETECTED: Found npm link reference in dependencies section | Package: ${pkgName} | Version: ${pkgInfo.version} | Type: relative_file_dependency`);\n break;\n }\n }\n }\n }\n\n if (hasFileReferences) {\n logger.info('NPM_LINK_CLEANUP_REQUIRED: Detected npm link references in package-lock.json | File: package-lock.json | Impact: Must be cleaned before publish');\n logger.info('NPM_LINK_CLEANUP_STARTING: Removing package-lock.json and regenerating clean version | Action: Remove file with relative dependencies');\n\n if (isDryRun) {\n logger.info('DRY_RUN_OPERATION: Would remove package-lock.json and regenerate it | Mode: dry-run | File: package-lock.json');\n } else {\n // Remove package-lock.json\n await fs.unlink(packageLockPath);\n logger.verbose('NPM_LINK_CLEANUP_FILE_REMOVED: Deleted package-lock.json containing npm link references | Path: ' + packageLockPath);\n\n // Regenerate clean package-lock.json\n logger.verbose('NPM_LOCK_REGENERATING: Executing npm install to regenerate package-lock.json from package.json | Command: npm install --package-lock-only --no-audit --no-fund');\n await runWithDryRunSupport('npm install --package-lock-only --no-audit --no-fund', isDryRun);\n logger.info('NPM_LOCK_REGENERATED: Successfully regenerated clean package-lock.json without link references | Path: ' + packageLockPath);\n }\n } else {\n logger.verbose('NPM_LINK_CHECK_CLEAN: No npm link references found in package-lock.json | Status: Ready for publish | File: ' + packageLockPath);\n }\n } catch (error: any) {\n // Log warning but don't fail - let npm update handle any issues\n logger.warn(`NPM_LINK_CHECK_FAILED: Unable to check or clean npm link references | Error: ${error.message} | Impact: Continuing with publish, npm will handle issues`);\n logger.verbose('PUBLISH_PROCESS_CONTINUING: Proceeding with publish workflow despite npm link check failure | Next: Standard npm publish validation');\n }\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getDryRunLogger(isDryRun);\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`ENV_VARS_MISSING: Required environment variables not set | Variables: ${missingEnvVars.join(', ')} | Mode: dry-run | Impact: Would fail in real publish`);\n } else {\n logger.error(`ENV_VARS_MISSING: Required environment variables not set | Variables: ${missingEnvVars.join(', ')} | Action: Must set before publish | Source: .npmrc configuration`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config, targetBranch?: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n logger.info('PRECHECK_STARTING: Executing publish prechecks | Phase: validation | Target: ' + (targetBranch || 'default'));\n\n // Check .gitignore patterns first (critical requirement)\n logger.info('PRECHECK_GITIGNORE: Verifying .gitignore contains required patterns | Requirement: Must ignore development artifacts and sensitive files');\n if (isDryRun) {\n logger.info('PRECHECK_GITIGNORE: Would verify .gitignore patterns | Mode: dry-run | Patterns: node_modules, dist, package-lock.json, .env, output/, coverage, .kodrdriv*');\n } else {\n await checkGitignorePatterns(storage, isDryRun);\n }\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('PRECHECK_GIT_REPO: Would verify git repository | Mode: dry-run | Command: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Not in a git repository or git command failed: ${originalMessage}. Please run this command from within a git repository.`);\n }\n }\n\n // Check for uncommitted changes\n logger.info('PRECHECK_GIT_STATUS: Checking for uncommitted changes | Command: git status --porcelain | Requirement: Clean working directory');\n try {\n if (isDryRun) {\n logger.info('PRECHECK_GIT_STATUS: Would verify clean working directory | Mode: dry-run | Command: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n\n } catch (error: any) {\n if (!isDryRun) {\n // Preserve the original error message to help with debugging\n const originalMessage = error.message || error.toString();\n throw new Error(`Failed to check git status: ${originalMessage}. Please ensure you are in a valid git repository and try again.`);\n }\n }\n\n // Use the passed target branch or fallback to config/default\n const effectiveTargetBranch = targetBranch || runConfig.publish?.targetBranch || 'main';\n\n // Check that we're not running from the target branch\n logger.info('PRECHECK_BRANCH: Verifying current branch is not target branch | Target: ' + effectiveTargetBranch + ' | Requirement: Must run from feature branch');\n if (isDryRun) {\n logger.info(`PRECHECK_BRANCH: Would verify current branch is not target branch | Mode: dry-run | Target: ${effectiveTargetBranch}`);\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (currentBranch === effectiveTargetBranch) {\n throw new Error(`Cannot run publish from the target branch '${effectiveTargetBranch}'. Please switch to a different branch before running publish.`);\n }\n }\n\n // Check target branch sync with remote\n logger.info(`PRECHECK_BRANCH_SYNC: Checking target branch sync with remote | Branch: ${effectiveTargetBranch} | Remote: origin | Requirement: Branches must be synchronized`);\n if (isDryRun) {\n logger.info(`PRECHECK_BRANCH_SYNC: Would verify target branch is in sync with remote | Mode: dry-run | Branch: ${effectiveTargetBranch} | Remote: origin`);\n } else {\n // Only check if local target branch exists (it's okay if it doesn't exist locally)\n const targetBranchExists = await localBranchExists(effectiveTargetBranch);\n if (targetBranchExists) {\n const syncStatus = await isBranchInSyncWithRemote(effectiveTargetBranch);\n\n if (!syncStatus.inSync) {\n logger.error(`BRANCH_SYNC_FAILED: Target branch not synchronized with remote | Branch: ${effectiveTargetBranch} | Status: out-of-sync | Impact: Cannot proceed with publish`);\n logger.error('');\n\n if (syncStatus.error) {\n logger.error(`BRANCH_SYNC_ERROR: ${syncStatus.error}`);\n } else if (syncStatus.localSha && syncStatus.remoteSha) {\n logger.error(`BRANCH_SYNC_DIVERGENCE: Local and remote commits differ | Local SHA: ${syncStatus.localSha.substring(0, 8)} | Remote SHA: ${syncStatus.remoteSha.substring(0, 8)}`);\n }\n\n logger.error('');\n logger.error('RESOLUTION_STEPS: Manual intervention required to sync branches:');\n logger.error(` Step 1: Switch to target branch | Command: git checkout ${effectiveTargetBranch}`);\n logger.error(` Step 2: Pull latest changes | Command: git pull origin ${effectiveTargetBranch}`);\n logger.error(' Step 3: Resolve merge conflicts if present');\n logger.error(' Step 4: Return to feature branch and retry publish');\n logger.error('');\n logger.error(`ALTERNATIVE_OPTION: Automatic sync available | Command: kodrdriv publish --sync-target | Branch: ${effectiveTargetBranch}`);\n\n throw new Error(`Target branch '${effectiveTargetBranch}' is not in sync with remote. Please sync the branch before running publish.`);\n } else {\n logger.info(`BRANCH_SYNC_VERIFIED: Target branch is synchronized with remote | Branch: ${effectiveTargetBranch} | Status: in-sync`);\n }\n } else {\n logger.info(`BRANCH_NOT_LOCAL: Target branch does not exist locally | Branch: ${effectiveTargetBranch} | Action: Will be created during publish process`);\n }\n }\n\n // Check GitHub Actions workflow configuration\n logger.info('PRECHECK_WORKFLOW: Checking GitHub Actions workflow configuration | Target: PR automation | Requirement: Workflows should trigger on pull requests');\n if (isDryRun) {\n logger.info('PRECHECK_WORKFLOW: Would check if GitHub Actions workflows are configured for pull requests | Mode: dry-run');\n } else {\n try {\n // TODO: Re-enable when checkWorkflowConfiguration is exported from github-tools\n // const workflowConfig = await GitHub.checkWorkflowConfiguration(effectiveTargetBranch);\n const workflowConfig = {\n hasWorkflows: true,\n hasPullRequestTriggers: true,\n workflowCount: 0,\n triggeredWorkflowNames: [] as string[]\n };\n\n if (!workflowConfig.hasWorkflows) {\n logger.warn('WORKFLOW_NOT_CONFIGURED: No GitHub Actions workflows found in repository | Impact: PR will be created but no automated checks will run | Recommendation: Add workflow file at .github/workflows/ci.yml');\n logger.warn('WORKFLOW_BEHAVIOR: Publish process will proceed without waiting for checks | PR State: Will be created | Check Status: None');\n logger.warn('WORKFLOW_RECOMMENDATION: Consider adding CI workflow to validate PRs automatically | Example: .github/workflows/ci.yml with PR triggers');\n } else if (!workflowConfig.hasPullRequestTriggers) {\n logger.warn(`WORKFLOW_NO_PR_TRIGGER: Found workflows but none trigger on pull requests | Workflow Count: ${workflowConfig.workflowCount} | Target Branch: ${effectiveTargetBranch} | Impact: No checks will run on PR`);\n logger.warn('WORKFLOW_BEHAVIOR: Publish process will create PR without automated checks | PR State: Will be created | Check Status: None');\n logger.warn(`WORKFLOW_RECOMMENDATION: Update workflow triggers to include PR events | Configuration: on.pull_request.branches: [${effectiveTargetBranch}]`);\n } else {\n logger.info(`WORKFLOW_CONFIGURED: Found workflows that will trigger on pull requests | Target Branch: ${effectiveTargetBranch} | Workflow Count: ${workflowConfig.triggeredWorkflowNames.length}`);\n for (const workflowName of workflowConfig.triggeredWorkflowNames) {\n logger.info(`WORKFLOW_ACTIVE: ${workflowName} | Trigger: pull_request | Target: ${effectiveTargetBranch}`);\n }\n }\n } catch (error: any) {\n // Don't fail the precheck if we can't verify workflows\n // The wait logic will handle it later\n logger.debug(`WORKFLOW_CHECK_FAILED: Unable to verify workflow configuration | Error: ${error.message} | Impact: Will proceed with publish | Note: Wait logic will handle checks later`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('PRECHECK_PREPUBLISH: Checking for prepublishOnly script in package.json | Requirement: Must exist to run pre-flight checks | Expected: clean, lint, build, test');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('PACKAGE_JSON_NOT_FOUND: No package.json in current directory | Mode: dry-run | Impact: Cannot verify prepublishOnly script | Path: ' + packageJsonPath);\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, packageJsonPath);\n packageJson = validatePackageJson(parsed, packageJsonPath);\n\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('PACKAGE_JSON_PARSE_FAILED: Unable to parse package.json | Mode: dry-run | Impact: Cannot verify prepublishOnly script | Path: ' + packageJsonPath + ' | Requirement: Valid JSON format');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('PREPUBLISH_SCRIPT_MISSING: No prepublishOnly script found in package.json | Mode: dry-run | Requirement: Script must exist | Expected Tasks: clean, lint, build, test | Path: ' + packageJsonPath);\n }\n }\n }\n\n // Check required environment variables\n logger.verbose('PRECHECK_ENV_VARS: Checking required environment variables | Source: Configuration and .npmrc | Requirement: All required vars must be set');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`ENV_VARS_REQUIRED: Environment variables needed for publish | Variables: ${allRequiredEnvVars.join(', ')} | Count: ${allRequiredEnvVars.length} | Source: config + .npmrc`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose('ENV_VARS_NONE: No required environment variables specified | Status: No validation needed | Source: config + .npmrc');\n }\n\n logger.info('PRECHECK_COMPLETE: All publish prechecks passed successfully | Status: Ready to proceed | Next: Execute publish workflow');\n};\n\n// Helper: deep-sort object keys for stable comparison\nconst sortObjectKeys = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(sortObjectKeys);\n }\n if (value && typeof value === 'object') {\n const sorted: any = {};\n Object.keys(value).sort().forEach((key) => {\n sorted[key] = sortObjectKeys(value[key]);\n });\n return sorted;\n }\n return value;\n};\n\n// Determine if there are substantive changes compared to the target branch (beyond just version bump)\nconst isReleaseNecessaryComparedToTarget = async (targetBranch: string, isDryRun: boolean): Promise<{ necessary: boolean; reason: string }> => {\n const logger = getDryRunLogger(isDryRun);\n\n // We compare current HEAD branch to the provided target branch\n const currentBranch = await GitHub.getCurrentBranchName();\n\n // Check if target branch exists before trying to compare\n try {\n // Validate target branch exists and is accessible\n await runSecure('git', ['rev-parse', '--verify', targetBranch]);\n } catch (error: any) {\n // Target branch doesn't exist or isn't accessible\n logger.verbose(`RELEASE_CHECK_NO_TARGET: Target branch does not exist or is not accessible | Branch: ${targetBranch} | Action: Proceeding with publish | Reason: First release to this branch`);\n return { necessary: true, reason: `Target branch '${targetBranch}' does not exist; first release to this branch` };\n }\n\n // If branches are identical, nothing to release\n const { stdout: namesStdout } = await runSecure('git', ['diff', '--name-only', `${targetBranch}..${currentBranch}`]);\n const changedFiles = namesStdout.split('\\n').map(s => s.trim()).filter(Boolean);\n\n if (changedFiles.length === 0) {\n // No definitive signal; proceed with publish rather than skipping\n return { necessary: true, reason: 'No detectable changes via diff; proceeding conservatively' };\n }\n\n // If any files changed other than package.json (package-lock.json is gitignored), a release is necessary\n const nonVersionFiles = changedFiles.filter(f => f !== 'package.json');\n if (nonVersionFiles.length > 0) {\n return { necessary: true, reason: `Changed files beyond version bump: ${nonVersionFiles.join(', ')}` };\n }\n\n // Only package.json changed. Verify package.json change is only the version field\n try {\n // Read package.json content from both branches\n const { stdout: basePkgStdout } = await runSecure('git', ['show', `${targetBranch}:package.json`]);\n const { stdout: headPkgStdout } = await runSecure('git', ['show', `${currentBranch}:package.json`]);\n\n const basePkg = validatePackageJson(safeJsonParse(basePkgStdout, `${targetBranch}:package.json`), `${targetBranch}:package.json`);\n const headPkg = validatePackageJson(safeJsonParse(headPkgStdout, `${currentBranch}:package.json`), `${currentBranch}:package.json`);\n\n const { version: _baseVersion, ...baseWithoutVersion } = basePkg;\n const { version: _headVersion, ...headWithoutVersion } = headPkg;\n\n const baseSorted = sortObjectKeys(baseWithoutVersion);\n const headSorted = sortObjectKeys(headWithoutVersion);\n\n const equalExceptVersion = JSON.stringify(baseSorted) === JSON.stringify(headSorted);\n if (equalExceptVersion) {\n const currentVersion = headPkg.version;\n const targetVersion = basePkg.version;\n return {\n necessary: false,\n reason: `No meaningful changes detected:\\n • Current version: ${currentVersion}\\n • Target branch version: ${targetVersion}\\n • Only package.json version field differs\\n\\n To force republish: Add meaningful code changes or use --force (not yet implemented)`\n };\n }\n\n // Other fields changed inside package.json\n return { necessary: true, reason: 'package.json changes beyond version field' };\n } catch (error: any) {\n // Conservative: if we cannot prove it is only a version change, proceed with release\n logger.verbose(`RELEASE_CHECK_COMPARISON_FAILED: Unable to conclusively compare package.json changes | Error: ${error.message} | Action: Proceeding conservatively with publish | Reason: Cannot verify version-only change`);\n return { necessary: true, reason: 'Could not compare package.json safely' };\n }\n};\n\nconst handleTargetBranchSyncRecovery = async (runConfig: Config, targetBranch: string): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n\n logger.info(`BRANCH_SYNC_ATTEMPTING: Initiating sync of target branch with remote | Branch: ${targetBranch} | Remote: origin | Operation: fetch + merge`);\n\n if (isDryRun) {\n logger.info(`BRANCH_SYNC_DRY_RUN: Would attempt to sync branch with remote | Mode: dry-run | Branch: ${targetBranch} | Remote: origin`);\n return;\n }\n\n const syncResult = await safeSyncBranchWithRemote(targetBranch);\n\n if (syncResult.success) {\n logger.info(`BRANCH_SYNC_SUCCESS: Successfully synchronized branch with remote | Branch: ${targetBranch} | Remote: origin | Status: in-sync`);\n logger.info('BRANCH_SYNC_NEXT_STEP: Ready to proceed with publish | Action: Re-run publish command | Branch: ' + targetBranch);\n } else if (syncResult.conflictResolutionRequired) {\n logger.error(`BRANCH_SYNC_CONFLICTS: Sync failed due to merge conflicts | Branch: ${targetBranch} | Status: conflicts-detected | Resolution: Manual intervention required`);\n logger.error('');\n logger.error('CONFLICT_RESOLUTION_STEPS: Manual conflict resolution required:');\n logger.error(` Step 1: Switch to target branch | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull and resolve conflicts | Command: git pull origin ${targetBranch}`);\n logger.error(' Step 3: Commit resolved changes | Command: git commit');\n logger.error(' Step 4: Return to feature branch and retry | Command: kodrdriv publish');\n logger.error('');\n throw new Error(`Target branch '${targetBranch}' has conflicts that require manual resolution.`);\n } else {\n logger.error(`BRANCH_SYNC_FAILED: Sync operation failed | Branch: ${targetBranch} | Error: ${syncResult.error} | Remote: origin`);\n throw new Error(`Failed to sync target branch: ${syncResult.error}`);\n }\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const isDryRun = runConfig.dryRun || false;\n const logger = getDryRunLogger(isDryRun);\n const storage = createStorage();\n\n // Get current branch for branch-dependent targeting\n let currentBranch: string;\n if (isDryRun) {\n currentBranch = 'mock-branch';\n } else {\n currentBranch = await GitHub.getCurrentBranchName();\n }\n\n // Determine target branch EARLY (before expensive operations) for early necessity check\n let targetBranch = runConfig.publish?.targetBranch || 'main';\n let branchDependentVersioning = false;\n\n // Check for branches configuration\n if (runConfig.branches && runConfig.branches[currentBranch]) {\n branchDependentVersioning = true;\n\n const branchConfig = runConfig.branches[currentBranch];\n\n if (branchConfig.targetBranch) {\n targetBranch = branchConfig.targetBranch;\n }\n\n logger.info(`BRANCH_DEPENDENT_TARGETING: Branch-specific configuration active | Source: ${currentBranch} | Target: ${targetBranch} | Feature: Branch-dependent versioning and targeting`);\n logger.info(`BRANCH_CONFIGURATION_SOURCE: Current branch | Branch: ${currentBranch} | Type: source`);\n logger.info(`BRANCH_CONFIGURATION_TARGET: Target branch for publish | Branch: ${targetBranch} | Type: destination`);\n\n // Look at target branch config to show version strategy\n const targetBranchConfig = runConfig.branches[targetBranch];\n if (targetBranchConfig?.version) {\n const versionType = targetBranchConfig.version.type;\n const versionTag = targetBranchConfig.version.tag;\n const versionIncrement = targetBranchConfig.version.increment;\n\n logger.info(`VERSION_STRATEGY: Target branch version configuration | Branch: ${targetBranch} | Type: ${versionType} | Tag: ${versionTag || 'none'} | Increment: ${versionIncrement ? 'enabled' : 'disabled'}`);\n }\n } else {\n logger.debug(`BRANCH_TARGETING_DEFAULT: No branch-specific configuration found | Branch: ${currentBranch} | Action: Using default target | Target: ${targetBranch}`);\n }\n\n // Handle --sync-target flag\n if (runConfig.publish?.syncTarget) {\n await handleTargetBranchSyncRecovery(runConfig, targetBranch);\n return; // Exit after sync operation\n }\n\n // OPTIMIZATION: Early check if release is necessary BEFORE expensive operations\n // This can save 2-4 minutes for packages with no changes by skipping:\n // - git fetch (~30-60s)\n // - current branch sync (~30-60s)\n // - target branch setup (~30-60s)\n // - prechecks (~30-60s)\n if (!isDryRun) {\n logger.info('RELEASE_NECESSITY_CHECK_EARLY: Quick check if release is required | Comparison: current branch vs target | Target: ' + targetBranch + ' | Purpose: Skip expensive operations for unchanged packages');\n try {\n const necessity = await isReleaseNecessaryComparedToTarget(targetBranch, isDryRun);\n if (!necessity.necessary) {\n logger.info(`\\nRELEASE_SKIPPED_EARLY: No meaningful changes detected, skipping publish | Reason: ${necessity.reason} | Target: ${targetBranch} | Time saved: ~2-4 minutes`);\n // Emit a machine-readable marker so tree mode can detect skip and avoid propagating versions\n // CRITICAL: Use console.log to write to stdout (logger.info goes to stderr via winston)\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIPPED');\n return;\n } else {\n logger.verbose(`RELEASE_PROCEEDING_EARLY: Meaningful changes detected, continuing with full publish workflow | Reason: ${necessity.reason} | Target: ${targetBranch}`);\n }\n } catch (error: any) {\n // If early check fails (e.g., target branch doesn't exist yet), continue with normal flow\n logger.verbose(`RELEASE_NECESSITY_CHECK_EARLY_SKIPPED: Unable to perform early check | Error: ${error.message} | Action: Continuing with full workflow | Reason: Target branch may not exist yet or other setup needed`);\n }\n }\n\n // Now perform expensive operations only if we're proceeding with publish\n if (!isDryRun) {\n // Fetch latest remote information to avoid conflicts\n logger.info('GIT_FETCH_STARTING: Fetching latest remote information | Remote: origin | Purpose: Avoid conflicts during publish | Command: git fetch origin');\n try {\n await run('git fetch origin');\n logger.info('GIT_FETCH_SUCCESS: Successfully fetched latest remote information | Remote: origin | Status: up-to-date');\n } catch (error: any) {\n logger.warn(`GIT_FETCH_FAILED: Unable to fetch from remote | Remote: origin | Error: ${error.message} | Impact: May cause conflicts if remote has changes`);\n }\n\n // Sync current branch with remote to avoid conflicts\n logger.info(`CURRENT_BRANCH_SYNC: Synchronizing current branch with remote | Branch: ${currentBranch} | Remote: origin | Purpose: Avoid conflicts during publish`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${currentBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n // Use explicit fetch+merge instead of pull to avoid git config conflicts\n await runGitWithLock(process.cwd(), async () => {\n await run(`git fetch origin ${currentBranch}`);\n await run(`git merge origin/${currentBranch} --no-edit`);\n }, `sync ${currentBranch}`);\n logger.info(`CURRENT_BRANCH_SYNCED: Successfully synchronized current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Status: in-sync`);\n } else {\n logger.info(`REMOTE_BRANCH_NOT_FOUND: No remote branch exists | Branch: ${currentBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (error: any) {\n if (error.message && error.message.includes('CONFLICT')) {\n logger.error(`MERGE_CONFLICTS_DETECTED: Conflicts found when syncing current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Status: conflicts-require-resolution`);\n logger.error(`CONFLICT_RESOLUTION_REQUIRED: Manual intervention needed to resolve conflicts and continue:`);\n logger.error(` Step 1: Resolve conflicts in affected files`);\n logger.error(` Step 2: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 3: Commit resolution | Command: git commit`);\n logger.error(` Step 4: Retry publish | Command: kodrdriv publish`);\n throw new Error(`Merge conflicts detected when syncing ${currentBranch} with remote. Please resolve conflicts manually.`);\n } else {\n logger.warn(`CURRENT_BRANCH_SYNC_FAILED: Unable to sync current branch with remote | Branch: ${currentBranch} | Remote: origin/${currentBranch} | Error: ${error.message} | Impact: May cause issues during publish`);\n }\n }\n }\n\n // Check if target branch exists and create it if needed\n logger.info(`TARGET_BRANCH_CHECK: Verifying target branch existence | Branch: ${targetBranch} | Action: Create if missing | Source: Current HEAD`);\n if (isDryRun) {\n logger.info(`TARGET_BRANCH_CHECK: Would verify target branch exists and create if needed | Mode: dry-run | Branch: ${targetBranch}`);\n } else {\n const targetBranchExists = await localBranchExists(targetBranch);\n if (!targetBranchExists) {\n // Check if it exists on remote\n const remoteExists = await remoteBranchExists(targetBranch);\n\n if (remoteExists) {\n logger.info(`TARGET_BRANCH_TRACKING: Target branch exists on remote but not locally, tracking origin/${targetBranch} | Branch: ${targetBranch}`);\n try {\n await runGitWithLock(process.cwd(), async () => {\n // Create local branch tracking remote\n await runSecure('git', ['branch', targetBranch, `origin/${targetBranch}`]);\n logger.info(`TARGET_BRANCH_CREATED: Successfully created local tracking branch | Branch: ${targetBranch} | Source: origin/${targetBranch}`);\n }, `track target branch ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to track target branch '${targetBranch}': ${error.message}`);\n }\n } else {\n logger.info(`TARGET_BRANCH_CREATING: Target branch does not exist locally or on remote, creating from current branch | Branch: ${targetBranch} | Source: HEAD | Remote: origin`);\n try {\n // Wrap git branch and push operations with lock\n await runGitWithLock(process.cwd(), async () => {\n // Create the target branch from the current HEAD\n await runSecure('git', ['branch', targetBranch, 'HEAD']);\n logger.info(`TARGET_BRANCH_CREATED: Successfully created target branch locally | Branch: ${targetBranch} | Source: HEAD`);\n\n // Push the new branch to origin\n await runSecure('git', ['push', 'origin', targetBranch]);\n logger.info(`TARGET_BRANCH_PUSHED: Successfully pushed new target branch to remote | Branch: ${targetBranch} | Remote: origin/${targetBranch}`);\n }, `create and push target branch ${targetBranch}`);\n } catch (error: any) {\n throw new Error(`Failed to create target branch '${targetBranch}': ${error.message}`);\n }\n }\n } else {\n logger.info(`TARGET_BRANCH_EXISTS: Target branch already exists locally | Branch: ${targetBranch} | Status: ready`);\n }\n }\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig, targetBranch);\n\n logger.info('RELEASE_PROCESS_STARTING: Initiating release workflow | Target: ' + targetBranch + ' | Phase: dependency updates and version management');\n\n\n let pr: PullRequest | null = null;\n let newVersion: string = ''; // Will be set during version determination phase\n\n if (isDryRun) {\n logger.info('PR_CHECK: Would check for existing pull request | Mode: dry-run | Action: Skip PR lookup');\n logger.info('PR_ASSUMPTION: Assuming no existing PR found | Mode: dry-run | Purpose: Demo workflow');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`PR_FOUND: Existing pull request detected for current branch | URL: ${pr.html_url} | Status: open`);\n \n // Even when PR exists, we need to determine the version for tagging later\n logger.info('VERSION_DETERMINATION: Determining version from current package.json | Purpose: Tag creation after merge');\n if (!isDryRun) {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, 'package.json');\n const packageJson = validatePackageJson(parsed, 'package.json');\n newVersion = packageJson.version;\n logger.info(`VERSION_DETECTED: Version determined from package.json | Version: ${newVersion} | Source: current working branch`);\n } else {\n newVersion = '1.0.0'; // Mock version for dry run\n }\n } else {\n logger.info('PR_NOT_FOUND: No open pull request exists for current branch | Action: Starting new release publishing process | Next: Prepare dependencies and version');\n\n // STEP 1: Prepare for release (update dependencies and run prepublish checks) with NO version bump yet\n logger.verbose('RELEASE_PREP_STARTING: Preparing for release | Phase: dependency management | Action: Switch from workspace to remote dependencies | Version Bump: Not yet applied');\n\n // Clean up any npm link references before updating dependencies\n if (!runConfig.publish?.skipLinkCleanup) {\n logger.verbose('NPM_LINK_CHECK: Scanning package-lock.json for npm link references | File: package-lock.json | Purpose: Remove development symlinks before publish');\n await cleanupNpmLinkReferences(isDryRun);\n } else {\n logger.verbose('NPM_LINK_CLEANUP_SKIPPED: Skipping package-lock cleanup (tree publish workflow) | Reason: package-lock.json not included in npm publish');\n }\n\n // Update inter-project dependencies if --update-deps flag is present\n const updateDepsScope = runConfig.publish?.updateDeps;\n if (updateDepsScope) {\n logger.info(`INTER_PROJECT_DEPS_UPDATE: Updating inter-project dependencies | Scope: ${updateDepsScope} | Type: inter-project | Command: kodrdriv updates`);\n const Updates = await import('@grunnverk/commands-tree');\n const updatesConfig: Config = {\n ...runConfig,\n dryRun: isDryRun,\n updates: {\n scope: updateDepsScope,\n interProject: true\n }\n };\n await Updates.updates(updatesConfig);\n }\n\n logger.verbose('DEPS_UPDATE_REGISTRY: Updating dependencies to latest versions from npm registry | Source: registry | Target: package.json');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`DEPS_UPDATE_PATTERNS: Updating dependencies matching specified patterns | Patterns: ${updatePatterns.join(', ')} | Count: ${updatePatterns.length} | Command: npm update`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`npm update ${patternsArg} --legacy-peer-deps`, isDryRun);\n } else {\n logger.verbose('DEPS_UPDATE_ALL: No dependency patterns specified, updating all dependencies | Scope: all | Command: npm update');\n await runWithDryRunSupport('npm update --legacy-peer-deps', isDryRun);\n }\n\n logger.info('PREPUBLISH_SCRIPT_RUNNING: Executing prepublishOnly script | Script: prepublishOnly | Purpose: Run pre-flight checks (clean, lint, build, test)');\n await runWithDryRunSupport('npm run prepublishOnly', isDryRun, {}, true); // Use inherited stdio\n\n // STEP 2: Commit dependency updates if any (still no version bump)\n logger.verbose('DEPS_STAGING: Staging dependency updates for commit | Files: package.json | Command: git add | Note: Version bump not yet applied, package-lock.json ignored');\n // Skip package-lock.json as it's in .gitignore to avoid private registry refs\n const filesToStage = 'package.json';\n\n // Wrap git operations with repository lock to prevent .git/index.lock conflicts\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git add ${filesToStage}`, isDryRun);\n }, 'stage dependency updates');\n\n logger.verbose('DEPS_COMMIT_CHECK: Checking for staged dependency updates | Command: git status | Purpose: Determine if commit needed');\n if (isDryRun) {\n logger.verbose('DEPS_COMMIT_DRY_RUN: Would create dependency update commit if changes are staged | Mode: dry-run');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('DEPS_COMMIT_CREATING: Staged dependency changes detected, creating commit | Files: ' + filesToStage + ' | Action: Execute commit command');\n // Commit also needs git lock\n await runGitWithLock(process.cwd(), async () => {\n await Commit.commit(runConfig);\n }, 'commit dependency updates');\n } else {\n logger.verbose('DEPS_COMMIT_SKIPPED: No dependency changes to commit | Files: ' + filesToStage + ' | Action: Skipping commit step');\n }\n }\n\n // STEP 3: Pre-merge target into working (REMOVED)\n // This step was previously used to merge target branch into working before creating PR.\n // It's no longer needed because:\n // 1. check-development already ensures branches are in sync\n // 2. Post-publish sync handles branch synchronization\n // 3. Squash merge workflow makes pre-merge unnecessary\n // If branches have diverged, the PR will show conflicts that need manual resolution.\n\n // STEP 4: Determine and set target version AFTER checks, dependency commit, and target branch merge\n logger.info('Determining target version...');\n\n if (isDryRun) {\n logger.info('Would determine target version and update package.json');\n newVersion = '1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const parsed = safeJsonParse(packageJsonContents, 'package.json');\n const packageJson = validatePackageJson(parsed, 'package.json');\n const currentVersion = packageJson.version;\n\n let proposedVersion: string;\n let finalTargetBranch = targetBranch;\n\n if (branchDependentVersioning && runConfig.branches) {\n // Use branch-dependent versioning logic\n const branchDependentResult = await calculateBranchDependentVersion(\n currentVersion,\n currentBranch,\n runConfig.branches,\n targetBranch\n );\n proposedVersion = branchDependentResult.version;\n finalTargetBranch = branchDependentResult.targetBranch;\n\n logger.info(`VERSION_BRANCH_DEPENDENT_CALCULATED: Branch-dependent version calculated | Current: ${currentVersion} | Proposed: ${proposedVersion} | Strategy: branch-dependent`);\n logger.info(`TARGET_BRANCH_FINAL: Final target branch determined | Branch: ${finalTargetBranch} | Source: branch-dependent config`);\n\n // Update targetBranch for the rest of the function\n targetBranch = finalTargetBranch;\n } else {\n // Use existing logic for backward compatibility\n const targetVersionInput = runConfig.publish?.targetVersion || 'patch';\n proposedVersion = calculateTargetVersion(currentVersion, targetVersionInput);\n }\n\n const targetTagName = `v${proposedVersion}`;\n const tagExists = await checkIfTagExists(targetTagName);\n\n // Smart tag conflict handling\n if (tagExists) {\n const { getNpmPublishedVersion, getTagInfo } = await import('@grunnverk/core');\n\n logger.warn(`TAG_ALREADY_EXISTS: Tag already exists in repository | Tag: ${targetTagName} | Status: conflict | Action: Check npm registry`);\n\n // Check if this version is published on npm\n const npmVersion = await getNpmPublishedVersion(packageJson.name);\n const tagInfo = await getTagInfo(targetTagName);\n\n if (npmVersion === proposedVersion) {\n // Version is already published on npm\n logger.info(`VERSION_ALREADY_PUBLISHED: Version already published on npm registry | Version: ${proposedVersion} | Status: published | Action: Skipping`);\n logger.info(`PUBLISH_SKIPPED_DUPLICATE: Skipping publish operation | Reason: Package already at target version | Version: ${proposedVersion}`);\n logger.info('');\n logger.info('REPUBLISH_OPTIONS: Options if you need to republish:');\n logger.info(` Option 1: Bump version | Command: npm version patch (or minor/major)`);\n logger.info(` Option 2: Re-run publish | Command: kodrdriv publish`);\n logger.info('');\n\n if (runConfig.publish?.skipAlreadyPublished) {\n logger.info('PUBLISH_SKIPPED_FLAG: Skipping package due to flag | Flag: --skip-already-published | Version: ' + proposedVersion + ' | Status: skipped');\n // Emit skip marker for tree mode detection with reason\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIPPED');\n // eslint-disable-next-line no-console\n console.log('KODRDRIV_PUBLISH_SKIP_REASON:already-published');\n return; // Exit without error\n } else {\n throw new Error(`Version ${proposedVersion} already published. Use --skip-already-published to continue.`);\n }\n } else {\n // Tag exists but version not on npm - likely failed previous publish\n logger.warn('');\n logger.warn('PUBLISH_SITUATION_ANALYSIS: Analyzing publish conflict situation | Tag: ' + targetTagName + ' | npm: ' + (npmVersion || 'not published'));\n logger.warn(`PUBLISH_ANALYSIS_TAG_EXISTS: Tag exists locally | Tag: ${targetTagName} | Commit: ${tagInfo?.commit?.substring(0, 8)}`);\n logger.warn(`PUBLISH_ANALYSIS_NPM_STATUS: npm registry status | Version: ${npmVersion || 'not published'} | Status: ${npmVersion ? 'published' : 'missing'}`);\n logger.warn(`PUBLISH_ANALYSIS_CONCLUSION: Previous publish likely failed after tag creation | Reason: Tag exists but not on npm | Resolution: Recovery needed`);\n logger.warn('');\n logger.warn('PUBLISH_RECOVERY_OPTIONS: Recovery options available:');\n logger.warn(' OPTION_1_FORCE: Force republish by deleting tag | Command: kodrdriv publish --force-republish');\n logger.warn(' OPTION_2_BUMP: Skip version and bump | Command: npm version patch && kodrdriv publish');\n logger.warn(' OPTION_3_MANUAL: Manually delete tag:');\n logger.warn(` Command: git tag -d ${targetTagName}`);\n logger.warn(` Command: git push origin :refs/tags/${targetTagName}`);\n logger.warn('');\n\n if (runConfig.publish?.forceRepublish) {\n logger.info('PUBLISH_FORCE_REPUBLISH: Force republish mode enabled | Action: Deleting existing tag | Tag: ' + targetTagName + ' | Purpose: Allow republish');\n\n if (!isDryRun) {\n const { runSecure } = await import('@grunnverk/git-tools');\n\n // Delete local tag\n try {\n await runSecure('git', ['tag', '-d', targetTagName]);\n logger.info(`TAG_DELETED_LOCAL: Deleted local tag | Tag: ${targetTagName} | Status: removed-local`);\n } catch (error: any) {\n logger.debug(`Could not delete local tag: ${error.message}`);\n }\n\n // Delete remote tag\n try {\n await runSecure('git', ['push', 'origin', `:refs/tags/${targetTagName}`]);\n logger.info(`TAG_DELETED_REMOTE: Deleted remote tag | Tag: ${targetTagName} | Remote: origin | Status: removed-remote`);\n } catch (error: any) {\n logger.debug(`Could not delete remote tag: ${error.message}`);\n }\n\n logger.info('PUBLISH_TAG_CLEANUP_COMPLETE: Tag deleted successfully | Status: ready-for-publish | Next: Continue with publish workflow');\n } else {\n logger.info('Would delete tags and continue with publish');\n }\n } else {\n throw new Error(`Tag ${targetTagName} already exists. Use --force-republish to override.`);\n }\n }\n }\n\n if (runConfig.publish?.interactive) {\n newVersion = await confirmVersionInteractively(currentVersion, proposedVersion, runConfig.publish?.targetVersion);\n const confirmedTagName = `v${newVersion}`;\n const confirmedTagExists = await checkIfTagExists(confirmedTagName);\n\n if (confirmedTagExists) {\n const { getNpmPublishedVersion } = await import('@grunnverk/core');\n const npmVersion = await getNpmPublishedVersion(packageJson.name);\n\n if (npmVersion === newVersion) {\n throw new Error(`Tag ${confirmedTagName} already exists and version is published on npm. Please choose a different version.`);\n } else if (!runConfig.publish?.forceRepublish) {\n throw new Error(`Tag ${confirmedTagName} already exists. Use --force-republish to override.`);\n }\n // If forceRepublish is set, we'll continue (tag will be deleted later)\n }\n } else {\n newVersion = proposedVersion;\n }\n\n logger.info(`Bumping version from ${currentVersion} to ${newVersion}`);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version updated in package.json: ${newVersion}`);\n }\n\n // STEP 5: Commit version bump as a separate commit\n logger.verbose('Staging version bump for commit');\n // Skip package-lock.json as it's in .gitignore to avoid private registry refs\n const filesToStageVersionBump = 'package.json';\n\n // Wrap git operations with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git add ${filesToStageVersionBump}`, isDryRun);\n }, 'stage version bump');\n\n if (isDryRun) {\n logger.verbose('Would create version bump commit');\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Creating version bump commit...');\n await runGitWithLock(process.cwd(), async () => {\n await Commit.commit(runConfig);\n }, 'commit version bump');\n } else {\n logger.verbose('No version changes to commit.');\n }\n }\n\n logger.info('Generating release notes...');\n\n // Use the existing currentBranch variable for tag detection\n logger.debug(`Current branch for release notes: ${currentBranch}`);\n\n // Create a modified config for release notes generation that includes the publish --from, --interactive, and --from-main options\n const releaseConfig = { ...runConfig };\n releaseConfig.release = {\n ...runConfig.release,\n currentBranch: currentBranch, // Pass current branch\n version: newVersion, // Pass the target release version explicitly\n ...(runConfig.publish?.from && { from: runConfig.publish.from }),\n ...(runConfig.publish?.interactive && { interactive: runConfig.publish.interactive }),\n ...(runConfig.publish?.fromMain && { fromMain: runConfig.publish.fromMain })\n };\n if (runConfig.publish?.from) {\n logger.verbose(`Using custom 'from' reference for release notes: ${runConfig.publish.from}`);\n }\n if (runConfig.publish?.interactive) {\n logger.verbose('Interactive mode enabled for release notes generation');\n }\n if (runConfig.publish?.fromMain) {\n logger.verbose('Forcing comparison against main branch for release notes');\n }\n // Log self-reflection settings for debugging\n if (releaseConfig.release?.selfReflection) {\n logger.verbose('Self-reflection enabled for release notes generation');\n }\n\n const releaseSummary = await Release.execute(releaseConfig);\n\n if (isDryRun) {\n logger.info('Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info('Pushing to origin...');\n // Get current branch name and push explicitly to avoid pushing to wrong remote/branch\n const branchName = await GitHub.getCurrentBranchName();\n\n // Wrap git push with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git push origin ${branchName}`, isDryRun);\n }, `push ${branchName}`);\n\n logger.info('Creating pull request...');\n if (isDryRun) {\n logger.info('Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: rawCommitTitle } = await run('git log -1 --pretty=%B');\n\n // Apply stop-context filtering to PR title and body\n const commitTitle = filterContent(rawCommitTitle, runConfig.stopContext).filtered;\n const prBody = filterContent('Automated release PR.', runConfig.stopContext).filtered;\n\n pr = await GitHub.createPullRequest(commitTitle, prBody, branchName, targetBranch);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url} (${branchName} → ${targetBranch})`);\n }\n }\n\n logger.info(`Waiting for PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Check if we already know from prechecks that no workflows will trigger\n let shouldSkipWait = false;\n try {\n // TODO: Re-enable when checkWorkflowConfiguration is exported from github-tools\n // const workflowConfig = await GitHub.checkWorkflowConfiguration(targetBranch);\n const workflowConfig = {\n hasWorkflows: true,\n hasPullRequestTriggers: true,\n workflowCount: 0,\n triggeredWorkflowNames: [] as string[]\n };\n if (!workflowConfig.hasWorkflows || !workflowConfig.hasPullRequestTriggers) {\n logger.info('PUBLISH_CHECK_WAIT_SKIPPED: Skipping check wait | Reason: No workflows configured for PR | Status: no-workflows | Next: Proceed with merge');\n shouldSkipWait = true;\n }\n } catch (error: any) {\n // If we can't verify, proceed with waiting to be safe\n logger.debug(`Could not verify workflow configuration for wait skip: ${error.message}`);\n }\n\n if (!shouldSkipWait) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || KODRDRIV_DEFAULTS.publish.checksTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n try {\n await GitHub.mergePullRequest(pr!.number, mergeMethod, false); // Don't delete branch\n } catch (error: any) {\n // Check if this is a merge conflict error\n if (error.message && (\n error.message.includes('not mergeable') ||\n error.message.includes('Pull Request is not mergeable') ||\n error.message.includes('merge conflict')\n )) {\n logger.error(`PR_MERGE_CONFLICTS: Pull request has merge conflicts | PR Number: ${pr!.number} | Status: conflicts | Resolution: Manual intervention required`);\n logger.error('');\n logger.error('PR_CONFLICT_RESOLUTION: Steps to resolve conflicts:');\n logger.error(` Step 1: Visit pull request | URL: ${pr!.html_url}`);\n logger.error(' Step 2: Resolve merge conflicts | Method: GitHub UI or local');\n logger.error(' Step 3: Re-run publish command | Command: kodrdriv publish');\n logger.error('');\n logger.error('PR_AUTO_CONTINUE: Command will auto-detect existing PR | Behavior: Continues from where it left off | No re-creation needed');\n throw new Error(`Merge conflicts detected in PR #${pr!.number}. Please resolve conflicts and re-run the command.`);\n } else {\n // Re-throw other merge errors\n throw error;\n }\n }\n }\n\n // Switch to target branch and pull latest changes\n logger.info(`Checking out target branch: ${targetBranch}...`);\n\n // Check for uncommitted changes and stash them if necessary\n let hasStashedChanges = false;\n if (!isDryRun) {\n const { stdout: statusOutput } = await runSecure('git', ['status', '--porcelain']);\n if (statusOutput.trim()) {\n logger.info('PUBLISH_STASH_SAVING: Stashing uncommitted changes before checkout | Command: git stash push | Purpose: Protect changes during branch switch');\n await runSecure('git', ['stash', 'push', '-m', 'kodrdriv: stash before checkout target branch']);\n hasStashedChanges = true;\n logger.info('PUBLISH_STASH_SUCCESS: Successfully stashed uncommitted changes | Status: saved | Name: kodrdriv stash');\n }\n }\n\n try {\n // Wrap git checkout and pull with lock\n await runGitWithLock(process.cwd(), async () => {\n await runWithDryRunSupport(`git checkout ${targetBranch}`, isDryRun);\n }, `checkout ${targetBranch}`);\n\n // Sync target branch with remote to avoid conflicts during PR creation\n if (!isDryRun) {\n logger.info(`PUBLISH_TARGET_SYNCING: Syncing target branch with remote | Branch: ${targetBranch} | Remote: origin | Purpose: Avoid PR conflicts`);\n try {\n const remoteExists = await run(`git ls-remote --exit-code --heads origin ${targetBranch}`).then(() => true).catch(() => false);\n\n if (remoteExists) {\n await runGitWithLock(process.cwd(), async () => {\n await run(`git fetch origin ${targetBranch}`);\n await run(`git merge origin/${targetBranch} --no-edit`);\n }, `sync ${targetBranch}`);\n logger.info(`PUBLISH_TARGET_SYNCED: Successfully synced target with remote | Branch: ${targetBranch} | Remote: origin | Status: in-sync`);\n } else {\n logger.info(`PUBLISH_TARGET_NO_REMOTE: No remote target branch found | Branch: ${targetBranch} | Remote: origin | Action: Will be created on first push`);\n }\n } catch (syncError: any) {\n if (syncError.message && syncError.message.includes('CONFLICT')) {\n logger.error(`PUBLISH_SYNC_CONFLICTS: Merge conflicts during target sync | Branch: ${targetBranch} | Remote: origin | Status: conflicts-detected`);\n logger.error(`PUBLISH_SYNC_RESOLUTION: Manual conflict resolution steps:`);\n logger.error(` Step 1: Checkout target | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull and merge | Command: git pull origin ${targetBranch}`);\n logger.error(` Step 3: Resolve conflicts in files`);\n logger.error(` Step 4: Stage resolved files | Command: git add <resolved-files>`);\n logger.error(` Step 5: Complete merge | Command: git commit`);\n logger.error(` Step 6: Return to branch | Command: git checkout ${currentBranch}`);\n logger.error(` Step 7: Resume publish | Command: kodrdriv publish`);\n throw syncError;\n } else {\n logger.warn(`PUBLISH_SYNC_WARNING: Could not sync target with remote | Branch: ${targetBranch} | Remote: origin | Error: ${syncError.message}`);\n // Continue with publish process, but log the warning\n }\n }\n } else {\n logger.info(`Would sync ${targetBranch} with remote to avoid PR conflicts`);\n }\n } catch (error: any) {\n // Check if this is a merge conflict or sync issue\n if (!isDryRun && (error.message.includes('conflict') ||\n error.message.includes('CONFLICT') ||\n error.message.includes('diverged') ||\n error.message.includes('non-fast-forward'))) {\n\n logger.error(`PUBLISH_TARGET_SYNC_FAILED: Failed to sync target branch with remote | Branch: ${targetBranch} | Remote: origin | Impact: Cannot proceed safely`);\n logger.error('');\n logger.error('PUBLISH_SYNC_RECOVERY_OPTIONS: Available recovery options:');\n logger.error(` OPTION_1_AUTO: Attempt automatic resolution | Command: kodrdriv publish --sync-target`);\n logger.error(` OPTION_2_MANUAL: Manually resolve conflicts:`);\n logger.error(` Step 1: Checkout target | Command: git checkout ${targetBranch}`);\n logger.error(` Step 2: Pull from remote | Command: git pull origin ${targetBranch}`);\n logger.error(` Step 3: Resolve conflicts and commit`);\n logger.error(` Step 4: Re-run publish | Command: kodrdriv publish`);\n logger.error('');\n logger.error('PUBLISH_STOPPED_SAFETY: Publish process stopped | Reason: Prevent data loss | Status: safe-to-recover');\n\n throw new Error(`Target branch '${targetBranch}' sync failed. Use recovery options above to resolve.`);\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n\n // Restore stashed changes if we stashed them\n if (hasStashedChanges) {\n logger.info('PUBLISH_STASH_RESTORING: Restoring previously stashed changes | Command: git stash pop | Purpose: Restore working directory state');\n try {\n await runSecure('git', ['stash', 'pop']);\n logger.info('PUBLISH_STASH_RESTORED: Successfully restored stashed changes | Status: restored | Stash: removed');\n } catch (stashError: any) {\n logger.warn(`PUBLISH_STASH_RESTORE_FAILED: Could not restore stashed changes | Error: ${stashError.message} | Impact: Changes still in stash`);\n logger.warn('PUBLISH_STASH_AVAILABLE: Changes available in git stash | Command: git stash list | Purpose: View and restore manually');\n }\n }\n\n // Read the version from target branch for tag creation\n // After squash merge, this should match the version we set on the working branch\n if (!isDryRun) {\n const targetPackageJsonContents = await storage.readFile('package.json', 'utf-8');\n const targetPackageJson = safeJsonParse(targetPackageJsonContents, 'package.json');\n const targetVersion = targetPackageJson.version;\n \n logger.info(`PUBLISH_VERSION_TARGET: Version on target branch after merge | Version: ${targetVersion} | Branch: ${targetBranch}`);\n \n // Use the version from target branch for tagging (should match newVersion from working branch)\n newVersion = targetVersion;\n }\n\n // Now create and push the tag on the target branch\n logger.info('Creating release tag...');\n let tagName: string;\n if (isDryRun) {\n logger.info('Would read package.json version and create git tag');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n // Use the newVersion we just set instead of reading from package.json\n // This ensures consistency even if the file read fails\n tagName = `v${newVersion}`;\n\n // Check if tag already exists locally\n try {\n // Validate tag name to prevent injection\n if (!validateGitRef(tagName)) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n const { stdout } = await runSecure('git', ['tag', '-l', tagName]);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['tag', tagName]);\n }, `create tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n } catch (error) {\n // If git tag -l fails, create the tag anyway\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['tag', tagName]);\n }, `create tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n\n // Check if tag exists on remote before pushing\n let tagWasPushed = false;\n try {\n const { stdout } = await runSecure('git', ['ls-remote', 'origin', `refs/tags/${tagName}`]);\n if (stdout.trim()) {\n logger.info(`Tag ${tagName} already exists on remote, skipping push`);\n } else {\n await runGitWithLock(process.cwd(), async () => {\n await runSecure('git', ['push', 'origin', tagName]);\n }, `push tag ${tagName}`);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n }\n } catch (error) {\n // If ls-remote fails, try to push anyway (might be a new remote)\n try {\n await runSecure('git', ['push', 'origin', tagName]);\n logger.info(`Pushed tag to remote: ${tagName}`);\n tagWasPushed = true;\n } catch (pushError: any) {\n if (pushError.message && pushError.message.includes('already exists')) {\n logger.info(`Tag ${tagName} already exists on remote, continuing...`);\n } else {\n throw pushError;\n }\n }\n }\n\n // If we just pushed a new tag, wait for GitHub to process it\n if (tagWasPushed) {\n logger.verbose('Waiting for GitHub to process the pushed tag...');\n await new Promise(resolve => setTimeout(resolve, 5000)); // 5 second delay\n }\n }\n\n logger.info('Creating GitHub release...');\n if (isDryRun) {\n logger.info('Would read package.json version and create GitHub release with retry logic');\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('Would close milestone for released version');\n } else {\n logger.info('Would skip milestone closure (--no-milestones)');\n }\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n\n // Create release with retry logic to handle GitHub tag processing delays\n let retries = 3;\n while (retries > 0) {\n try {\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n logger.info(`GitHub release created successfully for tag: ${tagName}`);\n\n // Close milestone for this version if enabled\n const milestonesEnabled = !runConfig.publish?.noMilestones;\n if (milestonesEnabled) {\n logger.info('PUBLISH_MILESTONE_CLOSING: Closing milestone for released version | Action: Close GitHub milestone | Purpose: Mark release complete');\n const version = tagName.replace(/^v/, ''); // Remove 'v' prefix if present\n await GitHub.closeMilestoneForVersion(version);\n } else {\n logger.debug('Milestone integration disabled via --no-milestones');\n }\n\n break; // Success - exit retry loop\n } catch (error: any) {\n // Check if this is a tag-not-found error that we can retry\n const isTagNotFoundError = error.message && (\n error.message.includes('not found') ||\n error.message.includes('does not exist') ||\n error.message.includes('Reference does not exist')\n );\n\n if (isTagNotFoundError && retries > 1) {\n logger.verbose(`Tag ${tagName} not yet available on GitHub, retrying in 3 seconds... (${retries - 1} retries left)`);\n await new Promise(resolve => setTimeout(resolve, 3000));\n retries--;\n } else if (isTagNotFoundError) {\n // Tag not found error and we're out of retries\n throw new Error(`Tag ${tagName} was not found on GitHub after ${3 - retries + 1} attempts. This may indicate a problem with tag creation or GitHub synchronization.`);\n } else {\n // Not a tag-not-found error - re-throw the original error\n throw error;\n }\n }\n }\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info('Waiting for release workflows...');\n if (isDryRun) {\n logger.info('Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || KODRDRIV_DEFAULTS.publish.releaseWorkflowsTimeout;\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n // Get workflow names - either from config or auto-detect\n let workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n if (!workflowNames || workflowNames.length === 0) {\n logger.info('No specific workflow names configured, auto-detecting workflows triggered by release events...');\n try {\n workflowNames = await GitHub.getWorkflowsTriggeredByRelease();\n if (workflowNames.length === 0) {\n logger.info('No workflows found that are triggered by release events.');\n } else {\n logger.info(`Auto-detected release workflows: ${workflowNames.join(', ')}`);\n }\n } catch (error: any) {\n logger.warn(`Failed to auto-detect release workflows: ${error.message}`);\n workflowNames = undefined; // Fall back to monitoring all workflows\n }\n }\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose('Skipping waiting for release workflows (disabled in config).');\n }\n\n // Switch back to source branch and sync with target\n logger.info('');\n logger.info(`PUBLISH_POST_SYNC: Syncing source branch with target after publish | Purpose: Keep branches synchronized | Strategy: Reset and force push`);\n await runWithDryRunSupport(`git checkout ${currentBranch}`, isDryRun);\n\n if (!isDryRun) {\n // Sync target into source\n // Note: With squash merging, fast-forward will fail because commit histories diverge\n if (mergeMethod === 'squash') {\n // For squash merges, reset to target branch to avoid conflicts\n // The squash merge created a single commit on target that represents all source commits\n logger.info(`Resetting ${currentBranch} to ${targetBranch} (squash merge)...`);\n await run(`git reset --hard ${targetBranch}`);\n logger.info(`PUBLISH_BRANCH_RESET: Reset source branch to target | Source: ${currentBranch} | Target: ${targetBranch} | Status: synchronized`);\n\n // After squash merge and reset, we need to force push\n // This is safe because we just merged to main and are syncing working branch\n logger.info(`PUBLISH_FORCE_PUSHING: Force pushing synchronized branch | Branch: ${currentBranch} | Remote: origin | Purpose: Complete post-publish sync`);\n\n try {\n // Verify that remote working branch is ancestor of main (safety check)\n try {\n await run(`git fetch origin ${currentBranch}`, { suppressErrorLogging: true });\n await run(`git merge-base --is-ancestor origin/${currentBranch} ${targetBranch}`, { suppressErrorLogging: true });\n logger.verbose(`✓ Safety check passed: origin/${currentBranch} is ancestor of ${targetBranch}`);\n } catch {\n // Remote branch might not exist yet, or already in sync - both OK\n logger.verbose(`Remote ${currentBranch} does not exist or is already synced`);\n }\n\n // Use --force-with-lease for safer force push\n await run(`git push --force-with-lease origin ${currentBranch}`);\n logger.info(`PUBLISH_FORCE_PUSH_SUCCESS: Successfully force pushed to remote | Branch: ${currentBranch} | Remote: origin | Status: synchronized`);\n } catch (pushError: any) {\n // If force push fails, provide helpful message\n logger.warn(`PUBLISH_FORCE_PUSH_FAILED: Could not force push branch | Branch: ${currentBranch} | Remote: origin | Error: ${pushError.message}`);\n logger.warn(`PUBLISH_MANUAL_PUSH_NEEDED: Manual force push required | Action: Push manually`);\n logger.warn(`PUBLISH_MANUAL_PUSH_COMMAND: Force push command | Command: git push --force-with-lease origin ${currentBranch}`);\n }\n } else {\n // For merge/rebase methods, try to merge target back into source\n logger.info(`PUBLISH_MERGE_TARGET_BACK: Merging target back into source | Target: ${targetBranch} | Source: ${currentBranch} | Purpose: Sync branches after publish`);\n\n // Try fast-forward first (works with merge/rebase methods)\n // Use runSecure to avoid error output for expected failure\n let fastForwardSucceeded = false;\n try {\n await runSecure('git', ['merge', targetBranch, '--ff-only']);\n fastForwardSucceeded = true;\n logger.info(`PUBLISH_MERGE_FF_SUCCESS: Fast-forward merged target into source | Target: ${targetBranch} | Source: ${currentBranch} | Status: merged`);\n } catch {\n logger.verbose(`Fast-forward merge not possible, performing regular merge...`);\n }\n\n if (!fastForwardSucceeded) {\n await run(`git merge ${targetBranch} --no-edit`);\n logger.info(`PUBLISH_MERGE_SUCCESS: Merged target into source | Target: ${targetBranch} | Source: ${currentBranch} | Status: merged`);\n }\n }\n\n // Determine version bump based on branch configuration\n let versionCommand = 'prepatch'; // Default\n let versionTag = 'dev'; // Default\n\n if (branchDependentVersioning && runConfig.branches) {\n const sourceBranchConfig = runConfig.branches[currentBranch];\n if (sourceBranchConfig?.version) {\n // Use configured version strategy for source branch\n if (sourceBranchConfig.version.incrementLevel) {\n versionCommand = `pre${sourceBranchConfig.version.incrementLevel}`;\n }\n if (sourceBranchConfig.version.tag) {\n versionTag = sourceBranchConfig.version.tag;\n }\n }\n }\n\n // Bump to next development version\n // Note: We manually update package.json instead of using npm version to avoid\n // npm's automatic \"git add package.json package-lock.json\" which fails when\n // package-lock.json is gitignored\n logger.info(`PUBLISH_DEV_VERSION_BUMPING: Bumping to next development version | Tag: ${versionTag} | Purpose: Prepare for next cycle`);\n try {\n // Read current package.json\n const pkgJsonContents = await storage.readFile('package.json', 'utf-8');\n const pkgJson = safeJsonParse(pkgJsonContents, 'package.json');\n const validatedPkgJson = validatePackageJson(pkgJson, 'package.json');\n const currentVer = validatedPkgJson.version;\n\n // Import incrementPrereleaseVersion from core\n const { incrementPrereleaseVersion } = await import('@grunnverk/core');\n // After publishing a release version, we need to increment the patch first,\n // then add the prerelease tag. This ensures we don't go back to the same dev version.\n // Example: 1.0.1-dev.0 -> publish 1.0.1 -> increment to 1.0.2-dev.0 (not 1.0.1-dev.0)\n const incrementedPatchVersion = incrementPatchVersion(currentVer);\n const newVersion = incrementPrereleaseVersion(incrementedPatchVersion, versionTag);\n\n // Update package.json with new version\n validatedPkgJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(validatedPkgJson, null, 2) + '\\n', 'utf-8');\n\n logger.info(`PUBLISH_DEV_VERSION_BUMPED: Version bumped successfully | New Version: ${newVersion} | Type: development | Status: completed`);\n\n // Manually commit the version bump (package-lock.json is ignored)\n await runGitWithLock(process.cwd(), async () => {\n await run('git add package.json');\n await run(`git commit -m \"chore: bump to ${newVersion}\"`);\n }, 'commit dev version bump');\n } catch (versionError: any) {\n logger.warn(`PUBLISH_DEV_VERSION_BUMP_FAILED: Failed to bump version | Error: ${versionError.message} | Impact: Version not updated`);\n logger.warn('PUBLISH_MANUAL_VERSION_BUMP: Manual version bump may be needed | Action: Bump manually for next cycle | Command: npm version');\n }\n\n // Push updated source branch\n logger.info(`PUBLISH_PUSH_SOURCE: Pushing updated source branch | Branch: ${currentBranch} | Remote: origin | Purpose: Push development version`);\n try {\n await runGitWithLock(process.cwd(), async () => {\n await run(`git push origin ${currentBranch}`);\n }, `push ${currentBranch}`);\n logger.info(`PUBLISH_PUSH_SOURCE_SUCCESS: Pushed source branch successfully | Branch: ${currentBranch} | Remote: origin | Status: pushed`);\n } catch (pushError: any) {\n logger.warn(`PUBLISH_PUSH_SOURCE_FAILED: Failed to push source branch | Branch: ${currentBranch} | Error: ${pushError.message} | Impact: Need manual push`);\n logger.warn(`PUBLISH_MANUAL_PUSH_COMMAND: Manual push command | Command: git push origin ${currentBranch}`);\n }\n } else {\n logger.info(`PUBLISH_MERGE_DRY_RUN: Would merge target into source | Mode: dry-run | Target: ${targetBranch} | Source: ${currentBranch} | Strategy: ff-only`);\n logger.info(`PUBLISH_VERSION_DRY_RUN: Would bump version to next development | Mode: dry-run | Action: Version bump`);\n logger.info(`PUBLISH_PUSH_DRY_RUN: Would push source to remote | Mode: dry-run | Branch: ${currentBranch} | Remote: origin`);\n }\n\n logger.info('');\n logger.info(`PUBLISH_COMPLETE: Publish workflow completed successfully | Branch: ${currentBranch} | Status: completed | Version: next-development`);\n};\n","/**\n * Comprehensive pre-flight validation for publish operations\n *\n * Runs ALL validation checks and collects ALL issues before reporting,\n * allowing users to fix multiple problems at once rather than one at a time.\n */\n\nimport { run } from '@grunnverk/git-tools';\nimport { getLogger, ValidationError } from '@grunnverk/core';\nimport { createStorage } from '@grunnverk/shared';\nimport path from 'path';\nimport type { Config } from '@grunnverk/core';\n\nexport interface ValidationIssue {\n check: string;\n message: string;\n files?: string[];\n suggestion?: string;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationIssue[];\n warnings: ValidationIssue[];\n}\n\n/**\n * Run comprehensive pre-flight validation\n */\nexport async function runPreflightValidation(\n runConfig: Config,\n targetBranch?: string\n): Promise<ValidationResult> {\n const result: ValidationResult = {\n valid: true,\n errors: [],\n warnings: []\n };\n\n const isDryRun = runConfig.dryRun || false;\n\n // Run all checks in parallel to collect all issues at once\n await Promise.all([\n checkGitRepository(result, isDryRun),\n checkGitStatus(result, isDryRun),\n checkCurrentBranch(result, targetBranch, isDryRun),\n checkTargetBranchSync(result, targetBranch, isDryRun),\n checkScripts(result, isDryRun),\n checkWorkspaceStructure(result, runConfig, isDryRun),\n checkCredentials(result, runConfig, isDryRun),\n ]);\n\n result.valid = result.errors.length === 0;\n return result;\n}\n\n/**\n * Check if we're in a git repository\n */\nasync function checkGitRepository(result: ValidationResult, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun) {\n await run('git rev-parse --git-dir');\n }\n } catch {\n result.errors.push({\n check: 'git_repository',\n message: 'Not in a git repository or git command failed',\n suggestion: 'Please run this command from within a git repository'\n });\n }\n}\n\n/**\n * Check for uncommitted changes\n */\nasync function checkGitStatus(result: ValidationResult, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun) {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n const files = stdout.trim().split('\\n').map(line => line.substring(3).trim());\n result.errors.push({\n check: 'git_status',\n message: 'Working directory has uncommitted changes',\n files: files,\n suggestion: 'Please commit or stash your changes before running publish'\n });\n }\n }\n } catch (error: any) {\n result.errors.push({\n check: 'git_status',\n message: `Failed to check git status: ${error.message}`,\n suggestion: 'Ensure you are in a valid git repository and try again'\n });\n }\n}\n\n/**\n * Check that we're not running from the target branch\n */\nasync function checkCurrentBranch(result: ValidationResult, targetBranch: string | undefined, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun && targetBranch) {\n const { stdout } = await run('git branch --show-current');\n const currentBranch = stdout.trim();\n\n if (currentBranch === targetBranch) {\n result.errors.push({\n check: 'current_branch',\n message: `Cannot run publish from the target branch '${targetBranch}'`,\n suggestion: 'Please switch to a different branch before running publish'\n });\n }\n }\n } catch (error: any) {\n result.errors.push({\n check: 'current_branch',\n message: `Failed to check current branch: ${error.message}`\n });\n }\n}\n\n/**\n * Check target branch sync with remote\n */\nasync function checkTargetBranchSync(result: ValidationResult, targetBranch: string | undefined, isDryRun: boolean): Promise<void> {\n try {\n if (!isDryRun && targetBranch) {\n // Check if local target branch exists\n try {\n await run(`git rev-parse --verify ${targetBranch}`);\n\n // Check if in sync with remote\n const { stdout: localSha } = await run(`git rev-parse ${targetBranch}`);\n const { stdout: remoteSha } = await run(`git rev-parse origin/${targetBranch}`);\n\n if (localSha.trim() !== remoteSha.trim()) {\n result.warnings.push({\n check: 'target_branch_sync',\n message: `Target branch '${targetBranch}' is not in sync with remote`,\n suggestion: `Run: git checkout ${targetBranch} && git pull origin ${targetBranch}`\n });\n }\n } catch {\n // Branch doesn't exist locally - that's okay\n }\n }\n } catch (error: any) {\n // Non-critical - just warn\n result.warnings.push({\n check: 'target_branch_sync',\n message: `Could not verify target branch sync: ${error.message}`\n });\n }\n}\n\n/**\n * Check for required scripts in package.json\n */\nasync function checkScripts(result: ValidationResult, _isDryRun: boolean): Promise<void> {\n const storage = createStorage();\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n try {\n if (!await storage.exists(packageJsonPath)) {\n result.errors.push({\n check: 'package_json',\n message: 'package.json not found in current directory',\n files: [packageJsonPath]\n });\n return;\n }\n\n const content = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(content);\n\n if (!packageJson.scripts?.prepublishOnly) {\n result.errors.push({\n check: 'prepublish_script',\n message: 'prepublishOnly script is required in package.json but was not found',\n files: [packageJsonPath],\n suggestion: 'Add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test)'\n });\n }\n } catch (error: any) {\n result.errors.push({\n check: 'package_json',\n message: `Failed to check package.json: ${error.message}`,\n files: [packageJsonPath]\n });\n }\n}\n\n/**\n * Check workspace structure (for tree operations)\n */\nasync function checkWorkspaceStructure(result: ValidationResult, runConfig: Config, _isDryRun: boolean): Promise<void> {\n // Only check if this looks like a tree operation\n if (runConfig.tree) {\n const storage = createStorage();\n const rootPath = process.cwd();\n const packageJsonPath = path.join(rootPath, 'package.json');\n\n try {\n if (!await storage.exists(packageJsonPath)) {\n result.errors.push({\n check: 'workspace_structure',\n message: 'No package.json found at workspace root',\n files: [packageJsonPath],\n suggestion: 'Expected workspace root with package.json containing \"workspaces\" field'\n });\n }\n } catch (error: any) {\n result.warnings.push({\n check: 'workspace_structure',\n message: `Could not verify workspace structure: ${error.message}`\n });\n }\n }\n}\n\n/**\n * Check for required environment variables\n */\nasync function checkCredentials(result: ValidationResult, runConfig: Config, _isDryRun: boolean): Promise<void> {\n const requiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const missingVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingVars.push(envVar);\n }\n }\n\n if (missingVars.length > 0) {\n if (_isDryRun) {\n result.warnings.push({\n check: 'environment_variables',\n message: `Required environment variables not set: ${missingVars.join(', ')}`,\n suggestion: 'Would fail in real publish. Please set these environment variables.'\n });\n } else {\n result.errors.push({\n check: 'environment_variables',\n message: `Missing required environment variables: ${missingVars.join(', ')}`,\n suggestion: 'Please set these environment variables before running publish'\n });\n }\n }\n}\n\n/**\n * Log validation results\n */\nexport function logValidationResults(result: ValidationResult): void {\n const logger = getLogger();\n\n if (result.errors.length > 0) {\n logger.error('');\n logger.error('VALIDATION_FAILED: Pre-flight validation failed | Errors: ' + result.errors.length + ' | Status: cannot-proceed');\n logger.error('');\n logger.error('VALIDATION_ERRORS: The following issues must be fixed:');\n result.errors.forEach((error, idx) => {\n logger.error(` ${idx + 1}. [${error.check}] ${error.message}`);\n if (error.files && error.files.length > 0) {\n logger.error(` Files: ${error.files.join(', ')}`);\n }\n if (error.suggestion) {\n logger.error(` → ${error.suggestion}`);\n }\n });\n logger.error('');\n }\n\n if (result.warnings.length > 0) {\n logger.warn('');\n logger.warn('VALIDATION_WARNINGS: Pre-flight validation warnings | Warnings: ' + result.warnings.length + ' | Status: proceed-with-caution');\n logger.warn('');\n result.warnings.forEach((warning, idx) => {\n logger.warn(` ${idx + 1}. [${warning.check}] ${warning.message}`);\n if (warning.suggestion) {\n logger.warn(` → ${warning.suggestion}`);\n }\n });\n logger.warn('');\n }\n\n if (result.valid) {\n logger.info('VALIDATION_PASSED: All pre-flight validation checks passed | Status: ready-to-proceed');\n }\n}\n\n/**\n * Throw ValidationError if validation failed\n */\nexport function throwIfValidationFailed(result: ValidationResult): void {\n if (!result.valid) {\n throw new ValidationError(\n `Pre-flight validation failed with ${result.errors.length} error(s)`,\n {\n phase: 'pre_flight_validation'\n },\n result.errors,\n result.warnings\n );\n }\n}\n","/**\n * Dry-run reporting for publish operations\n *\n * Provides comprehensive preview of what would happen during publish\n */\n\nimport { getLogger } from '@grunnverk/core';\n\nexport interface DryRunReport {\n operations: Array<{\n step: string;\n command?: string;\n files?: Array<{\n path: string;\n changes: string;\n }>;\n description: string;\n }>;\n versionChanges: {\n current: string;\n proposed: string;\n };\n tags: string[];\n npmPublish: {\n package: string;\n version: string;\n files: string[];\n };\n prDetails?: {\n title: string;\n targetBranch: string;\n sourceBranch: string;\n };\n}\n\nexport interface TreeDryRunReport {\n packages: Array<{\n name: string;\n order: number;\n dependencies: string[];\n operations: string[];\n versionChange?: {\n from: string;\n to: string;\n };\n }>;\n dependencyUpdates: Array<{\n package: string;\n dependency: string;\n from: string;\n to: string;\n }>;\n buildOrder: string[];\n}\n\n/**\n * Log dry-run report for single package publish\n */\nexport function logDryRunReport(report: DryRunReport): void {\n const logger = getLogger();\n\n logger.info('');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n\n // Version changes\n logger.info('📦 VERSION CHANGES:');\n logger.info(` Current: ${report.versionChanges.current}`);\n logger.info(` Proposed: ${report.versionChanges.proposed}`);\n logger.info('');\n\n // Operations\n logger.info('🔧 OPERATIONS TO BE PERFORMED:');\n report.operations.forEach((op, idx) => {\n logger.info(` ${idx + 1}. ${op.step}`);\n logger.info(` ${op.description}`);\n if (op.command) {\n logger.info(` Command: ${op.command}`);\n }\n if (op.files && op.files.length > 0) {\n logger.info(' Files:');\n op.files.forEach(file => {\n logger.info(` - ${file.path}`);\n if (file.changes) {\n logger.info(` ${file.changes}`);\n }\n });\n }\n });\n logger.info('');\n\n // Tags\n if (report.tags.length > 0) {\n logger.info('🏷️ TAGS TO BE CREATED:');\n report.tags.forEach(tag => {\n logger.info(` - ${tag}`);\n });\n logger.info('');\n }\n\n // NPM publish\n logger.info('📤 NPM PUBLISH:');\n logger.info(` Package: ${report.npmPublish.package}`);\n logger.info(` Version: ${report.npmPublish.version}`);\n if (report.npmPublish.files.length > 0) {\n logger.info(' Files to be published:');\n report.npmPublish.files.forEach(file => {\n logger.info(` - ${file}`);\n });\n }\n logger.info('');\n\n // PR details\n if (report.prDetails) {\n logger.info('🔀 PULL REQUEST:');\n logger.info(` Title: ${report.prDetails.title}`);\n logger.info(` Source: ${report.prDetails.sourceBranch}`);\n logger.info(` Target: ${report.prDetails.targetBranch}`);\n logger.info('');\n }\n\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' END DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n logger.info('ℹ️ This was a dry run. No actual changes were made.');\n logger.info(' To execute these operations, run without --dry-run flag.');\n logger.info('');\n}\n\n/**\n * Log dry-run report for tree operations\n */\nexport function logTreeDryRunReport(report: TreeDryRunReport): void {\n const logger = getLogger();\n\n logger.info('');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' TREE DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n\n // Build order\n logger.info('📦 PACKAGE BUILD ORDER:');\n logger.info(` Total packages: ${report.buildOrder.length}`);\n logger.info(' Execution order:');\n report.buildOrder.forEach((pkg, idx) => {\n logger.info(` ${idx + 1}. ${pkg}`);\n });\n logger.info('');\n\n // Package details\n logger.info('🔧 PACKAGE OPERATIONS:');\n report.packages.forEach(pkg => {\n logger.info(` [${pkg.order}] ${pkg.name}`);\n if (pkg.dependencies.length > 0) {\n logger.info(` Dependencies: ${pkg.dependencies.join(', ')}`);\n }\n if (pkg.versionChange) {\n logger.info(` Version: ${pkg.versionChange.from} → ${pkg.versionChange.to}`);\n }\n if (pkg.operations.length > 0) {\n logger.info(' Operations:');\n pkg.operations.forEach(op => {\n logger.info(` - ${op}`);\n });\n }\n logger.info('');\n });\n\n // Dependency updates\n if (report.dependencyUpdates.length > 0) {\n logger.info('🔗 INTER-PROJECT DEPENDENCY UPDATES:');\n report.dependencyUpdates.forEach(update => {\n logger.info(` ${update.package}`);\n logger.info(` ${update.dependency}: ${update.from} → ${update.to}`);\n });\n logger.info('');\n }\n\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info(' END TREE DRY RUN REPORT ');\n logger.info('═══════════════════════════════════════════════════════════');\n logger.info('');\n logger.info('ℹ️ This was a dry run. No actual changes were made.');\n logger.info(' To execute these operations, run without --dry-run flag.');\n logger.info('');\n}\n\n/**\n * Create a dry-run report for a single package publish\n */\nexport function createDryRunReport(\n currentVersion: string,\n proposedVersion: string,\n packageName: string,\n operations: DryRunReport['operations'],\n targetBranch?: string,\n sourceBranch?: string\n): DryRunReport {\n return {\n operations,\n versionChanges: {\n current: currentVersion,\n proposed: proposedVersion\n },\n tags: [`v${proposedVersion}`],\n npmPublish: {\n package: packageName,\n version: proposedVersion,\n files: [] // Would be populated by analyzing package.json files field\n },\n prDetails: targetBranch && sourceBranch ? {\n title: `Release ${proposedVersion}`,\n targetBranch,\n sourceBranch\n } : undefined\n };\n}\n","/**\n * Checkpoint System for Publish Recovery\n *\n * Saves state at critical points during publish to enable recovery from failures.\n * Checkpoints are saved locally and help determine the appropriate recovery strategy.\n */\n\nimport { getLogger } from '@grunnverk/core';\nimport { createStorage } from '@grunnverk/shared';\nimport path from 'path';\n\nconst logger = getLogger();\n\n/**\n * Phases of the publish workflow\n */\nexport type PublishPhase =\n | 'initialized' // Publish command started\n | 'validated' // Pre-publish validation passed\n | 'pr-created' // Pull request created\n | 'pr-merged' // Pull request merged to main\n | 'tagged' // Git tag created\n | 'npm-publishing' // npm publish in progress\n | 'npm-published' // npm publish completed\n | 'completed' // Entire workflow completed\n | 'failed'; // Workflow failed\n\n/**\n * Checkpoint data structure\n */\nexport interface PublishCheckpoint {\n /** Current phase of the publish workflow */\n phase: PublishPhase;\n\n /** Timestamp when checkpoint was created */\n timestamp: string;\n\n /** Package name */\n packageName: string;\n\n /** Target version being published */\n version: string;\n\n /** Current git branch */\n branch: string;\n\n /** Working directory */\n workingDirectory: string;\n\n /** Pull request number (if created) */\n prNumber?: number;\n\n /** Pull request URL (if created) */\n prUrl?: string;\n\n /** Git tags created during this publish */\n tags: string[];\n\n /** Whether npm publish completed successfully */\n npmPublished: boolean;\n\n /** GitHub workflow run ID (if available) */\n workflowRunId?: string;\n\n /** GitHub workflow run URL (if available) */\n workflowRunUrl?: string;\n\n /** Error message if failed */\n error?: string;\n\n /** Additional metadata */\n metadata?: {\n targetBranch?: string;\n fromBranch?: string;\n commitSha?: string;\n [key: string]: any;\n };\n}\n\n/**\n * Get the checkpoint file path for a directory\n */\nfunction getCheckpointPath(workingDirectory: string): string {\n return path.join(workingDirectory, '.kodrdriv-publish-checkpoint.json');\n}\n\n/**\n * Save a checkpoint\n */\nexport async function saveCheckpoint(checkpoint: PublishCheckpoint): Promise<void> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(checkpoint.workingDirectory);\n\n try {\n await storage.writeFile(\n checkpointPath,\n JSON.stringify(checkpoint, null, 2),\n 'utf-8'\n );\n\n logger.debug(`CHECKPOINT_SAVED: Saved publish checkpoint | Phase: ${checkpoint.phase} | Package: ${checkpoint.packageName} | Version: ${checkpoint.version}`);\n } catch (error: any) {\n logger.warn(`CHECKPOINT_SAVE_FAILED: Failed to save checkpoint | Error: ${error.message}`);\n }\n}\n\n/**\n * Load the most recent checkpoint\n */\nexport async function loadCheckpoint(workingDirectory: string): Promise<PublishCheckpoint | null> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(workingDirectory);\n\n try {\n if (!await storage.exists(checkpointPath)) {\n return null;\n }\n\n const content = await storage.readFile(checkpointPath, 'utf-8');\n const checkpoint = JSON.parse(content) as PublishCheckpoint;\n\n logger.debug(`CHECKPOINT_LOADED: Loaded publish checkpoint | Phase: ${checkpoint.phase} | Package: ${checkpoint.packageName} | Version: ${checkpoint.version}`);\n\n return checkpoint;\n } catch (error: any) {\n logger.warn(`CHECKPOINT_LOAD_FAILED: Failed to load checkpoint | Error: ${error.message}`);\n return null;\n }\n}\n\n/**\n * Delete checkpoint (cleanup after successful publish)\n */\nexport async function deleteCheckpoint(workingDirectory: string): Promise<void> {\n const storage = createStorage();\n const checkpointPath = getCheckpointPath(workingDirectory);\n\n try {\n if (await storage.exists(checkpointPath)) {\n await storage.deleteFile(checkpointPath);\n logger.debug('CHECKPOINT_DELETED: Removed publish checkpoint after successful completion');\n }\n } catch (error: any) {\n logger.warn(`CHECKPOINT_DELETE_FAILED: Failed to delete checkpoint | Error: ${error.message}`);\n }\n}\n\n/**\n * Update an existing checkpoint with new data\n */\nexport async function updateCheckpoint(\n workingDirectory: string,\n updates: Partial<PublishCheckpoint>\n): Promise<void> {\n const existing = await loadCheckpoint(workingDirectory);\n\n if (!existing) {\n logger.warn('CHECKPOINT_UPDATE_FAILED: No existing checkpoint to update');\n return;\n }\n\n const updated: PublishCheckpoint = {\n ...existing,\n ...updates,\n timestamp: new Date().toISOString(),\n };\n\n await saveCheckpoint(updated);\n}\n\n/**\n * Analyze checkpoint to determine recovery strategy\n */\nexport interface RecoveryStrategy {\n /** Can this publish be recovered? */\n recoverable: boolean;\n\n /** Recommended recovery action */\n action: 'rollback' | 'fix-forward' | 'reset' | 'continue' | 'none';\n\n /** Human-readable explanation */\n explanation: string;\n\n /** Detailed recovery steps */\n steps: string[];\n\n /** Risks of the recovery action */\n risks: string[];\n}\n\n/**\n * Determine the appropriate recovery strategy based on checkpoint\n */\nexport function analyzeRecoveryStrategy(checkpoint: PublishCheckpoint): RecoveryStrategy {\n const phase = checkpoint.phase;\n\n // Phase: initialized, validated, pr-created\n // These are safe - nothing permanent has happened yet\n if (phase === 'initialized' || phase === 'validated' || phase === 'pr-created') {\n return {\n recoverable: true,\n action: 'continue',\n explanation: 'Publish can be continued or restarted safely',\n steps: [\n 'Fix any issues that caused the failure',\n 'Run: kodrdriv publish --continue',\n 'Or restart: kodrdriv publish'\n ],\n risks: ['None - no permanent changes have been made']\n };\n }\n\n // Phase: pr-merged (but not published)\n // This is the danger zone - merge is permanent but npm publish hasn't happened\n if (phase === 'pr-merged' && !checkpoint.npmPublished) {\n return {\n recoverable: true,\n action: 'rollback',\n explanation: 'PR merged but npm publish failed - can rollback the merge',\n steps: [\n 'Revert the merge commit on main branch',\n 'Delete any git tags that were created',\n 'Reset working branch to clean state',\n 'Increment version for next attempt',\n 'Run: kodrdriv publish --rollback'\n ],\n risks: [\n 'Creates a revert commit in main branch history',\n 'Any work based on the merge will need to be rebased',\n 'Tags will be deleted and recreated on next publish'\n ]\n };\n }\n\n // Phase: tagged, npm-publishing (but not completed)\n // Tags exist but npm publish incomplete\n if ((phase === 'tagged' || phase === 'npm-publishing') && !checkpoint.npmPublished) {\n return {\n recoverable: true,\n action: 'rollback',\n explanation: 'Tags created but npm publish incomplete - can rollback',\n steps: [\n 'Delete git tags',\n 'Revert merge commit if it exists',\n 'Reset working branch',\n 'Increment version',\n 'Run: kodrdriv publish --rollback'\n ],\n risks: [\n 'Tags will be deleted and recreated',\n 'Merge commit will be reverted if it exists'\n ]\n };\n }\n\n // Phase: npm-published or completed\n // Package is published - can't rollback npm\n if (checkpoint.npmPublished || phase === 'npm-published' || phase === 'completed') {\n return {\n recoverable: false,\n action: 'fix-forward',\n explanation: 'Package already published to npm - must fix forward',\n steps: [\n 'Package is live on npm - cannot unpublish',\n 'If there are issues, publish a patch version',\n 'Run: kodrdriv publish --target-version patch',\n 'Or manually fix and increment version'\n ],\n risks: [\n 'Cannot undo npm publish',\n 'Must publish new version to fix issues'\n ]\n };\n }\n\n // Phase: failed (generic failure)\n if (phase === 'failed') {\n // Determine based on what was completed\n if (checkpoint.npmPublished) {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'npm-published' });\n } else if (checkpoint.prNumber) {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'pr-merged' });\n } else {\n return analyzeRecoveryStrategy({ ...checkpoint, phase: 'initialized' });\n }\n }\n\n // Unknown phase or state\n return {\n recoverable: false,\n action: 'none',\n explanation: 'Unable to determine recovery strategy from checkpoint',\n steps: [\n 'Manually inspect the repository state',\n 'Check: git status, git log, npm view <package>',\n 'Determine what was completed',\n 'Contact support if needed'\n ],\n risks: ['Manual intervention required']\n };\n}\n\n/**\n * Get a human-readable summary of the checkpoint\n */\nexport function getCheckpointSummary(checkpoint: PublishCheckpoint): string {\n const lines: string[] = [];\n\n lines.push('='.repeat(60));\n lines.push('Publish Checkpoint Summary');\n lines.push('='.repeat(60));\n lines.push('');\n lines.push(`Package: ${checkpoint.packageName}`);\n lines.push(`Version: ${checkpoint.version}`);\n lines.push(`Phase: ${checkpoint.phase}`);\n lines.push(`Branch: ${checkpoint.branch}`);\n lines.push(`Timestamp: ${checkpoint.timestamp}`);\n lines.push('');\n\n if (checkpoint.prNumber) {\n lines.push(`Pull Request: #${checkpoint.prNumber}`);\n if (checkpoint.prUrl) {\n lines.push(`PR URL: ${checkpoint.prUrl}`);\n }\n }\n\n if (checkpoint.tags.length > 0) {\n lines.push(`Tags Created: ${checkpoint.tags.join(', ')}`);\n }\n\n if (checkpoint.npmPublished) {\n lines.push('✅ npm Published: Yes');\n } else {\n lines.push('❌ npm Published: No');\n }\n\n if (checkpoint.workflowRunUrl) {\n lines.push(`Workflow: ${checkpoint.workflowRunUrl}`);\n }\n\n if (checkpoint.error) {\n lines.push('');\n lines.push('Error:');\n lines.push(` ${checkpoint.error}`);\n }\n\n lines.push('');\n lines.push('='.repeat(60));\n\n return lines.join('\\n');\n}\n\n/**\n * Check if a checkpoint indicates a failed publish\n */\nexport function isFailedPublish(checkpoint: PublishCheckpoint): boolean {\n return checkpoint.phase === 'failed' ||\n (checkpoint.phase === 'pr-merged' && !checkpoint.npmPublished) ||\n (checkpoint.phase === 'tagged' && !checkpoint.npmPublished) ||\n (checkpoint.phase === 'npm-publishing' && !checkpoint.npmPublished);\n}\n"],"names":["createRetroactiveTags","workingBranch","isDryRun","logger","tagPrefix","info","stdout","run","commits","trim","split","devCommits","filter","line","test","length","tagsCreated","tagsSkipped","commitLine","sha","messageParts","message","join","versionMatch","match","releaseVersion","workingTagName","tagExistsResult","tagExists","push","verbose","substring","forEach","tag","error","warn","execute","runConfig","dryRun","getDryRunLogger","currentBranch","getCurrentBranch","branches","configuredDevBranch","findDevelopmentBranch","branchCreated","branchUpdated","alreadyOnBranch","mergedDevelopmentIntoWorking","allBranchConfig","KODRDRIV_DEFAULTS","prereleaseTag","incrementLevel","development","targetVersion","includes","replace","Error","workingBranchConfig","version","gitStatus","workingBranchExists","localBranchExists","remoteExists","then","catch","targetBranch","targetBranchExists","mergeError","developmentBranchExists","workingTagPrefix","fs","packageJson","JSON","parse","readFile","currentVersion","baseVersion","getNpmPublishedVersion","publishedVersion","name","debug","tagWorkingBranch","isReleaseVersion","storage","createStorage","targetPackageResult","targetPackageJson","safeJsonParse","validatedTargetPkg","validatePackageJson","pkgJsonContents","pkgJson","validatedPkgJson","newVersion","incrementPatchVersion","incrementMinorVersion","incrementMajorVersion","cleanVersion","writeFile","stringify","DEFAULT_EXCLUDE_SUBPROJECTS","checkGitignorePatterns","directory","checks","getLogger","gitignorePath","path","requiredPatterns","access","gitignore","passed","issues","gitignoreContent","gitignoreLines","map","startsWith","missingPatterns","pattern","found","some","basePattern","endsWith","slice","lineBase","criticalMissing","p","config","tree","directories","process","cwd","validateRelease","validateReleaseWorkflow","excludedPatterns","normalized","packageJsonFiles","scanForPackageJsonFiles","isTree","branch","remoteSync","mergeConflicts","warnings","devVersion","linkStatus","openPRs","releaseWorkflow","packagesToCheck","localPackageNames","Set","pkgJsonPath","pkgJsonContent","add","pkgDir","dirname","pkgName","basename","getGitStatusSummary","statusOutput","count","statusAfterMerge","suppressErrorLogging","stderr","isDevelopmentVersion","dependencies","devDependencies","linkedDeps","getLinkedDependencies","allDeps","localDeps","Object","keys","dep","has","unlinkedLocal","repository","url","repoUrl","owner","repo","octokit","getOctokit","data","pulls","list","state","head","pr","prInfo","number","title","html_url","prError","status","buildError","testError","publishError","env","NPM_TOKEN","workflowPath","allPassed","hasWarnings","summary","repeat","issue","warning","readContextFiles","contextFiles","contextParts","filePath","content","editReleaseNotesInteractively","releaseSummary","templateLines","body","result","editContentInEditor","lines","improveReleaseNotesWithLLM","promptConfig","promptContext","outputDirectory","logContent","diffContent","releaseNotesContent","userFeedback","getLLMFeedbackInEditor","improvementConfig","contentType","createImprovedPrompt","currentSummary","aiConfig","improvementPromptContent","releaseFocus","promptResult","createReleasePrompt","toAIConfig","modelToUse","commands","release","model","Formatter","create","formatPrompt","prompt","callLLM","request","aiStorageAdapter","createStorageAdapter","aiLogger","createLoggerAdapter","openaiReasoning","reasoning","createCompletionWithRetry","messages","responseFormat","type","debugRequestFile","getOutputPath","getTimestampedRequestFilename","debugResponseFile","getTimestampedResponseFilename","processResponse","response","validateReleaseSummary","improveContentWithLLM","generateSelfReflection","agenticResult","timestamp","Date","toISOString","reflectionPath","report","generateReflectionReport","iterations","toolCallsExecuted","maxIterations","toolMetrics","conversationHistory","releaseNotes","toolCalls","uniqueTools","m","size","handleInteractiveReleaseFeedback","userChoice","getUserChoice","STANDARD_CHOICES","CONFIRM","EDIT","SKIP","IMPROVE","nonTtyErrorSuggestions","action","finalSummary","fromRef","from","getDefaultFromRef","fromMain","toRef","to","DEFAULT_TO_COMMIT_ALIAS","log","Log","limit","messageLimit","maxDiffBytes","DEFAULT_MAX_DIFF_BYTES","diff","Diff","DEFAULT_EXCLUDED_PATTERNS","get","overridePaths","discoveredConfigDirs","overrides","determineVersionsForMilestones","versions","packageJsonContents","publish","milestoneIssuesContent","milestonesEnabled","noMilestones","GitHub","getMilestoneIssuesForRelease","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","contextFromFiles","combinedContext","context","Boolean","runAgenticRelease","milestoneIssues","focus","userContext","undefined","maxAgenticIterations","selfReflection","titleFilterResult","filterContent","stopContext","bodyFilterResult","filtered","interactive","requireTTY","interactivePromptContext","contextDirectories","interactiveResult","timestampedFilename","getTimestampedReleaseNotesFilename","outputPath","scanNpmrcForEnvVars","npmrcPath","envVars","exists","npmrcContent","envVarMatches","varName","cleanupNpmLinkReferences","packageLockPath","packageLockContent","packageLock","hasFileReferences","packages","pkgPath","pkgInfo","entries","resolved","resolvedPath","versionPath","unlink","runWithDryRunSupport","validateEnvironmentVariables","requiredEnvVars","missingEnvVars","envVar","runPrechecks","originalMessage","toString","effectiveTargetBranch","getCurrentBranchName","syncStatus","isBranchInSyncWithRemote","inSync","localSha","remoteSha","workflowConfig","hasWorkflows","hasPullRequestTriggers","workflowCount","triggeredWorkflowNames","workflowName","packageJsonPath","parsed","scripts","prepublishOnly","coreRequiredEnvVars","npmrcEnvVars","allRequiredEnvVars","sortObjectKeys","value","Array","isArray","sorted","sort","key","isReleaseNecessaryComparedToTarget","runSecure","necessary","reason","namesStdout","changedFiles","s","nonVersionFiles","f","basePkgStdout","headPkgStdout","basePkg","headPkg","_baseVersion","baseWithoutVersion","_headVersion","headWithoutVersion","baseSorted","headSorted","equalExceptVersion","handleTargetBranchSyncRecovery","syncResult","safeSyncBranchWithRemote","success","conflictResolutionRequired","branchDependentVersioning","branchConfig","targetBranchConfig","versionType","versionTag","versionIncrement","increment","syncTarget","necessity","console","runGitWithLock","remoteBranchExists","branchName","findOpenPullRequestByHeadRef","releaseConfig","skipLinkCleanup","updateDepsScope","updateDeps","Updates","updatesConfig","updates","scope","interProject","updatePatterns","dependencyUpdatePatterns","patternsArg","filesToStage","hasStagedChanges","Commit","commit","proposedVersion","finalTargetBranch","branchDependentResult","calculateBranchDependentVersion","targetVersionInput","calculateTargetVersion","targetTagName","checkIfTagExists","getTagInfo","npmVersion","tagInfo","skipAlreadyPublished","forceRepublish","confirmVersionInteractively","confirmedTagName","confirmedTagExists","filesToStageVersionBump","Release","releaseNotesPath","releaseTitlePath","labels","rawCommitTitle","commitTitle","prBody","createPullRequest","shouldSkipWait","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","waitForPullRequestChecks","mergeMethod","mergePullRequest","hasStashedChanges","syncError","stashError","targetPackageJsonContents","tagName","validateGitRef","tagWasPushed","pushError","Promise","resolve","setTimeout","releaseTitle","retries","createRelease","closeMilestoneForVersion","isTagNotFoundError","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","getWorkflowsTriggeredByRelease","fastForwardSucceeded","sourceBranchConfig","versionCommand","currentVer","incrementPrereleaseVersion","incrementedPatchVersion","versionError","runPreflightValidation","valid","errors","all","checkGitRepository","checkGitStatus","checkCurrentBranch","checkTargetBranchSync","checkScripts","checkWorkspaceStructure","checkCredentials","check","suggestion","files","_isDryRun","rootPath","missingVars","logValidationResults","idx","throwIfValidationFailed","ValidationError","phase","logDryRunReport","versionChanges","current","proposed","operations","op","step","description","command","file","changes","tags","npmPublish","package","prDetails","sourceBranch","logTreeDryRunReport","buildOrder","pkg","order","versionChange","dependencyUpdates","update","dependency","createDryRunReport","packageName","getCheckpointPath","workingDirectory","saveCheckpoint","checkpoint","checkpointPath","loadCheckpoint","deleteCheckpoint","deleteFile","updateCheckpoint","existing","updated","analyzeRecoveryStrategy","recoverable","explanation","steps","risks","npmPublished","prNumber","getCheckpointSummary","prUrl","workflowRunUrl","isFailedPublish"],"mappings":"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"}