@xylabs/toolchain 7.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/analyze.mjs +140 -0
- package/dist/actions/analyze.mjs.map +1 -0
- package/dist/actions/build.mjs +173 -0
- package/dist/actions/build.mjs.map +1 -0
- package/dist/actions/claude-check.mjs +199 -0
- package/dist/actions/claude-check.mjs.map +1 -0
- package/dist/actions/claude-clean.mjs +70 -0
- package/dist/actions/claude-clean.mjs.map +1 -0
- package/dist/actions/claude-commands.mjs +126 -0
- package/dist/actions/claude-commands.mjs.map +1 -0
- package/dist/actions/claude-rules.mjs +151 -0
- package/dist/actions/claude-rules.mjs.map +1 -0
- package/dist/actions/claude-settings.mjs +99 -0
- package/dist/actions/claude-settings.mjs.map +1 -0
- package/dist/actions/claude-skills.mjs +131 -0
- package/dist/actions/claude-skills.mjs.map +1 -0
- package/dist/actions/clean-docs.mjs +66 -0
- package/dist/actions/clean-docs.mjs.map +1 -0
- package/dist/actions/clean-eslint.mjs +47 -0
- package/dist/actions/clean-eslint.mjs.map +1 -0
- package/dist/actions/clean.mjs +166 -0
- package/dist/actions/clean.mjs.map +1 -0
- package/dist/actions/compile.mjs +184 -0
- package/dist/actions/compile.mjs.map +1 -0
- package/dist/actions/copy-assets.mjs +81 -0
- package/dist/actions/copy-assets.mjs.map +1 -0
- package/dist/actions/cycle.mjs +275 -0
- package/dist/actions/cycle.mjs.map +1 -0
- package/dist/actions/dead.mjs +119 -0
- package/dist/actions/dead.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +1556 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs +77 -0
- package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +158 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +125 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs +207 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs +318 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +163 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +408 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +75 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs +128 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/index.mjs +1609 -0
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
- package/dist/actions/deplint/deplint.mjs +1840 -0
- package/dist/actions/deplint/deplint.mjs.map +1 -0
- package/dist/actions/deplint/engine.mjs +1736 -0
- package/dist/actions/deplint/engine.mjs.map +1 -0
- package/dist/actions/deplint/findFiles.mjs +39 -0
- package/dist/actions/deplint/findFiles.mjs.map +1 -0
- package/dist/actions/deplint/findFilesByGlob.mjs +14 -0
- package/dist/actions/deplint/findFilesByGlob.mjs.map +1 -0
- package/dist/actions/deplint/fixer.mjs +103 -0
- package/dist/actions/deplint/fixer.mjs.map +1 -0
- package/dist/actions/deplint/getBasePackageName.mjs +13 -0
- package/dist/actions/deplint/getBasePackageName.mjs.map +1 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +29 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +68 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +143 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getImportsFromFile.mjs +85 -0
- package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs +37 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs +83 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs +116 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/index.mjs +1848 -0
- package/dist/actions/deplint/index.mjs.map +1 -0
- package/dist/actions/deplint/packageEditor.mjs +82 -0
- package/dist/actions/deplint/packageEditor.mjs.map +1 -0
- package/dist/actions/deplint/packageJsonEditor.mjs +101 -0
- package/dist/actions/deplint/packageJsonEditor.mjs.map +1 -0
- package/dist/actions/deplint/reporters.mjs +36 -0
- package/dist/actions/deplint/reporters.mjs.map +1 -0
- package/dist/actions/deplint/rules.mjs +1223 -0
- package/dist/actions/deplint/rules.mjs.map +1 -0
- package/dist/actions/deplint/snapshot.mjs +372 -0
- package/dist/actions/deplint/snapshot.mjs.map +1 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs +20 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs.map +1 -0
- package/dist/actions/deplint/types.mjs +1 -0
- package/dist/actions/deplint/types.mjs.map +1 -0
- package/dist/actions/deploy.mjs +194 -0
- package/dist/actions/deploy.mjs.map +1 -0
- package/dist/actions/dupdeps.mjs +226 -0
- package/dist/actions/dupdeps.mjs.map +1 -0
- package/dist/actions/eject.mjs +142 -0
- package/dist/actions/eject.mjs.map +1 -0
- package/dist/actions/fix.mjs +359 -0
- package/dist/actions/fix.mjs.map +1 -0
- package/dist/actions/gen-docs.mjs +155 -0
- package/dist/actions/gen-docs.mjs.map +1 -0
- package/dist/actions/gitignore.mjs +159 -0
- package/dist/actions/gitignore.mjs.map +1 -0
- package/dist/actions/gitlint-fix.mjs +27 -0
- package/dist/actions/gitlint-fix.mjs.map +1 -0
- package/dist/actions/gitlint.mjs +48 -0
- package/dist/actions/gitlint.mjs.map +1 -0
- package/dist/actions/index.mjs +8259 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/actions/knip.mjs +119 -0
- package/dist/actions/knip.mjs.map +1 -0
- package/dist/actions/license.mjs +92 -0
- package/dist/actions/license.mjs.map +1 -0
- package/dist/actions/lint-init.mjs +275 -0
- package/dist/actions/lint-init.mjs.map +1 -0
- package/dist/actions/lint.mjs +356 -0
- package/dist/actions/lint.mjs.map +1 -0
- package/dist/actions/lintNext.mjs +209 -0
- package/dist/actions/lintNext.mjs.map +1 -0
- package/dist/actions/lintlint.mjs +341 -0
- package/dist/actions/lintlint.mjs.map +1 -0
- package/dist/actions/npmignore-gen.mjs +90 -0
- package/dist/actions/npmignore-gen.mjs.map +1 -0
- package/dist/actions/orphan.mjs +110 -0
- package/dist/actions/orphan.mjs.map +1 -0
- package/dist/actions/package/clean-outputs.mjs +50 -0
- package/dist/actions/package/clean-outputs.mjs.map +1 -0
- package/dist/actions/package/clean-typescript.mjs +50 -0
- package/dist/actions/package/clean-typescript.mjs.map +1 -0
- package/dist/actions/package/clean.mjs +69 -0
- package/dist/actions/package/clean.mjs.map +1 -0
- package/dist/actions/package/compile/XyConfig.mjs +32 -0
- package/dist/actions/package/compile/XyConfig.mjs.map +1 -0
- package/dist/actions/package/compile/buildEntries.mjs +53 -0
- package/dist/actions/package/compile/buildEntries.mjs.map +1 -0
- package/dist/actions/package/compile/compile.mjs +439 -0
- package/dist/actions/package/compile/compile.mjs.map +1 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs +34 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
- package/dist/actions/package/compile/deepMerge.mjs +27 -0
- package/dist/actions/package/compile/deepMerge.mjs.map +1 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs +12 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -0
- package/dist/actions/package/compile/index.mjs +472 -0
- package/dist/actions/package/compile/index.mjs.map +1 -0
- package/dist/actions/package/compile/inputs.mjs +22 -0
- package/dist/actions/package/compile/inputs.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs +93 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +92 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs +402 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -0
- package/dist/actions/package/copy-assets.mjs +69 -0
- package/dist/actions/package/copy-assets.mjs.map +1 -0
- package/dist/actions/package/cycle.mjs +62 -0
- package/dist/actions/package/cycle.mjs.map +1 -0
- package/dist/actions/package/gen-docs.mjs +137 -0
- package/dist/actions/package/gen-docs.mjs.map +1 -0
- package/dist/actions/package/index.mjs +1131 -0
- package/dist/actions/package/index.mjs.map +1 -0
- package/dist/actions/package/lint.mjs +87 -0
- package/dist/actions/package/lint.mjs.map +1 -0
- package/dist/actions/package/publint.mjs +336 -0
- package/dist/actions/package/publint.mjs.map +1 -0
- package/dist/actions/package/recompile.mjs +510 -0
- package/dist/actions/package/recompile.mjs.map +1 -0
- package/dist/actions/package-lint-deps.mjs +348 -0
- package/dist/actions/package-lint-deps.mjs.map +1 -0
- package/dist/actions/package-lint.mjs +774 -0
- package/dist/actions/package-lint.mjs.map +1 -0
- package/dist/actions/packman/clean.mjs +144 -0
- package/dist/actions/packman/clean.mjs.map +1 -0
- package/dist/actions/packman/convert.mjs +1331 -0
- package/dist/actions/packman/convert.mjs.map +1 -0
- package/dist/actions/packman/convertToPnpm.mjs +295 -0
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
- package/dist/actions/packman/convertToYarn.mjs +307 -0
- package/dist/actions/packman/convertToYarn.mjs.map +1 -0
- package/dist/actions/packman/index.mjs +1493 -0
- package/dist/actions/packman/index.mjs.map +1 -0
- package/dist/actions/packman/lint.mjs +109 -0
- package/dist/actions/packman/lint.mjs.map +1 -0
- package/dist/actions/packman/rewriteScripts.mjs +52 -0
- package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
- package/dist/actions/packman/rewriteSourceImports.mjs +60 -0
- package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs +57 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs.map +1 -0
- package/dist/actions/publint.mjs +748 -0
- package/dist/actions/publint.mjs.map +1 -0
- package/dist/actions/publish.mjs +208 -0
- package/dist/actions/publish.mjs.map +1 -0
- package/dist/actions/reactTest.mjs +142 -0
- package/dist/actions/reactTest.mjs.map +1 -0
- package/dist/actions/readme-gen.mjs +362 -0
- package/dist/actions/readme-gen.mjs.map +1 -0
- package/dist/actions/readme-init.mjs +89 -0
- package/dist/actions/readme-init.mjs.map +1 -0
- package/dist/actions/readme-lint.mjs +147 -0
- package/dist/actions/readme-lint.mjs.map +1 -0
- package/dist/actions/rebuild.mjs +143 -0
- package/dist/actions/rebuild.mjs.map +1 -0
- package/dist/actions/recompile.mjs +196 -0
- package/dist/actions/recompile.mjs.map +1 -0
- package/dist/actions/reinstall.mjs +283 -0
- package/dist/actions/reinstall.mjs.map +1 -0
- package/dist/actions/relint.mjs +355 -0
- package/dist/actions/relint.mjs.map +1 -0
- package/dist/actions/repo-init.mjs +217 -0
- package/dist/actions/repo-init.mjs.map +1 -0
- package/dist/actions/retest.mjs +150 -0
- package/dist/actions/retest.mjs.map +1 -0
- package/dist/actions/sitemap.mjs +121 -0
- package/dist/actions/sitemap.mjs.map +1 -0
- package/dist/actions/sonar.mjs +119 -0
- package/dist/actions/sonar.mjs.map +1 -0
- package/dist/actions/start.mjs +142 -0
- package/dist/actions/start.mjs.map +1 -0
- package/dist/actions/statics.mjs +225 -0
- package/dist/actions/statics.mjs.map +1 -0
- package/dist/actions/test.mjs +144 -0
- package/dist/actions/test.mjs.map +1 -0
- package/dist/actions/up.mjs +140 -0
- package/dist/actions/up.mjs.map +1 -0
- package/dist/actions/updo.mjs +533 -0
- package/dist/actions/updo.mjs.map +1 -0
- package/dist/actions/upplug.mjs +124 -0
- package/dist/actions/upplug.mjs.map +1 -0
- package/dist/actions/upyarn.mjs +119 -0
- package/dist/actions/upyarn.mjs.map +1 -0
- package/dist/actions/yarn3only.mjs +60 -0
- package/dist/actions/yarn3only.mjs.map +1 -0
- package/dist/bin/package/build-only.mjs +451 -0
- package/dist/bin/package/build-only.mjs.map +1 -0
- package/dist/bin/package/build.mjs +451 -0
- package/dist/bin/package/build.mjs.map +1 -0
- package/dist/bin/package/clean-outputs.mjs +50 -0
- package/dist/bin/package/clean-outputs.mjs.map +1 -0
- package/dist/bin/package/clean-typescript.mjs +50 -0
- package/dist/bin/package/clean-typescript.mjs.map +1 -0
- package/dist/bin/package/clean.mjs +75 -0
- package/dist/bin/package/clean.mjs.map +1 -0
- package/dist/bin/package/compile-only.mjs +447 -0
- package/dist/bin/package/compile-only.mjs.map +1 -0
- package/dist/bin/package/compile-tsup.mjs +409 -0
- package/dist/bin/package/compile-tsup.mjs.map +1 -0
- package/dist/bin/package/compile.mjs +451 -0
- package/dist/bin/package/compile.mjs.map +1 -0
- package/dist/bin/package/copy-assets-cjs.mjs +75 -0
- package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
- package/dist/bin/package/copy-assets-esm.mjs +75 -0
- package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
- package/dist/bin/package/cycle.mjs +72 -0
- package/dist/bin/package/cycle.mjs.map +1 -0
- package/dist/bin/package/fix.mjs +97 -0
- package/dist/bin/package/fix.mjs.map +1 -0
- package/dist/bin/package/gen-docs.mjs +142 -0
- package/dist/bin/package/gen-docs.mjs.map +1 -0
- package/dist/bin/package/lint-verbose.mjs +97 -0
- package/dist/bin/package/lint-verbose.mjs.map +1 -0
- package/dist/bin/package/lint.mjs +97 -0
- package/dist/bin/package/lint.mjs.map +1 -0
- package/dist/bin/package/publint.mjs +423 -0
- package/dist/bin/package/publint.mjs.map +1 -0
- package/dist/bin/package/recompile.mjs +516 -0
- package/dist/bin/package/recompile.mjs.map +1 -0
- package/dist/bin/package/relint.mjs +97 -0
- package/dist/bin/package/relint.mjs.map +1 -0
- package/dist/bin/run-or-exec.mjs +20 -0
- package/dist/bin/run-or-exec.mjs.map +1 -0
- package/dist/bin/xy.mjs +8885 -0
- package/dist/bin/xy.mjs.map +1 -0
- package/dist/index.d.ts +1102 -0
- package/dist/index.mjs +9986 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/checkResult.mjs +16 -0
- package/dist/lib/checkResult.mjs.map +1 -0
- package/dist/lib/claudeMdTemplate.mjs +69 -0
- package/dist/lib/claudeMdTemplate.mjs.map +1 -0
- package/dist/lib/concurrency.mjs +38 -0
- package/dist/lib/concurrency.mjs.map +1 -0
- package/dist/lib/createBuildConfig.mjs +55 -0
- package/dist/lib/createBuildConfig.mjs.map +1 -0
- package/dist/lib/defaultBuildConfig.mjs +23 -0
- package/dist/lib/defaultBuildConfig.mjs.map +1 -0
- package/dist/lib/deleteGlob.mjs +13 -0
- package/dist/lib/deleteGlob.mjs.map +1 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs +99 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +203 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
- package/dist/lib/dependencies/index.mjs +281 -0
- package/dist/lib/dependencies/index.mjs.map +1 -0
- package/dist/lib/dependencies/workspaceCycles.mjs +79 -0
- package/dist/lib/dependencies/workspaceCycles.mjs.map +1 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs +6 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs.map +1 -0
- package/dist/lib/file/constants.mjs +8 -0
- package/dist/lib/file/constants.mjs.map +1 -0
- package/dist/lib/file/fileLines.mjs +32 -0
- package/dist/lib/file/fileLines.mjs.map +1 -0
- package/dist/lib/file/index.mjs +42 -0
- package/dist/lib/file/index.mjs.map +1 -0
- package/dist/lib/file/tryReadFileSync.mjs +14 -0
- package/dist/lib/file/tryReadFileSync.mjs.map +1 -0
- package/dist/lib/fillTemplate.mjs +8 -0
- package/dist/lib/fillTemplate.mjs.map +1 -0
- package/dist/lib/generateIgnoreFiles.mjs +86 -0
- package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
- package/dist/lib/generateReadmeFiles.mjs +323 -0
- package/dist/lib/generateReadmeFiles.mjs.map +1 -0
- package/dist/lib/gitignoreTemplate.mjs +12 -0
- package/dist/lib/gitignoreTemplate.mjs.map +1 -0
- package/dist/lib/index.mjs +1627 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/initCwd.mjs +8 -0
- package/dist/lib/initCwd.mjs.map +1 -0
- package/dist/lib/jsonFormatters.mjs +11 -0
- package/dist/lib/jsonFormatters.mjs.map +1 -0
- package/dist/lib/latestVersions.mjs +12 -0
- package/dist/lib/latestVersions.mjs.map +1 -0
- package/dist/lib/loadConfig.mjs +72 -0
- package/dist/lib/loadConfig.mjs.map +1 -0
- package/dist/lib/packageName.mjs +26 -0
- package/dist/lib/packageName.mjs.map +1 -0
- package/dist/lib/parsedPackageJSON.mjs +11 -0
- package/dist/lib/parsedPackageJSON.mjs.map +1 -0
- package/dist/lib/processEx.mjs +36 -0
- package/dist/lib/processEx.mjs.map +1 -0
- package/dist/lib/repoTemplates.mjs +34 -0
- package/dist/lib/repoTemplates.mjs.map +1 -0
- package/dist/lib/runInstall.mjs +30 -0
- package/dist/lib/runInstall.mjs.map +1 -0
- package/dist/lib/runSteps.mjs +118 -0
- package/dist/lib/runSteps.mjs.map +1 -0
- package/dist/lib/runStepsAsync.mjs +136 -0
- package/dist/lib/runStepsAsync.mjs.map +1 -0
- package/dist/lib/runXy.mjs +147 -0
- package/dist/lib/runXy.mjs.map +1 -0
- package/dist/lib/runXyWithWarning.mjs +36 -0
- package/dist/lib/runXyWithWarning.mjs.map +1 -0
- package/dist/lib/safeExit.mjs +61 -0
- package/dist/lib/safeExit.mjs.map +1 -0
- package/dist/lib/string/empty.mjs +8 -0
- package/dist/lib/string/empty.mjs.map +1 -0
- package/dist/lib/string/index.mjs +12 -0
- package/dist/lib/string/index.mjs.map +1 -0
- package/dist/lib/string/union.mjs +6 -0
- package/dist/lib/string/union.mjs.map +1 -0
- package/dist/lib/tryRunLocalScript.mjs +57 -0
- package/dist/lib/tryRunLocalScript.mjs.map +1 -0
- package/dist/lib/updo/applyUpdates.mjs +44 -0
- package/dist/lib/updo/applyUpdates.mjs.map +1 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs +48 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs.map +1 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs +53 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs.map +1 -0
- package/dist/lib/updo/index.mjs +594 -0
- package/dist/lib/updo/index.mjs.map +1 -0
- package/dist/lib/updo/interactiveSelect.mjs +185 -0
- package/dist/lib/updo/interactiveSelect.mjs.map +1 -0
- package/dist/lib/updo/interfaces.mjs +1 -0
- package/dist/lib/updo/interfaces.mjs.map +1 -0
- package/dist/lib/updo/renderTable.mjs +79 -0
- package/dist/lib/updo/renderTable.mjs.map +1 -0
- package/dist/lib/updo/resolveVersions.mjs +49 -0
- package/dist/lib/updo/resolveVersions.mjs.map +1 -0
- package/dist/lib/updo/runUpdo.mjs +511 -0
- package/dist/lib/updo/runUpdo.mjs.map +1 -0
- package/dist/lib/withErrnoException.mjs +13 -0
- package/dist/lib/withErrnoException.mjs.map +1 -0
- package/dist/lib/withError.mjs +8 -0
- package/dist/lib/withError.mjs.map +1 -0
- package/dist/lib/yarn/index.mjs +39 -0
- package/dist/lib/yarn/index.mjs.map +1 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs +18 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs.map +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/index.mjs +23 -0
- package/dist/lib/yarn/workspace/index.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs +22 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs +15 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs.map +1 -0
- package/dist/lib/yarn/yarnInitCwd.mjs +8 -0
- package/dist/lib/yarn/yarnInitCwd.mjs.map +1 -0
- package/dist/loadPackageConfig.mjs +18 -0
- package/dist/loadPackageConfig.mjs.map +1 -0
- package/dist/pm/PackageManager.mjs +1 -0
- package/dist/pm/PackageManager.mjs.map +1 -0
- package/dist/pm/detectPackageManager.mjs +10 -0
- package/dist/pm/detectPackageManager.mjs.map +1 -0
- package/dist/pm/detectReact.mjs +52 -0
- package/dist/pm/detectReact.mjs.map +1 -0
- package/dist/pm/index.mjs +263 -0
- package/dist/pm/index.mjs.map +1 -0
- package/dist/pm/pnpmPackageManager.mjs +97 -0
- package/dist/pm/pnpmPackageManager.mjs.map +1 -0
- package/dist/pm/registry.mjs +27 -0
- package/dist/pm/registry.mjs.map +1 -0
- package/dist/pm/yarnPackageManager.mjs +112 -0
- package/dist/pm/yarnPackageManager.mjs.map +1 -0
- package/dist/types.d.mjs +1 -0
- package/dist/types.d.mjs.map +1 -0
- package/dist/xy/build/buildCommand.mjs +194 -0
- package/dist/xy/build/buildCommand.mjs.map +1 -0
- package/dist/xy/build/compileCommand.mjs +203 -0
- package/dist/xy/build/compileCommand.mjs.map +1 -0
- package/dist/xy/build/compileOnlyCommand.mjs +204 -0
- package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
- package/dist/xy/build/copyAssetsCommand.mjs +92 -0
- package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
- package/dist/xy/build/index.mjs +487 -0
- package/dist/xy/build/index.mjs.map +1 -0
- package/dist/xy/build/rebuildCommand.mjs +156 -0
- package/dist/xy/build/rebuildCommand.mjs.map +1 -0
- package/dist/xy/build/recompileCommand.mjs +215 -0
- package/dist/xy/build/recompileCommand.mjs.map +1 -0
- package/dist/xy/common/checkCommand.mjs +1909 -0
- package/dist/xy/common/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/checkCommand.mjs +207 -0
- package/dist/xy/common/claude/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/cleanCommand.mjs +78 -0
- package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/claude/commandsCommand.mjs +134 -0
- package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/index.mjs +734 -0
- package/dist/xy/common/claude/index.mjs.map +1 -0
- package/dist/xy/common/claude/initCommand.mjs +458 -0
- package/dist/xy/common/claude/initCommand.mjs.map +1 -0
- package/dist/xy/common/claude/rulesCommand.mjs +167 -0
- package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
- package/dist/xy/common/claude/settingsCommand.mjs +115 -0
- package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/skillsCommand.mjs +140 -0
- package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
- package/dist/xy/common/cleanDocsCommand.mjs +74 -0
- package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
- package/dist/xy/common/deadCommand.mjs +137 -0
- package/dist/xy/common/deadCommand.mjs.map +1 -0
- package/dist/xy/common/genDocsCommand.mjs +175 -0
- package/dist/xy/common/genDocsCommand.mjs.map +1 -0
- package/dist/xy/common/gitignoreCommand.mjs +165 -0
- package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
- package/dist/xy/common/gitlintCommand.mjs +89 -0
- package/dist/xy/common/gitlintCommand.mjs.map +1 -0
- package/dist/xy/common/index.mjs +4654 -0
- package/dist/xy/common/index.mjs.map +1 -0
- package/dist/xy/common/licenseCommand.mjs +108 -0
- package/dist/xy/common/licenseCommand.mjs.map +1 -0
- package/dist/xy/common/npmignoreGenCommand.mjs +100 -0
- package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/cleanCommand.mjs +102 -0
- package/dist/xy/common/orphan/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/index.mjs +138 -0
- package/dist/xy/common/orphan/index.mjs.map +1 -0
- package/dist/xy/common/orphan/listCommand.mjs +100 -0
- package/dist/xy/common/orphan/listCommand.mjs.map +1 -0
- package/dist/xy/common/packmanCommand.mjs +1538 -0
- package/dist/xy/common/packmanCommand.mjs.map +1 -0
- package/dist/xy/common/readme/genCommand.mjs +395 -0
- package/dist/xy/common/readme/genCommand.mjs.map +1 -0
- package/dist/xy/common/readme/index.mjs +538 -0
- package/dist/xy/common/readme/index.mjs.map +1 -0
- package/dist/xy/common/readme/initCommand.mjs +109 -0
- package/dist/xy/common/readme/initCommand.mjs.map +1 -0
- package/dist/xy/common/readme/lintCommand.mjs +181 -0
- package/dist/xy/common/readme/lintCommand.mjs.map +1 -0
- package/dist/xy/common/repo/index.mjs +1070 -0
- package/dist/xy/common/repo/index.mjs.map +1 -0
- package/dist/xy/common/repo/initCommand.mjs +273 -0
- package/dist/xy/common/repo/initCommand.mjs.map +1 -0
- package/dist/xy/common/repo/lintCommand.mjs +789 -0
- package/dist/xy/common/repo/lintCommand.mjs.map +1 -0
- package/dist/xy/common/retestCommand.mjs +163 -0
- package/dist/xy/common/retestCommand.mjs.map +1 -0
- package/dist/xy/common/testCommand.mjs +157 -0
- package/dist/xy/common/testCommand.mjs.map +1 -0
- package/dist/xy/deploy/deployCommand.mjs +214 -0
- package/dist/xy/deploy/deployCommand.mjs.map +1 -0
- package/dist/xy/deploy/index.mjs +289 -0
- package/dist/xy/deploy/index.mjs.map +1 -0
- package/dist/xy/deploy/publishCommand.mjs +218 -0
- package/dist/xy/deploy/publishCommand.mjs.map +1 -0
- package/dist/xy/index.mjs +8887 -0
- package/dist/xy/index.mjs.map +1 -0
- package/dist/xy/install/cleanCommand.mjs +182 -0
- package/dist/xy/install/cleanCommand.mjs.map +1 -0
- package/dist/xy/install/dupdepsCommand.mjs +234 -0
- package/dist/xy/install/dupdepsCommand.mjs.map +1 -0
- package/dist/xy/install/index.mjs +1006 -0
- package/dist/xy/install/index.mjs.map +1 -0
- package/dist/xy/install/reinstallCommand.mjs +292 -0
- package/dist/xy/install/reinstallCommand.mjs.map +1 -0
- package/dist/xy/install/staticsCommand.mjs +233 -0
- package/dist/xy/install/staticsCommand.mjs.map +1 -0
- package/dist/xy/install/upCommand.mjs +150 -0
- package/dist/xy/install/upCommand.mjs.map +1 -0
- package/dist/xy/install/updoCommand.mjs +550 -0
- package/dist/xy/install/updoCommand.mjs.map +1 -0
- package/dist/xy/lint/cycleCommand.mjs +289 -0
- package/dist/xy/lint/cycleCommand.mjs.map +1 -0
- package/dist/xy/lint/deplintCommand.mjs +1897 -0
- package/dist/xy/lint/deplintCommand.mjs.map +1 -0
- package/dist/xy/lint/fixCommand.mjs +398 -0
- package/dist/xy/lint/fixCommand.mjs.map +1 -0
- package/dist/xy/lint/index.mjs +3759 -0
- package/dist/xy/lint/index.mjs.map +1 -0
- package/dist/xy/lint/knipCommand.mjs +142 -0
- package/dist/xy/lint/knipCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/index.mjs +695 -0
- package/dist/xy/lint/lint/index.mjs.map +1 -0
- package/dist/xy/lint/lint/initCommand.mjs +282 -0
- package/dist/xy/lint/lint/initCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/runCommand.mjs +405 -0
- package/dist/xy/lint/lint/runCommand.mjs.map +1 -0
- package/dist/xy/lint/lintCommand.mjs +695 -0
- package/dist/xy/lint/lintCommand.mjs.map +1 -0
- package/dist/xy/lint/lintlintCommand.mjs +359 -0
- package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
- package/dist/xy/lint/publintCommand.mjs +778 -0
- package/dist/xy/lint/publintCommand.mjs.map +1 -0
- package/dist/xy/lint/relintCommand.mjs +381 -0
- package/dist/xy/lint/relintCommand.mjs.map +1 -0
- package/dist/xy/lint/sonarCommand.mjs +137 -0
- package/dist/xy/lint/sonarCommand.mjs.map +1 -0
- package/dist/xy/param.mjs +8 -0
- package/dist/xy/param.mjs.map +1 -0
- package/dist/xy/react/analyzeCommand.mjs +150 -0
- package/dist/xy/react/analyzeCommand.mjs.map +1 -0
- package/dist/xy/react/ejectCommand.mjs +150 -0
- package/dist/xy/react/ejectCommand.mjs.map +1 -0
- package/dist/xy/react/index.mjs +202 -0
- package/dist/xy/react/index.mjs.map +1 -0
- package/dist/xy/react/sitemapCommand.mjs +129 -0
- package/dist/xy/react/sitemapCommand.mjs.map +1 -0
- package/dist/xy/react/startCommand.mjs +150 -0
- package/dist/xy/react/startCommand.mjs.map +1 -0
- package/dist/xy/xy.mjs +8879 -0
- package/dist/xy/xy.mjs.map +1 -0
- package/dist/xy/xyParseOptions.mjs +117 -0
- package/dist/xy/xyParseOptions.mjs.map +1 -0
- package/dist/xy/yarn/index.mjs +188 -0
- package/dist/xy/yarn/index.mjs.map +1 -0
- package/dist/xy/yarn/upplugCommand.mjs +134 -0
- package/dist/xy/yarn/upplugCommand.mjs.map +1 -0
- package/dist/xy/yarn/upyarnCommand.mjs +129 -0
- package/dist/xy/yarn/upyarnCommand.mjs.map +1 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs +70 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs.map +1 -0
- package/package.json +119 -0
- package/templates/claude/CLAUDE-local.md +4 -0
- package/templates/claude/CLAUDE-project.md +4 -0
- package/templates/claude/commands/xy-build.md +7 -0
- package/templates/claude/commands/xy-clean.md +7 -0
- package/templates/claude/commands/xy-compile.md +7 -0
- package/templates/claude/commands/xy-cycle.md +7 -0
- package/templates/claude/commands/xy-dead.md +7 -0
- package/templates/claude/commands/xy-deplint.md +7 -0
- package/templates/claude/commands/xy-deps.md +24 -0
- package/templates/claude/commands/xy-dupdeps.md +7 -0
- package/templates/claude/commands/xy-fix.md +7 -0
- package/templates/claude/commands/xy-gen-docs.md +7 -0
- package/templates/claude/commands/xy-gitignore.md +7 -0
- package/templates/claude/commands/xy-gitlint.md +7 -0
- package/templates/claude/commands/xy-knip.md +7 -0
- package/templates/claude/commands/xy-license.md +7 -0
- package/templates/claude/commands/xy-lint-rules.md +44 -0
- package/templates/claude/commands/xy-lint.md +7 -0
- package/templates/claude/commands/xy-publint.md +7 -0
- package/templates/claude/commands/xy-rebuild.md +7 -0
- package/templates/claude/commands/xy-recompile.md +7 -0
- package/templates/claude/commands/xy-reinstall.md +7 -0
- package/templates/claude/commands/xy-relint.md +7 -0
- package/templates/claude/commands/xy-retest.md +7 -0
- package/templates/claude/commands/xy-sonar.md +7 -0
- package/templates/claude/commands/xy-test.md +7 -0
- package/templates/claude/commands/xy-up.md +9 -0
- package/templates/claude/rules/xylabs-architecture.md +8 -0
- package/templates/claude/rules/xylabs-git-workflow.md +7 -0
- package/templates/claude/rules/xylabs-naming.md +7 -0
- package/templates/claude/rules/xylabs-style.md +17 -0
- package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +223 -0
- package/templates/claude/skills/xylabs-xy-cli/SKILL.md +236 -0
- package/templates/claude/skills/xylabs-xy-deplint-fix/SKILL.md +122 -0
- package/templates/gitignore/gitignore/template.gitignore +51 -0
- package/templates/gitignore/template.gitignore +51 -0
- package/templates/readme/README.body.md +25 -0
- package/templates/readme/README.template.md +22 -0
- package/templates/repo/cli/package/package.json.tmpl +63 -0
- package/templates/repo/cli/package/src/__packageName__.ts.tmpl +21 -0
- package/templates/repo/cli/package/src/actions/index.ts +1 -0
- package/templates/repo/cli/package/src/actions/printVersion.ts.tmpl +8 -0
- package/templates/repo/cli/package/src/bin/__packageName__.ts.tmpl +12 -0
- package/templates/repo/cli/package/src/commands/index.ts +1 -0
- package/templates/repo/cli/package/src/commands/versionCommand.ts.tmpl +11 -0
- package/templates/repo/cli/package/src/index.ts.tmpl +1 -0
- package/templates/repo/cli/package/tsconfig.build.json +25 -0
- package/templates/repo/cli/package/tsconfig.json +4 -0
- package/templates/repo/cli/package/tsup.config.ts +15 -0
- package/templates/repo/cli/package/xy.config.ts +3 -0
- package/templates/repo/cli/root/CLAUDE.md.tmpl +38 -0
- package/templates/repo/cli/root/cspell.json.tmpl +13 -0
- package/templates/repo/cli/root/eslint.config.ts +28 -0
- package/templates/repo/cli/root/github/workflows/build-pnpm.yml.tmpl +34 -0
- package/templates/repo/cli/root/github/workflows/build-yarn.yml.tmpl +32 -0
- package/templates/repo/cli/root/gitignore.tmpl +47 -0
- package/templates/repo/cli/root/knip.config.ts +16 -0
- package/templates/repo/cli/root/package.json.tmpl +54 -0
- package/templates/repo/cli/root/pnpm-workspace.yaml +2 -0
- package/templates/repo/cli/root/tsconfig.json +4 -0
- package/templates/repo/cli/root/vitest.config.ts +31 -0
- package/templates/repo/cli/root/xy.config.ts.tmpl +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/xy/common/checkCommand.ts","../../../src/lib/checkResult.ts","../../../src/lib/claudeMdTemplate.ts","../../../src/lib/concurrency.ts","../../../src/lib/deleteGlob.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/file/constants.ts","../../../src/lib/file/fileLines.ts","../../../src/lib/string/empty.ts","../../../src/lib/string/union.ts","../../../src/lib/file/ReadFileSyncOptions.ts","../../../src/lib/fillTemplate.ts","../../../src/lib/generateIgnoreFiles.ts","../../../src/lib/initCwd.ts","../../../src/lib/generateReadmeFiles.ts","../../../src/lib/gitignoreTemplate.ts","../../../src/lib/latestVersions.ts","../../../src/lib/loadConfig.ts","../../../src/lib/packageName.ts","../../../src/lib/repoTemplates.ts","../../../src/lib/runInstall.ts","../../../src/lib/runSteps.ts","../../../src/actions/claude-check.ts","../../../src/actions/claude-clean.ts","../../../src/actions/claude-commands.ts","../../../src/actions/claude-rules.ts","../../../src/actions/claude-settings.ts","../../../src/actions/claude-skills.ts","../../../src/actions/clean-docs.ts","../../../src/actions/dead.ts","../../../src/actions/package-lint-deps.ts","../../../src/actions/gen-docs.ts","../../../src/actions/gitignore.ts","../../../src/actions/gitlint.ts","../../../src/actions/gitlint-fix.ts","../../../src/actions/license.ts","../../../src/actions/lint-init.ts","../../../src/actions/lintlint.ts","../../../src/actions/npmignore-gen.ts","../../../src/actions/orphan.ts","../../../src/actions/package/compile/XyConfig.ts","../../../src/actions/package/publint.ts","../../../src/actions/package-lint.ts","../../../src/actions/packman/clean.ts","../../../src/actions/packman/convert.ts","../../../src/actions/packman/convertToPnpm.ts","../../../src/actions/packman/rewriteScripts.ts","../../../src/actions/packman/rewriteSourceImports.ts","../../../src/actions/packman/swapTsScriptsDependency.ts","../../../src/actions/packman/convertToYarn.ts","../../../src/actions/packman/lint.ts","../../../src/actions/publint.ts","../../../src/actions/readme-gen.ts","../../../src/actions/readme-init.ts","../../../src/actions/readme-lint.ts","../../../src/actions/repo-init.ts","../../../src/actions/retest.ts","../../../src/actions/test.ts","../../../src/xy/common/claude/checkCommand.ts","../../../src/xy/common/claude/cleanCommand.ts","../../../src/xy/common/claude/commandsCommand.ts","../../../src/xy/common/claude/initCommand.ts","../../../src/xy/common/claude/rulesCommand.ts","../../../src/xy/common/claude/settingsCommand.ts","../../../src/xy/common/claude/skillsCommand.ts","../../../src/xy/common/claude/index.ts","../../../src/xy/common/cleanDocsCommand.ts","../../../src/xy/param.ts","../../../src/xy/common/deadCommand.ts","../../../src/xy/common/genDocsCommand.ts","../../../src/xy/common/gitignoreCommand.ts","../../../src/xy/common/gitlintCommand.ts","../../../src/xy/common/licenseCommand.ts","../../../src/xy/common/npmignoreGenCommand.ts","../../../src/xy/common/orphan/cleanCommand.ts","../../../src/xy/common/orphan/listCommand.ts","../../../src/xy/common/orphan/index.ts","../../../src/xy/common/packmanCommand.ts","../../../src/xy/common/readme/genCommand.ts","../../../src/xy/common/readme/initCommand.ts","../../../src/xy/common/readme/lintCommand.ts","../../../src/xy/common/readme/index.ts","../../../src/xy/common/repo/initCommand.ts","../../../src/xy/common/repo/lintCommand.ts","../../../src/xy/common/repo/index.ts","../../../src/xy/common/retestCommand.ts","../../../src/xy/common/testCommand.ts","../../../src/xy/common/index.ts"],"sourcesContent":["import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../actions/index.ts'\nimport {\n gitlint, gitlintFix, lintlint, packageLintMonorepo, publint, readmeLint,\n} from '../../actions/index.ts'\nimport { loadConfig } from '../../lib/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check - Run gitlint, publint, repo lint, lintlint, and readme lint',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n const verbose = !!argv.verbose\n const fix = !!argv.fix\n const jobs = argv.jobs as number\n let errors = 0\n\n if (verbose) console.log('Check')\n\n console.log(chalk.blue('\\n— gitlint —'))\n errors += fix ? gitlintFix() : gitlint()\n\n console.log(chalk.blue('\\n— publint —'))\n errors += await publint({\n fix, jobs, verbose,\n })\n\n console.log(chalk.blue('\\n— repo lint —'))\n errors += packageLintMonorepo(fix)\n\n console.log(chalk.blue('\\n— lintlint —'))\n errors += await lintlint({ fix, verbose })\n\n console.log(chalk.blue('\\n— readme lint —'))\n const config = await loadConfig<XyConfig>()\n errors += readmeLint({ config, verbose })\n\n if (errors > 0) {\n console.log(chalk.red(`${errors} issue(s) found`))\n } else {\n console.log(chalk.green('All checks passed'))\n }\n process.exitCode = errors > 0 ? 1 : 0\n },\n}\n","import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import {\n readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nimport type { PackageManagerName } from '../pm/index.ts'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'claude')\n\nexport function applyPackageManager(content: string, pm: PackageManagerName): string {\n return content.replaceAll('yarn xy', `${pm} xy`).replaceAll('yarn add', `${pm} add`)\n}\n\nexport const XYLABS_RULES_PREFIX = 'xylabs-'\nexport const XYLABS_COMMANDS_PREFIX = 'xy-'\nexport const LEGACY_COMMANDS_PREFIX = 'xylabs-'\nexport const XYLABS_SKILLS_PREFIX = 'xylabs-'\n\nexport const claudeMdRuleTemplates = (): Record<string, string> => {\n const rulesDir = PATH.resolve(templatesDir, 'rules')\n const files = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(rulesDir, file), 'utf8')\n }\n return result\n}\n\nexport const claudeCommandTemplates = (): Record<string, string> => {\n const commandsDir = PATH.resolve(templatesDir, 'commands')\n const files = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(commandsDir, file), 'utf8')\n }\n return result\n}\n\n// Returns { 'xylabs-foo': { 'SKILL.md': '...', 'other.ts': '...' } }\nexport const claudeSkillTemplates = (): Record<string, Record<string, string>> => {\n const skillsDir = PATH.resolve(templatesDir, 'skills')\n const dirs = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n const result: Record<string, Record<string, string>> = {}\n for (const dir of dirs) {\n const dirPath = PATH.resolve(skillsDir, dir)\n const files = readdirSync(dirPath, { recursive: true, encoding: 'utf8' })\n result[dir] = {}\n for (const file of files) {\n if (statSync(PATH.resolve(dirPath, file)).isFile()) {\n result[dir][file] = readFileSync(PATH.resolve(dirPath, file), 'utf8')\n }\n }\n }\n return result\n}\n\nexport const claudeMdProjectTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-project.md'), 'utf8')\n\nexport const claudeMdLocalTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-local.md'), 'utf8')\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nexport const outputStorage = new AsyncLocalStorage<string[]>()\n\nlet captureInstalled = false\n\nexport function installOutputCapture(): void {\n if (captureInstalled) return\n captureInstalled = true\n\n const originalStdoutWrite = process.stdout.write.bind(process.stdout)\n const originalStderrWrite = process.stderr.write.bind(process.stderr)\n\n function intercept(\n original: typeof process.stdout.write,\n ): typeof process.stdout.write {\n return function (chunk: string | Uint8Array, ...args: unknown[]) {\n const buffer = outputStorage.getStore()\n if (buffer) {\n buffer.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk))\n return true\n }\n return (original as (...params: unknown[]) => boolean)(chunk, ...args)\n } as typeof process.stdout.write\n }\n\n process.stdout.write = intercept(originalStdoutWrite)\n process.stderr.write = intercept(originalStderrWrite)\n}\n\nexport async function runWithConcurrency<T>(\n items: T[],\n concurrency: number,\n fn: (item: T) => Promise<void>,\n): Promise<void> {\n let next = 0\n async function worker(): Promise<void> {\n while (next < items.length) {\n const i = next++\n await fn(items[i])\n }\n }\n await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => worker()))\n}\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { existsSync } from 'node:fs'\n\nexport type PackageManagerName = 'pnpm' | 'yarn'\n\nexport function detectPackageManager(): PackageManagerName {\n if (existsSync('pnpm-lock.yaml') || existsSync('pnpm-workspace.yaml')) return 'pnpm'\n return 'yarn'\n}\n","import type { PackageManagerName } from './detectPackageManager.ts'\nimport { detectPackageManager } from './detectPackageManager.ts'\nimport type { PackageManager } from './PackageManager.ts'\n\nconst implementations = new Map<PackageManagerName, PackageManager>()\n\nexport function registerPackageManager(pm: PackageManager): void {\n implementations.set(pm.name, pm)\n}\n\nexport function getPackageManager(name?: PackageManagerName): PackageManager {\n const pmName = name ?? detectPackageManager()\n const pm = implementations.get(pmName)\n if (!pm) {\n throw new Error(\n `No package manager implementation registered for \"${pmName}\". `\n + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","export const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","export function fillTemplate(template: string, data: Record<string, string>): string {\n return template.replaceAll(/\\{\\{(.*?)\\}\\}/g, (_, key: string) => data[key.trim()] ?? '')\n}\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD()\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import { execFile } from 'node:child_process'\nimport FS, { readFileSync } from 'node:fs'\nimport {\n mkdir, readFile, writeFile,\n} from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\nimport { promisify } from 'node:util'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport { fillTemplate } from './fillTemplate.ts'\nimport { INIT_CWD } from './initCwd.ts'\n\nconst execFileAsync = promisify(execFile)\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst readmeTemplatesDir = PATH.resolve(packageRoot, 'templates', 'readme')\n\ninterface GenerateReadmeFilesParams {\n jobs: number\n logoLinkUrl?: string\n logoUrl?: string\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nfunction fillReadmeTemplate(template: string, data: Record<string, string>): string {\n const additionalData: Record<string, string> = { ...data, safeName: data.name.replaceAll('/', '__').replaceAll('@', '') }\n return fillTemplate(template, additionalData)\n}\n\nasync function generateTypedoc(packageLocation: string, entryPoints: string[]): Promise<string> {\n const tempDir = PATH.join(packageLocation, '.temp-typedoc')\n\n try {\n if (!FS.existsSync(tempDir)) {\n FS.mkdirSync(tempDir, { recursive: true })\n }\n\n const typedocConfig = {\n disableSources: true,\n entryPointStrategy: 'expand',\n entryPoints: entryPoints.map(ep => PATH.resolve(packageLocation, ep)),\n excludeExternals: true,\n excludeInternal: true,\n excludePrivate: true,\n githubPages: false,\n hideBreadcrumbs: true,\n hideGenerator: true,\n hidePageTitle: true,\n out: tempDir,\n plugin: ['typedoc-plugin-markdown'],\n readme: 'none',\n skipErrorChecking: true,\n sort: ['source-order'],\n theme: 'markdown',\n useCodeBlocks: true,\n }\n\n const typedocJsonPath = PATH.join(tempDir, 'typedoc.json')\n FS.writeFileSync(typedocJsonPath, JSON.stringify(typedocConfig, null, 2))\n\n try {\n await execFileAsync('npx', ['typedoc', '--options', typedocJsonPath], { cwd: process.cwd() })\n } catch {\n return ''\n }\n\n return consolidateMarkdown(tempDir)\n } catch {\n return ''\n } finally {\n try {\n FS.rmSync(tempDir, { force: true, recursive: true })\n } catch {\n // ignore cleanup errors\n }\n }\n}\n\nfunction consolidateMarkdown(tempDir: string): string {\n let consolidated = '## Reference\\n\\n'\n\n const mainReadmePath = PATH.join(tempDir, 'README.md')\n if (FS.existsSync(mainReadmePath)) {\n const mainContent = FS.readFileSync(mainReadmePath, 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n\n consolidated += mainContent + '\\n\\n'\n }\n\n consolidated += processDirectory(tempDir)\n\n return consolidated\n .replaceAll(/\\n\\n\\n+/g, '\\n\\n')\n .replaceAll(/^#### /gm, '### ')\n .replaceAll(/^##### /gm, '#### ')\n .replaceAll(/^###### /gm, '##### ')\n}\n\nfunction processDirectory(dir: string, level = 0): string {\n const indent = ' '.repeat(level)\n let content = ''\n\n try {\n const items = FS.readdirSync(dir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.isDirectory()) continue\n if (item.name === 'README.md' || !item.name.endsWith('.md')) continue\n\n const fileContent = FS.readFileSync(PATH.join(dir, item.name), 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n const moduleName = item.name.replace('.md', '')\n\n content += `\\n\\n${indent}### <a id=\"${moduleName}\"></a>${moduleName}\\n\\n`\n content += fileContent\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n }\n\n for (const item of items) {\n if (!item.isDirectory()) continue\n if (item.name === 'spec' || item.name.includes('.spec')) continue\n\n content += `\\n\\n${indent}### ${item.name}\\n`\n content += processDirectory(PATH.join(dir, item.name), level + 1)\n }\n } catch {\n // skip unreadable directories\n }\n\n return content\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport const DEFAULT_README_TEMPLATE = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.template.md'), 'utf8')\nexport const DEFAULT_README_BODY = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.body.md'), 'utf8')\n\nexport function applyLogoConfig(template: string, logoUrl?: string, logoLinkUrl?: string): string {\n let result = template\n if (logoUrl) {\n result = result.replace(/\\[logo]: .+/, `[logo]: ${logoUrl}`)\n if (logoLinkUrl) {\n result = result.replace(/\\[!\\[logo]\\[]][^)]*\\)/, `[![logo][]](${logoLinkUrl})`)\n }\n } else {\n result = result.replace(/\\[!\\[logo]\\[]][^\\n]*\\n*/, '')\n result = result.replace(/\\[logo]: [^\\n]*\\n?/, '')\n }\n return result\n}\n\nexport function resolveTemplatePath(templatePath?: string): string {\n const cwd = INIT_CWD()\n return templatePath ?? PATH.join(cwd, '.xy', 'README.template.md')\n}\n\nasync function loadOrCreateTemplate(resolvedTemplatePath: string): Promise<{\n created: boolean\n template: string\n}> {\n try {\n const template = await readFile(resolvedTemplatePath, 'utf8')\n return { created: false, template }\n } catch {\n console.log(chalk.yellow(`Template not found: ${resolvedTemplatePath}`))\n const shouldCreate = await askConfirmation('Would you like to create a stock template? (y/N) ')\n if (!shouldCreate) {\n throw new Error('Template creation declined')\n }\n const template = DEFAULT_README_TEMPLATE\n await scaffoldTemplate(resolvedTemplatePath, template)\n return { created: true, template }\n }\n}\n\nexport async function scaffoldTemplate(resolvedTemplatePath: string, template: string): Promise<void> {\n const xyDir = PATH.dirname(resolvedTemplatePath)\n await mkdir(xyDir, { recursive: true })\n await writeFile(resolvedTemplatePath, template)\n console.log(chalk.green(`Created template: ${resolvedTemplatePath}`))\n const bodyPath = PATH.join(xyDir, 'README.body.md')\n await writeFile(bodyPath, DEFAULT_README_BODY)\n console.log(chalk.green(`Created body template: ${bodyPath}`))\n}\n\nasync function resolveBody(location: string, defaultBody: string): Promise<string> {\n const localBodyPath = PATH.join(location, 'README.body.md')\n try {\n return await readFile(localBodyPath, 'utf8')\n } catch {\n return defaultBody\n }\n}\n\nasync function generateReadmeForWorkspace(\n location: string,\n name: string,\n template: string,\n defaultBody: string,\n typedoc: boolean,\n verbose: boolean,\n pm: string,\n): Promise<boolean> {\n try {\n const pkgJsonPath = PATH.join(location, 'package.json')\n const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) as Record<string, string>\n const body = await resolveBody(location, defaultBody)\n const typedocContent = typedoc ? await generateTypedoc(location, ['src/index*.ts']) : ''\n const readmeContent = fillReadmeTemplate(template, {\n ...pkgJson, body, pm, typedoc: typedocContent,\n })\n await writeFile(PATH.join(location, 'README.md'), readmeContent)\n if (verbose) console.log(chalk.green(` ${name}`))\n return true\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.yellow(` Skipped ${location}: ${error.message}`))\n return false\n }\n}\n\nimport {\n installOutputCapture, outputStorage, runWithConcurrency,\n} from './concurrency.ts'\n\ninterface CapturedResult {\n output: string[]\n success: boolean\n}\n\nasync function loadDefaultBody(resolvedTemplatePath: string): Promise<string> {\n const xyBodyPath = PATH.join(PATH.dirname(resolvedTemplatePath), 'README.body.md')\n try {\n return await readFile(xyBodyPath, 'utf8')\n } catch {\n return DEFAULT_README_BODY\n }\n}\n\nfunction flushResults(results: CapturedResult[]): boolean {\n let failed = false\n for (const { output, success } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n if (!success) failed = true\n }\n return failed\n}\n\nexport async function generateReadmeFiles({\n jobs, logoLinkUrl, logoUrl, pkg, templatePath, typedoc = false, verbose = false,\n}: GenerateReadmeFilesParams): Promise<number> {\n console.log(chalk.green('Generate README Files'))\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n\n let template: string\n let templateCreated: boolean\n try {\n ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath))\n } catch {\n return 1\n }\n\n template = applyLogoConfig(template, logoUrl, logoLinkUrl)\n\n if (templateCreated) {\n console.log(chalk.green('Generating README files for all packages...'))\n }\n\n const defaultBody = await loadDefaultBody(resolvedTemplatePath)\n const pmName = detectPackageManager()\n const pm = getPackageManager()\n const singleWorkspace = pkg && !templateCreated ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const concurrency = jobs\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ output: [], success: true }))\n\n installOutputCapture()\n\n const start = performance.now()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n const success = await generateReadmeForWorkspace(ws.location, ws.name, template, defaultBody, typedoc, verbose, pmName)\n results[i] = { output, success }\n })\n },\n )\n\n const failed = flushResults(results)\n const ms = performance.now() - start\n console.log(chalk.blue(`Generated ${workspaces.length} README(s) in ${ms.toFixed(0)}ms`))\n\n return failed ? 1 : 0\n}\n","import { readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","// Auto-generated — run `yarn update-latest-versions` to refresh\n// Source: nodejs.org/dist/index.json, npm registry\n\nexport const latestVersions = {\n node: '24.14.1',\n nodeLtsCodename: 'Krypton',\n npm: '11.11.0',\n pnpm: '10.33.0',\n yarn: '4.13.0',\n} as const\n","import chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { TypeScriptLoader } from 'cosmiconfig-typescript-loader'\nimport deepmerge from 'deepmerge'\n\nlet config: Record<string, unknown>\nlet rootConfigPath: string | undefined\n\nconst workspaceConfigCache = new Map<string, Record<string, unknown>>()\nconst deprecationWarned = new Set<string>()\n\nfunction createExplorer() {\n return cosmiconfig('xy', { cache: true, loaders: { '.ts': TypeScriptLoader() } })\n}\n\nexport const loadConfig = async <T extends object>(params?: T): Promise<T> => {\n if (config === undefined) {\n const cosmicConfigResult = await createExplorer().search()\n config = (cosmicConfigResult?.config ?? {}) as Record<string, unknown>\n rootConfigPath = cosmicConfigResult?.filepath\n const configFilePath = cosmicConfigResult?.filepath\n if (configFilePath !== undefined) {\n console.log(chalk.green(`Loaded config from ${configFilePath}`))\n if (config.verbose) {\n console.log(chalk.gray(`${JSON.stringify(config, null, 2)}`))\n }\n }\n }\n return deepmerge(config, params ?? {}) as T\n}\n\n/**\n * Loads the xy.config from a specific workspace directory.\n * Returns an empty object if the workspace has no config or if\n * the found config is the root config (avoids double-applying).\n */\nasync function loadWorkspaceConfig(workspaceDir: string): Promise<Record<string, unknown>> {\n const cached = workspaceConfigCache.get(workspaceDir)\n if (cached !== undefined) return cached\n\n const result = await createExplorer().search(workspaceDir)\n\n // If no config found or it's the root config, no workspace override\n if (!result || result.filepath === rootConfigPath) {\n workspaceConfigCache.set(workspaceDir, {})\n return {}\n }\n\n const wsConfig = (result.config ?? {}) as Record<string, unknown>\n workspaceConfigCache.set(workspaceDir, wsConfig)\n return wsConfig\n}\n\n/** Deprecated top-level fields that should be under `commands`. */\nconst DEPRECATED_COMMAND_FIELDS = new Set(['deplint', 'publint'])\n\n/**\n * Resolves a command's config field from a config object.\n * Prefers `commands.[name]` over top-level `[name]`.\n * Warns once per config file when a deprecated top-level field is used.\n */\nfunction resolveCommandField(\n cfg: Record<string, unknown>,\n commandName: string,\n configPath?: string,\n): Record<string, unknown> {\n const commands = cfg.commands as Record<string, unknown> | undefined\n const fromCommands = commands?.[commandName]\n const fromTopLevel = cfg[commandName]\n\n if (fromCommands !== undefined && typeof fromCommands === 'object') {\n return fromCommands as Record<string, unknown>\n }\n\n if (fromTopLevel !== undefined && typeof fromTopLevel === 'object'\n && DEPRECATED_COMMAND_FIELDS.has(commandName)) {\n const key = `${configPath ?? 'unknown'}:${commandName}`\n if (!deprecationWarned.has(key)) {\n deprecationWarned.add(key)\n console.warn(chalk.yellow(\n `[xy] Deprecated: top-level \"${commandName}\" in ${configPath ?? 'xy.config'} — move to \"commands.${commandName}\"`,\n ))\n }\n return fromTopLevel as Record<string, unknown>\n }\n\n return {}\n}\n\n/**\n * Loads a command-specific config merged from root and workspace levels.\n * The root config provides defaults; the workspace config extends/overrides.\n * Arrays (e.g. `exclude`) are unioned and maps (e.g. `packages`) are merged\n * via deepmerge, with workspace entries overriding root entries for the same key.\n */\nexport async function loadWorkspaceCommandConfig<C>(\n workspaceDir: string,\n commandName: string,\n): Promise<C> {\n // Ensure root config is loaded\n const root = await loadConfig()\n const rootCmd = resolveCommandField(root as Record<string, unknown>, commandName, rootConfigPath)\n\n const wsConfig = await loadWorkspaceConfig(workspaceDir)\n const wsConfigPath = workspaceConfigCache.has(workspaceDir) ? workspaceDir : undefined\n const wsCmd = resolveCommandField(wsConfig, commandName, wsConfigPath)\n\n return deepmerge(rootCmd, wsCmd) as C\n}\n","import { readFileSync } from 'node:fs'\nimport path from 'node:path'\n\nimport { INIT_CWD } from './initCwd.ts'\n\nexport function packageName(): string | undefined {\n if (process.env.npm_package_name) {\n return process.env.npm_package_name\n }\n try {\n const pkgPath = path.join(INIT_CWD(), 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return pkg.name as string | undefined\n } catch {\n return undefined\n }\n}\n","import { readdirSync, readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst repoTemplatesDir = PATH.resolve(packageRoot, 'templates', 'repo')\n\nexport interface TemplateFile {\n content: string\n relativePath: string\n}\n\nfunction collectFiles(dir: string, prefix: string): TemplateFile[] {\n const results: TemplateFile[] = []\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isDirectory()) {\n results.push(...collectFiles(PATH.resolve(dir, entry.name), rel))\n } else {\n results.push({\n content: readFileSync(PATH.resolve(dir, entry.name), 'utf8'),\n relativePath: rel,\n })\n }\n }\n return results\n}\n\nexport function loadRepoTemplateFiles(template: string, section: string): TemplateFile[] {\n const dir = PATH.resolve(repoTemplatesDir, template, section)\n return collectFiles(dir, '')\n}\n\nexport function listRepoTemplates(): string[] {\n return readdirSync(repoTemplatesDir, { withFileTypes: true })\n .filter(entry => entry.isDirectory())\n .map(entry => entry.name)\n}\n","import { spawnSync } from 'node:child_process'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager } from '../pm/index.ts'\n\nexport function runInstall(cwd?: string): boolean {\n const pm = detectPackageManager()\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n","import { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, claudeMdRuleTemplates, claudeSkillTemplates,\n INIT_CWD, XYLABS_COMMANDS_PREFIX, XYLABS_RULES_PREFIX, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\ninterface CheckResult {\n missing: string[]\n outdated: string[]\n stale: string[]\n}\n\nconst checkCommands = (commandsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(commandsDir)\n ? readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkRules = (rulesDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(rulesDir)\n ? readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkSkills = (skillsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n if (!existsSync(skillDir)) {\n missing.push(skillName)\n continue\n }\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(`${skillName}/${filename}`)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(`${skillName}/${filename}`)\n }\n }\n }\n\n const templateNames = new Set(Object.keys(rawTemplates))\n const stale = existsSync(skillsDir)\n ? readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory() && !templateNames.has(f),\n )\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst logSection = (label: string, result: CheckResult): boolean => {\n const issues = [...result.missing, ...result.outdated, ...result.stale]\n if (issues.length === 0) {\n console.log(chalk.green(` \\u2714 ${label}`))\n return true\n }\n\n console.log(chalk.red(` \\u2718 ${label}`))\n for (const file of result.missing) {\n console.log(chalk.yellow(` missing: ${file}`))\n }\n for (const file of result.outdated) {\n console.log(chalk.yellow(` outdated: ${file}`))\n }\n for (const file of result.stale) {\n console.log(chalk.yellow(` stale: ${file}`))\n }\n return false\n}\n\nexport function claudeCheck(): number {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n\n console.log(chalk.bold('Claude configuration check:'))\n console.log()\n\n const commandsResult = checkCommands(PATH.resolve(claudeDir, 'commands'))\n const rulesResult = checkRules(PATH.resolve(claudeDir, 'rules'))\n const skillsResult = checkSkills(PATH.resolve(claudeDir, 'skills'))\n\n const commandsOk = logSection('commands', commandsResult)\n const rulesOk = logSection('rules', rulesResult)\n const skillsOk = logSection('skills', skillsResult)\n\n console.log()\n if (commandsOk && rulesOk && skillsOk) {\n console.log(chalk.green('All Claude configuration is up to date.'))\n } else {\n console.log(chalk.yellow('Run `xy claude init` to sync all configuration.'))\n }\n\n return 0\n}\n","import {\n existsSync, readdirSync, rmSync, unlinkSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nfunction removeFile(filePath: string, label: string): boolean {\n if (existsSync(filePath)) {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nfunction removeDir(dirPath: string, label: string): boolean {\n if (existsSync(dirPath)) {\n rmSync(dirPath, { recursive: true })\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nexport function claudeClean(): number {\n console.log(chalk.green('Clean Claude configuration'))\n const cwd = INIT_CWD()\n let removed = 0\n\n // Root-level files\n const rootFiles = ['CLAUDE.md', 'CLAUDE.local.md']\n for (const file of rootFiles) {\n if (removeFile(PATH.resolve(cwd, file), file)) removed++\n }\n\n // .claude directory\n if (removeDir(PATH.resolve(cwd, '.claude'), '.claude/')) removed++\n\n // Package-level CLAUDE.md files\n const packagesDir = PATH.resolve(cwd, 'packages')\n if (existsSync(packagesDir)) {\n const findClaudeFiles = (dir: string, prefix: string) => {\n const entries = readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = PATH.resolve(dir, entry.name)\n const label = `${prefix}${entry.name}`\n if (entry.isFile() && (entry.name === 'CLAUDE.md' || entry.name === 'CLAUDE.local.md')) {\n if (removeFile(fullPath, label)) removed++\n } else if (entry.isDirectory() && entry.name === '.claude') {\n if (removeDir(fullPath, `${label}/`)) removed++\n } else if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n findClaudeFiles(fullPath, `${label}/`)\n }\n }\n }\n findClaudeFiles(packagesDir, 'packages/')\n }\n\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} item(s)`))\n } else {\n console.log(chalk.gray(' Nothing to clean'))\n }\n\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, INIT_CWD,\n LEGACY_COMMANDS_PREFIX, XYLABS_COMMANDS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncCommandFiles = (commandsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleCommands = (commandsDir: string, templateNames: Set<string>) => {\n const existingCommands = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingCommands) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(commandsDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst removeLegacyCommands = (commandsDir: string): number => {\n const legacyFiles = readdirSync(commandsDir).filter(f => f.startsWith(LEGACY_COMMANDS_PREFIX) && f.endsWith('.md'))\n for (const file of legacyFiles) {\n unlinkSync(PATH.resolve(commandsDir, file))\n }\n return legacyFiles.length\n}\n\nconst logCommandsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: already up to date`))\n }\n}\n\nexport const claudeCommands = (): number => {\n const cwd = INIT_CWD()\n const commandsDir = PATH.resolve(cwd, '.claude', 'commands')\n\n mkdirSync(commandsDir, { recursive: true })\n\n const legacy = removeLegacyCommands(commandsDir)\n const {\n created, templateNames, updated,\n } = syncCommandFiles(commandsDir)\n const removed = removeStaleCommands(commandsDir, templateNames)\n logCommandsResult(created, updated, removed + legacy)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeMdLocalTemplate, claudeMdRuleTemplates, INIT_CWD,\n XYLABS_RULES_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncRuleFiles = (rulesDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleRules = (rulesDir: string, templateNames: Set<string>) => {\n const existingRules = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingRules) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(rulesDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst logRulesResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: already up to date`))\n }\n}\n\nconst ensureProjectClaudeMd = (cwd: string, force?: boolean) => {\n const projectPath = PATH.resolve(cwd, 'CLAUDE.md')\n\n if (!existsSync(projectPath) || force) {\n if (force && existsSync(projectPath)) {\n console.log(chalk.yellow('Regenerating CLAUDE.md'))\n }\n console.log(chalk.green('Generating CLAUDE.md via claude /init...'))\n const result = spawnSync('claude', ['-p', '/init', '--allowedTools', 'Read', 'Write', 'Glob', 'Grep'], {\n cwd,\n shell: true,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.error(chalk.red('claude /init failed — is Claude Code installed?'))\n return 1\n }\n } else {\n console.log(chalk.gray('CLAUDE.md already exists (skipped, use --force to regenerate)'))\n }\n return 0\n}\n\nconst ensureLocalClaudeMd = (cwd: string) => {\n const localPath = PATH.resolve(cwd, 'CLAUDE.local.md')\n\n if (existsSync(localPath)) {\n console.log(chalk.gray('CLAUDE.local.md already exists (skipped)'))\n } else {\n writeFileSync(localPath, claudeMdLocalTemplate(), 'utf8')\n console.log(chalk.green('Generated CLAUDE.local.md'))\n }\n}\n\nexport const claudeRules = ({ force }: { force?: boolean } = {}): number => {\n const cwd = INIT_CWD()\n const rulesDir = PATH.resolve(cwd, '.claude', 'rules')\n\n mkdirSync(rulesDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncRuleFiles(rulesDir)\n const removed = removeStaleRules(rulesDir, templateNames)\n logRulesResult(created, updated, removed)\n const claudeMdResult = ensureProjectClaudeMd(cwd, force)\n ensureLocalClaudeMd(cwd)\n\n return claudeMdResult ?? 0\n}\n","import {\n existsSync, mkdirSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nexport type SettingsLevel = 'restrictive' | 'permissive'\n\nconst DENY_LIST = [\n 'Bash(git push --force *)',\n 'Bash(git reset --hard *)',\n 'Bash(rm -rf /*)',\n]\n\nconst RESTRICTIVE_ALLOW = [\n 'Bash(git *)',\n 'Bash(yarn *)',\n 'Bash(pnpm *)',\n 'Bash(npx *)',\n 'Bash(ls *)',\n 'Bash(mkdir *)',\n 'Bash(cp *)',\n 'Bash(mv *)',\n 'Bash(rm *)',\n 'Bash(cat *)',\n 'Bash(head *)',\n 'Bash(tail *)',\n 'Bash(echo *)',\n 'Bash(pwd)',\n 'Bash(which *)',\n 'Bash(grep *)',\n 'Bash(find *)',\n 'Bash(wc *)',\n 'Bash(npm view *)',\n 'Bash(gh *)',\n 'Read',\n 'Edit',\n 'Write',\n 'Glob',\n 'Grep',\n 'Skill',\n]\n\nconst PERMISSIVE_ALLOW = [\n ...RESTRICTIVE_ALLOW,\n 'Bash(node *)',\n 'Bash(python3 *)',\n 'Bash(claude *)',\n 'Bash(sed *)',\n 'Bash(xargs *)',\n 'Bash(tee *)',\n]\n\nfunction buildSettings(level: SettingsLevel): object {\n return {\n permissions: {\n allow: level === 'restrictive' ? RESTRICTIVE_ALLOW : PERMISSIVE_ALLOW,\n deny: DENY_LIST,\n },\n }\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport async function claudeSettings({ level = 'permissive' }: { level?: SettingsLevel } = {}): Promise<number> {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n const settingsPath = PATH.resolve(claudeDir, 'settings.local.json')\n\n mkdirSync(claudeDir, { recursive: true })\n\n if (existsSync(settingsPath)) {\n const confirmed = await askConfirmation(\n chalk.yellow(`${settingsPath} already exists. Replace it? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray('Skipped — existing settings.local.json preserved'))\n return 0\n }\n }\n\n const settings = buildSettings(level)\n writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Generated .claude/settings.local.json (${level})`))\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeSkillTemplates, INIT_CWD, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncSkillFiles = (skillsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n const templateNames = new Set(Object.keys(rawTemplates))\n let updated = 0\n let created = 0\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n mkdirSync(skillDir, { recursive: true })\n\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n mkdirSync(PATH.dirname(targetPath), { recursive: true })\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleSkills = (skillsDir: string, templateNames: Set<string>) => {\n const existingSkills = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n let removed = 0\n\n for (const dir of existingSkills) {\n if (!templateNames.has(dir)) {\n rmSync(PATH.resolve(skillsDir, dir), { recursive: true })\n removed++\n }\n }\n\n return removed\n}\n\nconst logSkillsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`))\n }\n}\n\nexport const claudeSkills = (): number => {\n const cwd = INIT_CWD()\n const skillsDir = PATH.resolve(cwd, '.claude', 'skills')\n\n mkdirSync(skillsDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncSkillFiles(skillsDir)\n const removed = removeStaleSkills(skillsDir, templateNames)\n logSkillsResult(created, updated, removed)\n\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob, packageName } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of getPackageManager().listWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const dead = () => {\n return runSteps('Dead', [['ts-prune', ['-p', 'tsconfig.json']]])\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { LintResult } from './package-lint.ts'\n\nfunction readWorkspacePackageJson(cwd: string, location: string): Record<string, unknown> | undefined {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n return JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction writeWorkspacePackageJson(cwd: string, location: string, pkg: Record<string, unknown>) {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction buildWorkspaceVersionMap(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Map<string, string> {\n const map = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) map.set(name, version)\n }\n return map\n}\n\n/**\n * Derives the expected peerDep range from the workspace protocol used in\n * the matching devDependency and the current version of the target package.\n *\n * workspace:~ + version 7.6.21 → ~7.6\n * workspace:^ + version 7.6.21 → ^7\n *\n * Falls back to ~major.minor if no matching devDep is found.\n */\nfunction expectedPeerRange(devDepVersion: string | undefined, targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n\n if (devDepVersion === 'workspace:^') {\n return `^${parsed.major}`\n }\n return `~${parsed.major}.${parsed.minor}`\n}\n\n// --- Version consistency checks ---\n\nexport function checkVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n\n if (rootPkg.version !== undefined) {\n result.fixable.push('Root package.json should not have a \"version\" field in a monorepo')\n }\n\n const versions = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n versions.set(name, version)\n } else {\n result.errors.push(`${name} (${location}) is missing a \"version\" field`)\n }\n }\n\n const uniqueVersions = new Set(versions.values())\n if (uniqueVersions.size > 1) {\n const versionList = [...uniqueVersions].toSorted(semver.rcompare)\n for (const [name, version] of versions) {\n if (version !== versionList[0]) {\n result.fixable.push(`${name} has version ${version} (expected ${versionList[0]})`)\n }\n }\n }\n\n return result\n}\n\nexport function fixVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n writeRootPackageJson: (cwd: string, pkg: Record<string, unknown>) => void,\n workspaces: { location: string; name: string }[],\n): void {\n if (rootPkg.version !== undefined) {\n delete rootPkg.version\n writeRootPackageJson(cwd, rootPkg)\n console.log(chalk.green(' ✔ Fixed: removed \"version\" from root package.json'))\n }\n\n const versions: string[] = []\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version && semver.valid(version)) {\n versions.push(version)\n }\n }\n\n if (versions.length === 0) return\n\n const highest = versions.toSorted(semver.rcompare)[0]\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n if (pkg.version !== highest) {\n pkg.version = highest\n writeWorkspacePackageJson(cwd, location, pkg)\n console.log(chalk.green(` ✔ Fixed: set version to ${highest} in ${name} (${location})`))\n }\n }\n}\n\n// --- Internal dependency version checks (dependencies and devDependencies only) ---\n\nfunction expectedDepVersion(targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n return `~${targetVersion}`\n}\n\nexport function checkInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\" (not workspace: protocol)`,\n )\n } else if (version !== expected) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\"`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version !== expected) {\n deps[dep] = expected\n console.log(chalk.green(` ✔ Fixed: set ${depField}.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Workspace protocol checks (pnpm — dependencies and devDependencies only) ---\n\nexport function checkWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should use workspace: protocol`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n deps[dep] = 'workspace:~'\n console.log(chalk.green(` ✔ Fixed: set ${depField}.${dep} to \"workspace:~\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Internal peerDependency version checks ---\n\nexport function checkInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n if (version.startsWith('workspace:')) {\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} uses workspace: protocol — should be \"${expected}\"`,\n )\n continue\n }\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected && !semver.satisfies(targetVersion, version)) {\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} is \"${version}\" — current version ${targetVersion} is not satisfied; expected \"${expected}\"`,\n )\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(` ✔ Fixed: set peerDependencies.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n/**\n * Syncs all internal peerDependency versions to match current workspace versions.\n * Called by xy publish to ensure peerDeps are correct before publishing.\n */\nexport function syncInternalPeerVersions(): number {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n let updated = 0\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(`Publish: updated ${name} peerDependencies.${dep} to \"${expected}\"`))\n modified = true\n updated++\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n\n return updated\n}\n\n/**\n * Reads the shared monorepo version from the first non-root workspace\n * and logs it. Call at the end of deploy to report the new version.\n */\nexport function logMonorepoVersion(): void {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n console.log(chalk.green(`\\nDeployed version: ${chalk.bold(version)}`))\n return\n }\n }\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface GenDocsParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n}\n\nexport interface GenDocsPackageParams { pkg: string }\n\nexport const genDocs = ({\n jobs, pkg, incremental,\n}: GenDocsParams) => {\n return pkg ? genDocsPackage({ pkg }) : genDocsAll({ incremental, jobs })\n}\n\nexport const genDocsPackage = ({ pkg }: GenDocsPackageParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [${pkg}]`, [pm.runInWorkspace(pkg, 'package-gen-docs')])\n}\n\nexport const genDocsAll = ({ incremental, jobs }: GenDocsParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [All${incremental ? '-Incremental' : ''}]`, [\n pm.foreachWorkspace('package-gen-docs', [], { incremental, jobs }),\n ])\n}\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, INIT_CWD,\n readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nconst COMMENT_PREFIX = '#'\n\nconst isComment = (line: string): boolean => line.startsWith(COMMENT_PREFIX)\n\nconst isNegation = (line: string): boolean => line.startsWith('!')\n\n/** Parse the template into sections (comment + entries) */\nfunction parseTemplateSections(lines: string[]): string[][] {\n const sections: string[][] = []\n let current: string[] = []\n for (const line of lines) {\n if (isComment(line)) {\n if (current.length > 0) {\n sections.push(current)\n }\n current = [line]\n } else {\n current.push(line)\n }\n }\n if (current.length > 0) {\n sections.push(current)\n }\n return sections\n}\n\n/** Merge template entries into existing entries, preserving structure */\nfunction mergeWithTemplate(existing: string[], templateContent: string): string[] {\n const templateLines = templateContent.split('\\n').filter(line => line.trim().length > 0)\n const sections = parseTemplateSections(templateLines)\n\n // Collect all existing non-comment, non-negation entries\n const existingEntries = new Set(existing.filter(line => !isComment(line)))\n\n // Find template entries that are missing from existing\n const templateEntries = new Set(templateLines.filter(line => !isComment(line)))\n\n // Find custom entries (in existing but not in template)\n const customEntries = [...existingEntries].filter(entry => !templateEntries.has(entry))\n\n // Build the output: template sections first, then custom entries\n const result: string[] = []\n for (const section of sections) {\n for (const line of section) {\n result.push(line)\n }\n result.push('')\n }\n\n if (customEntries.length > 0) {\n result.push('# Custom')\n const sorted = [...union(customEntries, [])].toSorted((a, b) => {\n // Negation patterns sort after their positive counterparts\n if (isNegation(a) && !isNegation(b)) return 1\n if (!isNegation(a) && isNegation(b)) return -1\n return a.localeCompare(b)\n })\n for (const entry of sorted) {\n result.push(entry)\n }\n result.push('')\n }\n\n return result\n}\n\nfunction removePackageGitignores(cwd: string): number {\n let removed = 0\n const workspaces = getPackageManager().listWorkspaces()\n for (const { location } of workspaces) {\n // Skip root workspace\n if (location === '.') continue\n const filePath = `${cwd}/${location}/.gitignore`\n try {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${location}/.gitignore`))\n removed++\n } catch {\n // File doesn't exist — nothing to do\n }\n }\n return removed\n}\n\n/** @deprecated Use gitignore instead */\nexport const gitignoreGen = gitignore\n\nexport function gitignore(): number {\n console.log(chalk.green('Generate .gitignore'))\n const cwd = INIT_CWD()\n const gitignorePath = `${cwd}/.gitignore`\n\n try {\n const templateContent = gitignoreTemplate()\n const existing = readNonEmptyLines(gitignorePath)\n const merged = mergeWithTemplate(existing, templateContent)\n writeLines(gitignorePath, merged)\n console.log(chalk.green(' Root .gitignore updated'))\n\n const removed = removePackageGitignores(cwd)\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} package .gitignore file(s)`))\n }\n\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(chalk.red(`Generate .gitignore failed: ${error.message}`))\n return 1\n }\n}\n","import chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlint = () => {\n console.log(`\\nGitlint Start [${process.cwd()}]\\n`)\n let valid = 0\n let warnings = 0\n const errors = 0\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n const warn = (message: string) => {\n console.warn(chalk.yellow(`Warning: ${message}`))\n warnings++\n }\n\n if (gitConfig.core.ignorecase) {\n warn('Please set core.ignorecase to FALSE in .git/config file [run yarn gitlint-fix]')\n } else {\n valid++\n }\n\n if (gitConfig.core.autocrlf === false) {\n valid++\n } else {\n warn('Please set core.autocrlf to FALSE in .git/config file [run yarn gitlint-fix]')\n }\n\n if (gitConfig.core.eol === 'lf') {\n valid++\n } else {\n warn('Please set core.eol to \"lf\" in .git/config file [run yarn gitlint-fix]')\n }\n\n const resultMessages: string[] = []\n if (valid > 0) {\n resultMessages.push(chalk.green(`Passed: ${valid}`))\n }\n if (warnings > 0) {\n resultMessages.push(chalk.yellow(`Warnings: ${warnings}`))\n }\n if (errors > 0) {\n resultMessages.push(chalk.red(` Errors: ${errors}`))\n }\n console.warn(`Gitlint Finish [ ${resultMessages.join(' | ')} ]\\n`)\n return warnings + errors === 0 ? 0 : 1\n}\n","import { execSync } from 'node:child_process'\n\nimport chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlintFix = () => {\n console.log(`\\nGitlint Fix Start [${process.cwd()}]\\n`)\n\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n if (gitConfig.core.ignorecase) {\n execSync('git config core.ignorecase false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.ignorecase to be false\\n'))\n }\n\n if (gitConfig.core.autocrlf !== false) {\n execSync('git config core.autocrlf false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.autocrlf to be false\\n'))\n }\n\n if (gitConfig.core.eol !== 'lf') {\n execSync('git config core.eol lf', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.eol to be \"lf\"\\n'))\n }\n\n return 1\n}\n","import chalk from 'chalk'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (const license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license.startsWith('(') && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import {\n existsSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\nimport { INIT_CWD, runInstall } from '../lib/index.ts'\n\nexport interface LintInitParams {\n verbose?: boolean\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nconst DISALLOWED_IMPORTS_XYLABS = [\n '@xylabs/api',\n '@xylabs/array',\n '@xylabs/arraybuffer',\n '@xylabs/assert',\n '@xylabs/axios',\n '@xylabs/base',\n '@xylabs/bignumber',\n '@xylabs/buffer',\n '@xylabs/creatable',\n '@xylabs/decimal-precision',\n '@xylabs/delay',\n '@xylabs/enum',\n '@xylabs/error',\n '@xylabs/eth-address',\n '@xylabs/events',\n '@xylabs/exists',\n '@xylabs/forget',\n '@xylabs/function-name',\n '@xylabs/hex',\n '@xylabs/log',\n '@xylabs/logger',\n '@xylabs/object',\n '@xylabs/platform',\n '@xylabs/profile',\n '@xylabs/promise',\n '@xylabs/retry',\n '@xylabs/set',\n '@xylabs/static-implements',\n '@xylabs/storage',\n '@xylabs/telemetry',\n '@xylabs/telemetry-exporter',\n '@xylabs/timer',\n '@xylabs/typeof',\n '@xylabs/url',\n '@xylabs/zod',\n]\n\nconst DISALLOWED_IMPORTS_XYO = [\n '@xyo-network/core-payload-plugins',\n '@xyo-network/manifest',\n '@xyo-network/modules',\n '@xyo-network/protocol',\n '@xyo-network/sdk-utils',\n '@xyo-network/shared',\n '@xyo-network/manifest-model',\n '@xyo-network/manifest-wrapper',\n '@xyo-network/boundwitness',\n '@xyo-network/core',\n '@xyo-network/crypto',\n '@xyo-network/payload',\n '@xyo-network/api',\n '@xyo-network/api-models',\n '@xyo-network/dns',\n '@xyo-network/metamask-connector',\n '@xyo-network/module-factory-locator',\n '@xyo-network/schema-payload-plugin',\n '@xyo-network/archivist-memory',\n '@xyo-network/id-payload-plugin',\n '@xyo-network/wallet',\n '@xyo-network/network',\n '@xyo-network/payload-plugin',\n '@xyo-network/payloadset-plugin',\n '@xyo-network/quadkey',\n '@xyo-network/schema-cache',\n '@xyo-network/schema-name-validator',\n '@xyo-network/witnesses',\n]\n\nfunction getRequiredDevDependencies(react: boolean): Record<string, string> {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n return {\n [configPkg]: 'workspace:^',\n eslint: '^10.0.0',\n }\n}\n\nfunction formatDisallowedArray(name: string, imports: readonly string[]): string {\n const items = imports.map(i => ` '${i}',`).join('\\n')\n return `const ${name} = [\\n${items}\\n]`\n}\n\nfunction generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n}: { react: boolean; useXyLabsBarrel: boolean; useXyoBarrel: boolean }): string {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n const lines: string[] = [\n \"import type { Linter } from 'eslint'\",\n '',\n `import { config as xylabsConfig } from '${configPkg}'`,\n '',\n ]\n\n if (useXyLabsBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyLabs', DISALLOWED_IMPORTS_XYLABS), '')\n }\n\n if (useXyoBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyo', DISALLOWED_IMPORTS_XYO), '')\n }\n\n // eslint-disable-next-line @stylistic/max-len\n lines.push('const config: Linter.Config[] = [', \" { ignores: ['.yarn/**', 'build', '**/build/**', '**/dist/**', 'dist', 'node_modules/**', '**/node_modules/**', '**/*.md/**', '.claude/worktrees/*'] },\", ' ...xylabsConfig,')\n\n if (useXyLabsBarrel || useXyoBarrel) {\n lines.push(' {', ' rules:', ' {', \" 'no-restricted-imports': [\", \" 'warn',\", ' {')\n\n if (useXyLabsBarrel && useXyoBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ...disallowedImportsXyo,', ' ],')\n } else if (useXyLabsBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ],')\n } else {\n lines.push(' paths: [', ' ...disallowedImportsXyo,', ' ],')\n }\n\n lines.push(' },', ' ],', ' },', ' },')\n }\n\n lines.push(']', '', 'export default config', '')\n\n return lines.join('\\n')\n}\n\nfunction addDevDependencies(packageJsonPath: string, requiredDeps: Record<string, string>, verbose?: boolean): boolean {\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n let changed = false\n\n for (const [name, version] of Object.entries(requiredDeps)) {\n if (!devDeps[name]) {\n devDeps[name] = version\n changed = true\n if (verbose) console.log(chalk.gray(` Added ${name}@${version} to devDependencies`))\n } else if (verbose) {\n console.log(chalk.gray(` ${name} already in devDependencies`))\n }\n }\n\n if (changed) {\n // sort devDependencies alphabetically\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green('Updated package.json devDependencies'))\n } else {\n console.log(chalk.gray('package.json devDependencies already up to date'))\n }\n return changed\n}\n\nexport function detectReactInMonorepo(cwd: string, verbose?: boolean): boolean {\n const packageJsonPaths = globSync('packages/**/package.json', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n for (const relPath of packageJsonPaths) {\n const fullPath = PATH.resolve(cwd, relPath)\n try {\n const content = readFileSync(fullPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n // Only check dependencies and peerDependencies — devDependencies on react\n // can appear in tooling packages (eslint configs, test utilities) that don't\n // indicate the repo actually uses React\n const deps = pkg.dependencies as Record<string, string> | undefined\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (deps?.react || peerDeps?.react) {\n if (verbose) console.log(chalk.gray(` React detected in ${relPath}`))\n return true\n }\n } catch {\n // skip unreadable package.json\n }\n }\n return false\n}\n\nfunction findExistingConfig(configPath: string, legacyConfigPath: string): string | undefined {\n if (existsSync(configPath)) return configPath\n if (existsSync(legacyConfigPath)) return legacyConfigPath\n return undefined\n}\n\nfunction removeLegacyConfig(legacyConfigPath: string): void {\n if (existsSync(legacyConfigPath)) {\n unlinkSync(legacyConfigPath)\n console.log(chalk.gray('Removed legacy eslint.config.mjs'))\n }\n}\n\nfunction updateDependencies(packageJsonPath: string, react: boolean, cwd: string, verbose?: boolean): void {\n if (!existsSync(packageJsonPath)) {\n console.log(chalk.yellow('No package.json found — skipping dependency updates'))\n return\n }\n const changed = addDevDependencies(packageJsonPath, getRequiredDevDependencies(react), verbose)\n if (changed) {\n runInstall(cwd)\n }\n}\n\nexport async function lintInit({ verbose }: LintInitParams = {}): Promise<number> {\n const cwd = INIT_CWD()\n const configPath = PATH.resolve(cwd, 'eslint.config.ts')\n const legacyConfigPath = PATH.resolve(cwd, 'eslint.config.mjs')\n\n const existingPath = findExistingConfig(configPath, legacyConfigPath)\n if (existingPath) {\n const filename = PATH.basename(existingPath)\n const confirmed = await askConfirmation(\n chalk.yellow(`${filename} already exists. Replace it with eslint.config.ts? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray(`Skipped — existing ${filename} preserved`))\n return 0\n }\n }\n\n const react = detectReactInMonorepo(cwd, verbose)\n if (react) {\n console.log(chalk.cyan('Detected React packages — using @xylabs/eslint-config-react-flat'))\n } else if (verbose) {\n console.log(chalk.gray(' No React packages detected — using @xylabs/eslint-config-flat'))\n }\n\n const useXyLabsBarrel = await askConfirmation(\n chalk.cyan('Disallow @xylabs/sdk-js barrel imports? (y/N) '),\n )\n const useXyoBarrel = await askConfirmation(\n chalk.cyan('Disallow @xyo-network/sdk-js barrel imports? (y/N) '),\n )\n\n const config = generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n })\n writeFileSync(configPath, config, 'utf8')\n console.log(chalk.green('Generated eslint.config.ts'))\n\n removeLegacyConfig(legacyConfigPath)\n updateDependencies(PATH.resolve(cwd, 'package.json'), react, cwd, verbose)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { findUp } from 'find-up'\n\nimport { runInstall } from '../lib/index.ts'\nimport { detectReactInMonorepo } from './lint-init.ts'\n\ninterface RuleEntry {\n level: string\n options?: unknown[]\n}\n\ninterface LintlintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface ConfigBlock {\n rules?: Record<string, unknown>\n}\n\ninterface RuleComparison {\n additions: { local: RuleEntry; rule: string }[]\n overrides: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n redundant: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n}\n\nfunction parseRuleValue(value: unknown): RuleEntry | undefined {\n if (typeof value === 'string') {\n return { level: value }\n }\n if (typeof value === 'number') {\n return { level: String(value) }\n }\n if (Array.isArray(value) && value.length > 0) {\n return {\n level: String(value[0]),\n options: value.length > 1 ? value.slice(1) : undefined,\n }\n }\n return undefined\n}\n\nfunction normalizeLevel(level: string): string {\n if (level === '0' || level === 'off') return 'off'\n if (level === '1' || level === 'warn') return 'warn'\n if (level === '2' || level === 'error') return 'error'\n return level\n}\n\nfunction rulesMatch(a: RuleEntry, b: RuleEntry): boolean {\n if (normalizeLevel(a.level) !== normalizeLevel(b.level)) return false\n return JSON.stringify(a.options) === JSON.stringify(b.options)\n}\n\nfunction formatRule(entry: RuleEntry): string {\n if (entry.options) {\n return JSON.stringify([entry.level, ...entry.options])\n }\n return JSON.stringify([entry.level])\n}\n\nfunction mergeRulesFromBlocks(blocks: ConfigBlock[]): Map<string, RuleEntry> {\n const merged = new Map<string, RuleEntry>()\n for (const block of blocks) {\n if (!block.rules) continue\n for (const [name, value] of Object.entries(block.rules)) {\n const parsed = parseRuleValue(value)\n if (parsed) merged.set(name, parsed)\n }\n }\n return merged\n}\n\nfunction detectSharedPackage(source: string): string | undefined {\n if (source.includes('@xylabs/eslint-config-react-flat')) return '@xylabs/eslint-config-react-flat'\n if (source.includes('@xylabs/eslint-config-flat')) return '@xylabs/eslint-config-flat'\n return undefined\n}\n\nfunction extractLocalRuleBlocks(source: string): string[] {\n const blocks: string[] = []\n const ruleBlockRegex = /\\{\\s*(?:files\\s*:\\s*\\[.*?\\]\\s*,\\s*)?rules\\s*:\\s*\\{([^}]*(?:\\{[^}]*\\}[^}]*)*)\\}/g\n let match\n while ((match = ruleBlockRegex.exec(source)) !== null) {\n blocks.push(match[1])\n }\n return blocks\n}\n\nfunction extractRulesFromSourceBlocks(blocks: string[]): Map<string, string> {\n const rules = new Map<string, string>()\n for (const block of blocks) {\n const ruleRegex = /['\"]([^'\"]+)['\"]\\s*:\\s*(\\[[\\s\\S]*?\\](?=\\s*,|\\s*$))/gm\n let match\n while ((match = ruleRegex.exec(block)) !== null) {\n rules.set(match[1], match[2])\n }\n }\n return rules\n}\n\nfunction extractConfigBlocks(sharedModule: Record<string, unknown>): ConfigBlock[] {\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n return []\n}\n\nasync function resolveSharedConfig(configDir: string, sharedPkg: string): Promise<ConfigBlock[]> {\n try {\n const sharedModule = await import(sharedPkg) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const distPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'node', 'index.mjs')\n try {\n const sharedModule = await import(distPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const neutralPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'neutral', 'index.mjs')\n const sharedModule = await import(neutralPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n }\n return []\n }\n}\n\nasync function loadSharedRules(configDir: string, sharedPkg: string, verbose: boolean): Promise<Map<string, RuleEntry> | undefined> {\n const sharedBlocks = await resolveSharedConfig(configDir, sharedPkg)\n const sharedRules = mergeRulesFromBlocks(sharedBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Shared config defines ${sharedRules.size} rules`))\n }\n\n if (sharedRules.size === 0) {\n console.error(chalk.red('Could not load rules from shared config. Is it installed and built?'))\n return undefined\n }\n\n return sharedRules\n}\n\nasync function loadLocalRules(eslintConfigPath: string, source: string, verbose: boolean): Promise<{ explicit: Map<string, string>; resolved: Map<string, RuleEntry> }> {\n const localModule = await import(eslintConfigPath) as Record<string, unknown>\n const localConfig = localModule.default ?? localModule\n const localBlocks: ConfigBlock[] = Array.isArray(localConfig) ? localConfig as ConfigBlock[] : [localConfig as ConfigBlock]\n const resolved = mergeRulesFromBlocks(localBlocks)\n\n const localRuleBlocks = extractLocalRuleBlocks(source)\n const explicit = extractRulesFromSourceBlocks(localRuleBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Local config has ${explicit.size} explicit rule setting(s)`))\n }\n\n return { explicit, resolved }\n}\n\nfunction compareRules(\n explicitRuleNames: Map<string, string>,\n allResolvedRules: Map<string, RuleEntry>,\n sharedRules: Map<string, RuleEntry>,\n): RuleComparison {\n const redundant: RuleComparison['redundant'] = []\n const overrides: RuleComparison['overrides'] = []\n const additions: RuleComparison['additions'] = []\n\n for (const ruleName of explicitRuleNames.keys()) {\n const resolvedEntry = allResolvedRules.get(ruleName)\n const sharedEntry = sharedRules.get(ruleName)\n\n if (!resolvedEntry) continue\n\n if (!sharedEntry) {\n additions.push({ local: resolvedEntry, rule: ruleName })\n } else if (rulesMatch(resolvedEntry, sharedEntry)) {\n redundant.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n } else {\n overrides.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n }\n }\n\n return {\n additions,\n overrides,\n redundant,\n }\n}\n\nfunction reportResults({\n additions, overrides, redundant,\n}: RuleComparison, verbose: boolean): void {\n if (redundant.length > 0) {\n console.log(chalk.yellow(`\\n${redundant.length} redundant rule(s) (same as shared config — can be removed):`))\n for (const { rule, local } of redundant) {\n console.log(chalk.yellow(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (overrides.length > 0) {\n console.log(chalk.cyan(`\\n${overrides.length} rule override(s) (different from shared config):`))\n for (const {\n rule, local, shared,\n } of overrides) {\n console.log(chalk.cyan(` ${rule}:`))\n console.log(chalk.gray(` shared: ${formatRule(shared)}`))\n console.log(chalk.white(` local: ${formatRule(local)}`))\n }\n }\n\n if (additions.length > 0 && verbose) {\n console.log(chalk.gray(`\\n${additions.length} local addition(s) (not in shared config):`))\n for (const { rule, local } of additions) {\n console.log(chalk.gray(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (redundant.length === 0 && overrides.length === 0) {\n console.log(chalk.green('No redundant or overridden rules found'))\n }\n}\n\nfunction fixRedundantRules(eslintConfigPath: string, redundant: RuleComparison['redundant']): void {\n let updated = readFileSync(eslintConfigPath, 'utf8')\n const original = updated\n for (const { rule } of redundant) {\n const escaped = rule.replaceAll('/', String.raw`\\/`)\n const pattern = new RegExp(String.raw`[ \\t]*['\"]${escaped}['\"]\\s*:\\s*\\[[^\\]]*\\],?[ \\t]*\\n?`, 'g')\n updated = updated.replace(pattern, '')\n }\n // Clean up empty rule blocks left behind\n updated = updated.replaceAll(/\\{\\s*rules\\s*:\\s*\\{\\s*\\}\\s*,?\\s*\\}\\s*,?/g, '')\n updated = updated.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n if (updated !== original) {\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`\\nFixed: removed ${redundant.length} redundant rule(s)`))\n }\n}\n\nfunction formatConfigFile(eslintConfigPath: string): void {\n spawnSync('eslint', ['--fix', eslintConfigPath], { stdio: 'inherit' })\n}\n\nfunction fixConfigMismatch(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n expectedPkg: string,\n): void {\n const updated = source.replaceAll(sharedPkg, expectedPkg)\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`Fixed: replaced ${sharedPkg} with ${expectedPkg}`))\n\n const packageJsonPath = PATH.resolve(configDir, 'package.json')\n if (!existsSync(packageJsonPath)) return\n\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n const oldVersion = devDeps[sharedPkg]\n if (!oldVersion) return\n\n delete devDeps[sharedPkg]\n devDeps[expectedPkg] = oldVersion\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Updated package.json: ${sharedPkg} → ${expectedPkg}`))\n runInstall(configDir)\n}\n\nfunction checkConfigVariant(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n fix: boolean,\n verbose: boolean,\n): boolean {\n const hasReact = detectReactInMonorepo(configDir, verbose)\n const expectedPkg = hasReact ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n\n if (sharedPkg === expectedPkg) return false\n\n console.log(chalk.yellow(`\\nConfig mismatch: using ${sharedPkg} but ${hasReact ? 'React packages detected' : 'no React packages found'}`))\n console.log(chalk.yellow(` Expected: ${expectedPkg}`))\n\n if (fix) {\n fixConfigMismatch(eslintConfigPath, configDir, source, sharedPkg, expectedPkg)\n }\n\n return true\n}\n\nexport async function lintlint({ fix, verbose }: LintlintParams = {}): Promise<number> {\n const eslintConfigPath = await findUp(['eslint.config.ts', 'eslint.config.mjs'])\n if (!eslintConfigPath) {\n console.error(chalk.red('No eslint.config.ts found'))\n return 1\n }\n\n const configDir = PATH.dirname(eslintConfigPath)\n\n if (verbose) {\n console.log(chalk.gray(`Found config: ${eslintConfigPath}`))\n }\n\n const source = readFileSync(eslintConfigPath, 'utf8')\n const sharedPkg = detectSharedPackage(source)\n\n if (!sharedPkg) {\n console.log(chalk.yellow('No @xylabs/eslint-config-flat or @xylabs/eslint-config-react-flat imports found'))\n return 0\n }\n\n if (verbose) {\n console.log(chalk.gray(`Shared package: ${sharedPkg}`))\n }\n\n const hasMismatch = checkConfigVariant(eslintConfigPath, configDir, source, sharedPkg, !!fix, !!verbose)\n\n // Re-read source after potential mismatch fix to avoid overwriting changes\n const currentSource = (hasMismatch && fix) ? readFileSync(eslintConfigPath, 'utf8') : source\n\n const sharedRules = await loadSharedRules(configDir, sharedPkg, !!verbose)\n if (!sharedRules) return 1\n\n const { explicit, resolved } = await loadLocalRules(eslintConfigPath, currentSource, !!verbose)\n const results = compareRules(explicit, resolved, sharedRules)\n\n reportResults(results, !!verbose)\n\n if (results.redundant.length > 0 && fix) {\n fixRedundantRules(eslintConfigPath, results.redundant)\n }\n\n const didFix = fix && (hasMismatch || results.redundant.length > 0)\n if (didFix) {\n formatConfigFile(eslintConfigPath)\n }\n\n const hasUnfixedMismatch = hasMismatch && !fix\n const hasUnfixedRedundant = results.redundant.length > 0 && !fix\n return hasUnfixedMismatch || hasUnfixedRedundant ? 1 : 0\n}\n","import { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import type { Options } from 'tsup'\n\nexport type EntryMode = 'all' | 'single' | 'auto' | 'platform' | 'custom'\n\n/**\n * Configuration for specifying which paths are targeted.\n */\nexport interface PathConfig {\n /**\n * Glob patterns to exclude (takes precedence over include).\n */\n exclude?: string[]\n /**\n * Glob patterns to include.\n */\n include?: string[]\n}\n\n/**\n * Configuration for Dynamic Share.\n */\n\nexport interface DynamicShareConfig extends PathConfig {}\n\n/**\n * Configuration for Live Share.\n */\n\nexport interface LiveShareConfig extends PathConfig {}\n\nexport interface CompileConfig {\n bundleTypes?: boolean\n /** @param entryMode all, single, custom, platform, or auto */\n entryMode?: EntryMode\n /** @param when building types with tsc, should it use the outDir to write to? */\n outDirAsBuildDir?: boolean\n}\n\nexport type PackageCompileTsupConfig = CompileConfig & {\n browser?: Record<string, Options | boolean>\n neutral?: Record<string, Options | boolean>\n node?: Record<string, Options | boolean>\n tsup?: { options?: Options }\n verbose?: boolean\n}\n\nexport type PackageCompileTscConfig = CompileConfig & { mode: 'tsc' }\n\n/**\n * How deplint should classify a dependency.\n * - `dep`: must stay in `dependencies` (never promoted to peerDependencies)\n * - `peer`: should be treated as a peerDependency (overrides a parent `dep` setting)\n */\nexport type DeplintRefType = 'dep' | 'peer'\n\n/**\n * Per-package configuration within deplint.\n */\nexport interface DeplintPackageConfig {\n /** How this dependency should be classified. */\n refType: DeplintRefType\n}\n\n/**\n * Configuration for deplint (dependency linting).\n */\nexport interface DeplintConfig {\n /**\n * Package names to exclude from unused-dependency checks.\n * Packages listed here will never be reported as \"unused\" by deplint,\n * even if no import for them is detected in source or dist files.\n * Useful for packages that are used implicitly (e.g. runtime plugins,\n * CSS-in-JS themes, or polyfills that have side effects on import).\n */\n exclude?: string[]\n /**\n * Per-dependency configuration keyed by package name.\n * Cascades from root to package configs (maps are merged, with\n * package-level entries overriding root-level entries for the same key).\n */\n packages?: Record<string, DeplintPackageConfig>\n}\n\n/**\n * Canonical names for individually toggleable publint checks.\n */\nexport type PublintCheckName\n = | 'files'\n | 'importToDefault'\n | 'main'\n | 'module'\n | 'peerDeps'\n | 'publint'\n | 'resolutions'\n | 'rootSource'\n | 'rootTypes'\n | 'sideEffects'\n | 'source'\n | 'types'\n\nexport const ALL_PUBLINT_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'peerDeps', 'publint', 'resolutions', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/** Checks that only apply to published (non-private) packages */\nexport const PUBLISH_ONLY_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'publint', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/**\n * Configuration for publint (package publishing linting).\n */\nexport interface PublintConfig {\n /**\n * Check names to exclude from publint runs.\n * All checks run by default; listed names are skipped.\n * Cannot be used together with `include`.\n */\n exclude?: PublintCheckName[]\n /**\n * Check names to include (whitelist) in publint runs.\n * Only listed checks will run; all others are skipped.\n * Cannot be used together with `exclude`.\n */\n include?: PublintCheckName[]\n /**\n * Whether to run `pack` when invoking the publint library.\n * When true (default), the package manager is used to determine which\n * files would be published. Set to false to skip packing for faster runs.\n */\n pack?: boolean\n}\n\n/**\n * Configuration for readme generation.\n */\nexport interface ReadmeConfig {\n /**\n * URL that the logo links to when clicked.\n * Replaces the placeholder in the template's [![logo][]](url) link.\n */\n logoLinkUrl?: string\n /**\n * Public URL for the logo image displayed at the top of generated READMEs.\n * Replaces the placeholder in the template's [logo] reference link.\n */\n logoUrl?: string\n}\n\n/**\n * Command-specific configuration that cascades from root to package.\n * Settings here override the legacy top-level equivalents.\n */\nexport interface CommandsConfig {\n deplint?: DeplintConfig\n publint?: boolean | PublintConfig\n}\n\nexport interface XyConfigBase {\n /**\n * Command-specific settings grouped under `commands`.\n * These cascade from root xy.config down to per-package xy.config files.\n * Takes precedence over the legacy top-level `deplint`/`publint` fields.\n */\n commands?: CommandsConfig\n compile?: CompileConfig\n /** @deprecated Use `commands.deplint` instead. */\n deplint?: DeplintConfig\n dynamicShare?: DynamicShareConfig\n liveShare?: LiveShareConfig\n /** @deprecated Use `commands.publint` instead. */\n publint?: boolean | PublintConfig\n\n readme?: ReadmeConfig\n verbose?: boolean\n}\n\nexport interface XyTsupConfig extends XyConfigBase { compile?: PackageCompileTsupConfig }\n\nexport interface XyTscConfig extends XyConfigBase { compile?: PackageCompileTscConfig }\n\nexport type XyConfigLegacy = XyTsupConfig | XyTscConfig\n\nexport type XyConfig = XyConfigLegacy & {\n dev?: {\n build?: {\n clean?: boolean /* default: true */\n compile?: boolean /* default: true */\n deplint?: boolean /* default: true */\n gendocs?: boolean /* default: false */\n gitlint?: boolean /* default: true */\n knip?: boolean /* default: true */\n license?: boolean /* default: true */\n lint?: boolean /* default: true */\n publint?: boolean /* default: true */\n statics?: boolean /* default: true */\n verbose?: boolean\n }\n compile?: PackageCompileTsupConfig\n verbose?: boolean\n }\n verbose?: boolean\n}\n","import { promises as fs } from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\nimport sortPackageJson from 'sort-package-json'\n\nimport { INIT_CWD } from '../../lib/index.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport type { PublintCheckName } from './compile/XyConfig.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport { PUBLISH_ONLY_CHECKS } from './compile/XyConfig.ts'\n\nexport interface PackagePublintParams {\n exclude?: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkgDir?: string\n strict?: boolean\n verbose?: boolean\n}\n\nconst removeSourceFromExports = (exports: Record<string, unknown>): boolean => {\n let removed = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') {\n delete exports[key]\n removed = true\n } else if (typeof value === 'object' && value !== null && removeSourceFromExports(value as Record<string, unknown>)) removed = true\n }\n return removed\n}\n\nconst hasSourceInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') return true\n if (typeof value === 'object' && value !== null && hasSourceInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst hasImportKeyInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) return true\n if (typeof value === 'object' && value !== null && hasImportKeyInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst replaceImportWithDefault = (exports: Record<string, unknown>): boolean => {\n let modified = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) {\n if (exports.default === undefined) {\n exports.default = value\n }\n delete exports.import\n if (exports.types === undefined) {\n exports.types = value.replace(/\\.mjs$/, '.d.ts')\n }\n modified = true\n } else if (typeof value === 'object' && value !== null && replaceImportWithDefault(value as Record<string, unknown>)) modified = true\n }\n return modified\n}\n\nconst hasTypesInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'types') return true\n if (typeof value === 'object' && value !== null && hasTypesInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nfunction ensureExportsPath(value: string): string {\n if (value.startsWith('./') || value.startsWith('../')) return value\n return `./${value}`\n}\n\ninterface CustomLintResult {\n errors: number\n modified: boolean\n warnings: number\n}\n\nfunction emptyCustomResult(): CustomLintResult {\n return {\n errors: 0, modified: false, warnings: 0,\n }\n}\n\nfunction mergeResults(target: CustomLintResult, source: CustomLintResult): void {\n target.errors += source.errors\n target.warnings += source.warnings\n target.modified = target.modified || source.modified\n}\n\nfunction checkFiles(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const files = pkg.files as string[] | undefined\n if (files === undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"files\" field is missing'))\n result.warnings++\n }\n if (Array.isArray(files) && !files.includes('README.md')) {\n files.push('README.md')\n console.warn(chalk.yellow('Publint [custom]: added \"README.md\" to \"files\"'))\n result.modified = true\n result.warnings++\n }\n if (Array.isArray(files) && files.includes('src')) {\n if (fix) {\n pkg.files = files.filter((f: string) => f !== 'src')\n console.warn(chalk.yellow('Publint [custom]: removed \"src\" from \"files\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"src\" should not be in \"files\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction checkExportsSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object' && hasSourceInExports(exports)) {\n if (fix) {\n removeSourceFromExports(exports)\n console.warn(chalk.yellow('Publint [custom]: removed \"source\" entries from \"exports\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"source\" entries should not be in \"exports\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction migrateFieldToExports(\n pkg: Record<string, unknown>,\n field: string,\n exportKey: string,\n fix: boolean,\n): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg[field] === undefined) return result\n\n // Skip non-JS files (e.g. tsconfig packages use \"main\": \"./tsconfig.json\")\n const fieldValue = pkg[field] as string\n if (!fieldValue.endsWith('.js') && !fieldValue.endsWith('.mjs') && !fieldValue.endsWith('.cjs')) return result\n\n if (fix) {\n const exportValue = ensureExportsPath(fieldValue)\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object') {\n const dot = exports['.']\n if (dot && typeof dot === 'object' && !(dot as Record<string, unknown>)[exportKey]) {\n (dot as Record<string, unknown>)[exportKey] = exportValue\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports['.'].${exportKey}\" (${fieldValue})`))\n }\n } else if (!pkg.exports) {\n pkg.exports = { '.': { [exportKey]: exportValue } }\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports\" (.→${fieldValue})`))\n }\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed deprecated \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: \"${field}\" field is deprecated, use \"exports\" instead (use --fix to remove)`))\n }\n result.warnings++\n return result\n}\n\nfunction checkSideEffects(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.sideEffects !== false) {\n console.warn(chalk.yellow('Publint [custom]: \"sideEffects\" field should be set to false'))\n result.warnings++\n }\n return result\n}\n\nfunction checkRootSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n for (const field of ['source', 'src']) {\n if (pkg[field] !== undefined) {\n if (fix) {\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed root-level \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: root-level \"${field}\" field should not be in package.json (use --fix to remove)`))\n }\n result.warnings++\n }\n }\n return result\n}\n\nfunction checkResolutions(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.resolutions !== undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"resolutions\" in use'))\n console.warn(chalk.gray(JSON.stringify(pkg.resolutions, null, 2)))\n result.warnings++\n }\n return result\n}\n\nfunction checkImportToDefault(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object') return result\n if (!hasImportKeyInExports(exports)) return result\n\n if (fix) {\n replaceImportWithDefault(exports)\n console.warn(chalk.yellow('Publint [custom]: renamed \"import\" to \"default\" in \"exports\" and ensured \"types\" siblings'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"import\" entries in \"exports\" should use \"default\" instead (use --fix to rename)'))\n }\n result.warnings++\n return result\n}\n\nfunction checkRootTypes(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.types === undefined) return result\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object' || !hasTypesInExports(exports)) return result\n\n if (fix) {\n delete pkg.types\n console.warn(chalk.yellow('Publint [custom]: removed redundant root \"types\" field (already defined in \"exports\")'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: root \"types\" field is redundant when \"exports\" defines types (use --fix to remove)'))\n }\n result.warnings++\n return result\n}\n\nfunction customPubLint(\n pkg: Record<string, unknown>,\n fix = false,\n exclude = new Set<PublintCheckName>(),\n): [number, number, boolean] {\n const result = emptyCustomResult()\n if (!exclude.has('files')) mergeResults(result, checkFiles(pkg, fix))\n if (!exclude.has('source')) mergeResults(result, checkExportsSource(pkg, fix))\n if (!exclude.has('rootSource')) mergeResults(result, checkRootSource(pkg, fix))\n if (!exclude.has('main')) mergeResults(result, migrateFieldToExports(pkg, 'main', 'default', fix))\n if (!exclude.has('types')) mergeResults(result, migrateFieldToExports(pkg, 'types', 'types', fix))\n if (!exclude.has('module')) mergeResults(result, migrateFieldToExports(pkg, 'module', 'default', fix))\n if (!exclude.has('importToDefault')) mergeResults(result, checkImportToDefault(pkg, fix))\n if (!exclude.has('rootTypes')) mergeResults(result, checkRootTypes(pkg, fix))\n if (!exclude.has('sideEffects')) mergeResults(result, checkSideEffects(pkg))\n if (!exclude.has('resolutions')) mergeResults(result, checkResolutions(pkg))\n return [result.errors, result.warnings, result.modified]\n}\n\n// Always-included files that npm packs regardless of the \"files\" field\nconst ALWAYS_INCLUDED_PATTERNS = [\n 'package.json',\n 'README',\n 'README.*',\n 'LICENCE',\n 'LICENCE.*',\n 'LICENSE',\n 'LICENSE.*',\n 'CHANGELOG',\n 'CHANGELOG.*',\n]\n\ninterface PackFile {\n data: string\n name: string\n}\n\nasync function resolvePackFiles(pkgDir: string, filesField?: string[]): Promise<PackFile[]> {\n const patterns = [...ALWAYS_INCLUDED_PATTERNS]\n if (filesField) {\n for (const pattern of filesField) {\n // Negation patterns (e.g. \"!**/*.spec.*\") are exclusions, pass through as-is\n if (pattern.startsWith('!')) {\n patterns.push(pattern)\n } else {\n // Include pattern — glob both the pattern itself and its contents if it's a directory\n patterns.push(pattern, `${pattern}/**`)\n }\n }\n }\n\n const matched = await glob(patterns, {\n cwd: pkgDir,\n nodir: true,\n dot: false,\n })\n\n const files: PackFile[] = await Promise.all(\n matched.map(async (rel) => {\n const abs = path.join(pkgDir, rel)\n const data = await fs.readFile(abs, 'utf8').catch(() => '')\n // publint's tarball VFS looks up files by path.join(pkgDir, rel),\n // so names must be prefixed with pkgDir to match\n return { name: path.join(pkgDir, rel), data }\n }),\n )\n return files\n}\n\nasync function runPublintLibrary(pkgDir: string, pkg: Record<string, unknown>, strict: boolean, pack: boolean): Promise<{ errors: number; total: number }> {\n const { publint } = await import('publint')\n\n let packOption: { files: PackFile[] } | false = false\n if (pack) {\n const files = await resolvePackFiles(pkgDir, pkg.files as string[] | undefined)\n packOption = { files }\n }\n\n const { messages } = await publint({\n level: 'suggestion',\n pack: packOption,\n pkgDir,\n strict,\n })\n\n // eslint-disable-next-line import-x/no-internal-modules\n const { formatMessage } = await import('publint/utils')\n\n for (const message of messages) {\n switch (message.type) {\n case 'error': {\n console.error(chalk.red(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n case 'warning': {\n console.warn(chalk.yellow(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n default: {\n console.log(chalk.white(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n }\n }\n\n return {\n errors: messages.filter(message => message.type === 'error').length,\n total: messages.length,\n }\n}\n\nexport const packagePublint = async ({\n exclude = new Set(), fix = false, pack = true, pkgDir: pkgDirParam, strict = true, verbose: _verbose = false,\n}: PackagePublintParams = {}): Promise<number> => {\n const pkgDir = pkgDirParam ?? INIT_CWD()\n\n const sortedPkg = sortPackageJson(await fs.readFile(`${pkgDir}/package.json`, 'utf8'))\n await fs.writeFile(`${pkgDir}/package.json`, sortedPkg)\n\n const pkg = JSON.parse(await fs.readFile(`${pkgDir}/package.json`, 'utf8')) as Record<string, unknown>\n\n const effectiveExclude = pkg.private\n ? new Set([...exclude, ...PUBLISH_ONLY_CHECKS])\n : exclude\n\n console.log(chalk.green(`Publint: ${String(pkg.name)}${pkg.private ? chalk.gray(' (private)') : ''}`))\n console.log(chalk.gray(pkgDir))\n\n let libraryErrors = 0\n if (!effectiveExclude.has('publint')) {\n const library = await runPublintLibrary(pkgDir, pkg, strict, pack)\n libraryErrors = library.errors\n }\n\n const [errorCount, _warningCount, modified] = customPubLint(pkg, fix, effectiveExclude)\n\n if (modified) {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n await fs.writeFile(`${pkgDir}/package.json`, sorted)\n }\n\n return libraryErrors + errorCount\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\nimport semver from 'semver'\n\nimport {\n INIT_CWD, latestVersions, runInstall,\n} from '../lib/index.ts'\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport {\n checkInternalDepVersions,\n checkInternalPeerVersions,\n checkVersionConsistency,\n checkWorkspaceProtocol,\n fixInternalDepVersions,\n fixInternalPeerVersions,\n fixVersionConsistency,\n fixWorkspaceProtocol,\n} from './package-lint-deps.ts'\n\nexport interface LintResult {\n errors: string[]\n fixable: string[]\n warnings: string[]\n}\n\nfunction emptyResult(): LintResult {\n return {\n errors: [], fixable: [], warnings: [],\n }\n}\n\nfunction readRootPackageJson(cwd: string): Record<string, unknown> {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeRootPackageJson(cwd: string, pkg: Record<string, unknown>) {\n const path = PATH.resolve(cwd, 'package.json')\n writeFileSync(path, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction readPnpmWorkspaceGlobs(cwd: string): string[] | undefined {\n const wsPath = PATH.resolve(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n const raw = readFileSync(wsPath, 'utf8')\n const globs: string[] = []\n let inPackages = false\n for (const line of raw.split('\\n')) {\n if (/^packages\\s*:/.test(line)) {\n inPackages = true\n continue\n }\n if (inPackages) {\n const match = /^\\s+-\\s+['\"]?([^'\"]+)['\"]?\\s*$/.exec(line)\n if (match) {\n globs.push(match[1])\n } else if (/^\\S/.test(line) && line.trim() !== '') {\n break\n }\n }\n }\n return globs.length > 0 ? globs : undefined\n}\n\nfunction isMonorepo(pkg: Record<string, unknown>, cwd: string): boolean {\n const workspaces = pkg.workspaces\n if (Array.isArray(workspaces) && workspaces.length > 0) return true\n return readPnpmWorkspaceGlobs(cwd) !== undefined\n}\n\nfunction checkPackagesFolder(workspaces: { location: string; name: string }[]): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!location.startsWith('packages/') && !location.startsWith('packages\\\\')) {\n result.errors.push(`${name} (${location}) is not inside a packages/ folder`)\n }\n }\n\n return result\n}\n\nfunction checkRootPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (!pkg.private) {\n result.fixable.push('Root package.json must be private to prevent accidental publishing')\n }\n\n return result\n}\n\nfunction fixRootPrivate(cwd: string, pkg: Record<string, unknown>) {\n pkg.private = true\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' ✔ Fixed: set \"private\": true in root package.json'))\n}\n\nfunction checkNoPublishConfigOnPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (pkg.private && pkg.publishConfig) {\n result.fixable.push('Root package.json has publishConfig but is private — publishConfig is unnecessary')\n }\n\n return result\n}\n\nfunction fixNoPublishConfigOnPrivate(cwd: string, pkg: Record<string, unknown>) {\n delete pkg.publishConfig\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' ✔ Fixed: removed publishConfig from private root package.json'))\n}\n\nfunction checkNoPackageManagerInWorkspaces(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n result.fixable.push(`${name} (${location}) has a packageManager field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixNoPackageManagerInWorkspaces(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n delete pkg.packageManager\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed packageManager from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction checkWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n // For pnpm: no package should have workspaces (including root)\n // For yarn: only root should have workspaces\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n const label = location === '.' ? 'Root' : `${name} (${location})`\n const reason = pm === 'pnpm'\n ? 'pnpm uses pnpm-workspace.yaml instead'\n : 'only the root should define workspaces'\n result.fixable.push(`${label} has a workspaces field — ${reason}`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n\n return result\n}\n\nfunction fixWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): void {\n for (const { location } of workspaces) {\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n delete pkg.workspaces\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n const label = location === '.' ? 'root' : location\n console.log(chalk.green(` ✔ Fixed: removed workspaces from ${label}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n}\n\nfunction checkWorkspaceGlobCoverage(\n pkg: Record<string, unknown>,\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pm === 'pnpm'\n ? readPnpmWorkspaceGlobs(cwd) ?? []\n : (Array.isArray(pkg.workspaces) ? pkg.workspaces as string[] : [])\n\n if (globs.length === 0) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`No workspace globs found in ${source}`)\n return result\n }\n\n const matchers = globs.map(glob => picomatch(glob))\n const isMatch = (location: string) => matchers.some(m => m(location))\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!isMatch(location)) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`${name} (${location}) is not matched by any glob in ${source}`)\n }\n }\n\n return result\n}\n\nfunction logResults(label: string, result: LintResult, fix: boolean): { errors: number; fixed: number } {\n let errors = 0\n let fixed = 0\n\n for (const error of result.errors) {\n console.log(chalk.red(` ✗ ${error}`))\n errors++\n }\n for (const fixable of result.fixable) {\n if (fix) {\n fixed++\n } else {\n console.log(chalk.red(` ✗ ${fixable} (fixable)`))\n errors++\n }\n }\n for (const warning of result.warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n }\n if (errors === 0 && fixed === 0 && result.warnings.length === 0) {\n console.log(chalk.green(` ✓ ${label}`))\n }\n\n return { errors, fixed }\n}\n\ninterface CheckEntry {\n check: () => LintResult\n fix?: (cwd: string, pkg: Record<string, unknown>) => void\n label: string\n}\n\nfunction runChecks(entries: CheckEntry[], cwd: string, pkg: Record<string, unknown>, fix: boolean): { errors: number; fixed: number } {\n let totalErrors = 0\n let totalFixed = 0\n\n for (const entry of entries) {\n const result = entry.check()\n const log = logResults(entry.label, result, fix)\n if (fix && entry.fix && result.fixable.length > 0) {\n entry.fix(cwd, pkg)\n }\n totalErrors += log.errors\n totalFixed += log.fixed\n }\n\n return { errors: totalErrors, fixed: totalFixed }\n}\n\nfunction checkVoltaOnlyInRoot(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.volta) {\n result.fixable.push(`${name} (${location}) has a volta field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixVoltaOnlyInRoot(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.volta) {\n delete pkg.volta\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed volta from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction isTerminalPackage(pkg: Record<string, unknown>): boolean {\n return pkg.private === true\n}\n\nfunction checkEnginesOnlyInNonTerminal(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n // Check root (always terminal/private) — should not have engines\n const rootPkg = JSON.parse(readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')) as Record<string, unknown>\n if (rootPkg.engines) {\n result.fixable.push('Root package.json has engines — terminal packages should not declare engines (use volta instead)')\n }\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n result.fixable.push(`${name} (${location}) is terminal (private) but has engines — terminal packages should not declare engines`)\n }\n if (!isTerminalPackage(pkg) && !pkg.engines) {\n result.fixable.push(`${name} (${location}) is a library but has no engines field`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixEnginesOnlyInNonTerminal(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n // Remove engines from root\n const rootPath = PATH.resolve(cwd, 'package.json')\n const rootRaw = readFileSync(rootPath, 'utf8')\n const rootPkg = JSON.parse(rootRaw) as Record<string, unknown>\n if (rootPkg.engines) {\n delete rootPkg.engines\n writeFileSync(rootPath, `${JSON.stringify(rootPkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(' ✔ Fixed: removed engines from root package.json'))\n }\n\n // Remove engines from terminal workspace packages, add engines to libraries missing them\n const enginesTemplate = resolveEnginesTemplate(cwd, workspaces)\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n delete pkg.engines\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed engines from ${location}/package.json`))\n }\n if (!isTerminalPackage(pkg) && !pkg.engines && enginesTemplate) {\n pkg.engines = enginesTemplate\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: added engines to ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction resolveEnginesTemplate(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Record<string, string> | undefined {\n // Use engines from the first sibling library package that has one\n for (const { location } of workspaces) {\n if (location === '.') continue\n try {\n const pkg = JSON.parse(readFileSync(PATH.resolve(cwd, location, 'package.json'), 'utf8')) as Record<string, unknown>\n if (!isTerminalPackage(pkg) && pkg.engines) {\n return pkg.engines as Record<string, string>\n }\n } catch {\n // skip\n }\n }\n return undefined\n}\n\nfunction checkVersionsIncludeLts(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const toolVersions: Record<string, string> = {\n node: latestVersions.node,\n npm: latestVersions.npm,\n pnpm: latestVersions.pnpm,\n yarn: latestVersions.yarn,\n }\n\n // Check engines in all non-terminal packages\n for (const { location, name } of workspaces) {\n const pkgPath = location === '.'\n ? PATH.resolve(cwd, 'package.json')\n : PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const label = location === '.' ? 'root' : `${name} (${location})`\n\n // Check engines ranges\n const engines = pkg.engines as Record<string, string> | undefined\n if (engines) {\n for (const [tool, range] of Object.entries(engines)) {\n const latest = toolVersions[tool]\n if (latest && !semver.satisfies(latest, range)) {\n result.errors.push(\n `${label} engines.${tool} \"${range}\" does not include latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n\n // Check volta pins\n const volta = pkg.volta as Record<string, string> | undefined\n if (volta) {\n for (const [tool, pinnedVersion] of Object.entries(volta)) {\n const latest = toolVersions[tool]\n if (latest && semver.lt(pinnedVersion, latest)) {\n result.warnings.push(\n `${label} volta.${tool} \"${pinnedVersion}\" is older than latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction logSummary(errors: number, fixed: number) {\n if (fixed > 0) {\n console.log(chalk.green(`\\n Fixed ${fixed} issue(s)`))\n }\n if (errors > 0) {\n console.log(chalk.red(`\\n ${errors} error(s) found`))\n } else if (fixed === 0) {\n console.log(chalk.green('\\n All checks passed'))\n }\n}\n\nexport function packageLintMonorepo(fix = false): number {\n const cwd = INIT_CWD()\n\n let pkg: Record<string, unknown>\n try {\n pkg = readRootPackageJson(cwd)\n } catch {\n console.error(chalk.red('Could not read package.json'))\n return 1\n }\n\n if (!isMonorepo(pkg, cwd)) {\n console.log(chalk.gray('Not a monorepo — skipping repo lint checks'))\n return 0\n }\n\n console.log(chalk.green('Repo Lint'))\n\n const pm = detectPackageManager()\n const workspaces = getPackageManager().listWorkspaces()\n\n const internalDepCheck: CheckEntry = pm === 'pnpm'\n ? {\n check: () => checkWorkspaceProtocol(cwd, workspaces),\n fix: () => fixWorkspaceProtocol(cwd, workspaces),\n label: 'Internal deps/devDeps use workspace: protocol',\n }\n : {\n check: () => checkInternalDepVersions(cwd, workspaces),\n fix: () => fixInternalDepVersions(cwd, workspaces),\n label: 'Internal deps/devDeps use correct version ranges',\n }\n\n const checks: CheckEntry[] = [\n {\n check: () => checkRootPrivate(pkg), fix: fixRootPrivate, label: 'Root package is private',\n },\n {\n check: () => checkNoPublishConfigOnPrivate(pkg), fix: fixNoPublishConfigOnPrivate, label: 'No publishConfig on private root',\n },\n { check: () => checkPackagesFolder(workspaces), label: 'All packages are in packages/ folder' },\n {\n check: () => checkWorkspacesFieldPlacement(cwd, pm, workspaces),\n fix: () => fixWorkspacesFieldPlacement(cwd, pm, workspaces),\n label: pm === 'pnpm' ? 'No workspaces field in package.json (use pnpm-workspace.yaml)' : 'Workspaces field only in root package.json',\n },\n {\n check: () => checkWorkspaceGlobCoverage(pkg, cwd, pm, workspaces),\n label: 'Workspace globs cover all packages',\n },\n {\n check: () => checkNoPackageManagerInWorkspaces(cwd, workspaces),\n fix: () => fixNoPackageManagerInWorkspaces(cwd, pkg, workspaces),\n label: 'No packageManager in workspace packages',\n },\n {\n check: () => checkVoltaOnlyInRoot(cwd, workspaces),\n fix: () => fixVoltaOnlyInRoot(cwd, pkg, workspaces),\n label: 'Volta only in root package.json',\n },\n {\n check: () => checkEnginesOnlyInNonTerminal(cwd, workspaces),\n fix: () => fixEnginesOnlyInNonTerminal(cwd, pkg, workspaces),\n label: 'Engines only in non-terminal (library) packages',\n },\n {\n check: () => checkVersionsIncludeLts(cwd, workspaces),\n label: 'Engine/volta versions include latest LTS',\n },\n {\n check: () => checkVersionConsistency(cwd, pkg, workspaces),\n fix: () => fixVersionConsistency(cwd, pkg, writeRootPackageJson, workspaces),\n label: 'Consistent versions across packages',\n },\n internalDepCheck,\n {\n check: () => checkInternalPeerVersions(cwd, workspaces),\n fix: () => fixInternalPeerVersions(cwd, workspaces),\n label: 'Internal peerDeps use semver ranges (not workspace: protocol)',\n },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n if (fix && fixed > 0) {\n runInstall()\n }\n\n return errors > 0 ? 1 : 0\n}\n","import {\n existsSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { detectCurrentPM, findWorkspacePackagePaths } from './convert.ts'\n\nexport interface PackmanCleanParams {\n verbose?: boolean\n}\n\nfunction removeNodeModules(dir: string, verbose?: boolean): boolean {\n const nmPath = PATH.join(dir, 'node_modules')\n if (existsSync(nmPath)) {\n if (verbose) console.log(chalk.gray(`Removing ${nmPath}`))\n rmSync(nmPath, { force: true, recursive: true })\n return true\n }\n return false\n}\n\nexport function packmanClean({ verbose }: PackmanCleanParams): number {\n const cwd = process.cwd()\n const pm = detectCurrentPM(cwd)\n\n if (pm === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n console.log(chalk.blue(`Detected package manager: ${pm}`))\n\n // Remove node_modules from root and all workspace packages\n let removedCount = 0\n\n if (removeNodeModules(cwd, verbose)) removedCount++\n\n const workspacePaths = findWorkspacePackagePaths(cwd)\n for (const wsPath of workspacePaths) {\n const fullPath = PATH.join(cwd, wsPath)\n if (removeNodeModules(fullPath, verbose)) removedCount++\n }\n\n console.log(chalk.green(`Removed ${removedCount} node_modules folder${removedCount === 1 ? '' : 's'}`))\n\n // Handle lock files\n if (pm === 'yarn') {\n const lockPath = PATH.join(cwd, 'yarn.lock')\n if (existsSync(lockPath)) {\n writeFileSync(lockPath, '')\n console.log(chalk.green('Truncated yarn.lock'))\n }\n } else if (pm === 'pnpm') {\n const lockPath = PATH.join(cwd, 'pnpm-lock.yaml')\n if (existsSync(lockPath)) {\n rmSync(lockPath)\n console.log(chalk.green('Deleted pnpm-lock.yaml'))\n }\n }\n\n console.log(chalk.green('Ready for a clean install'))\n return 0\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { packageLintMonorepo } from '../package-lint.ts'\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nexport function detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nexport function findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n const patterns: string[] = (pkg.workspaces ?? []) as string[]\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n const result = target === 'pnpm'\n ? convertToPnpm(cwd, workspacePaths)\n : convertToYarn(cwd, workspacePaths)\n\n if (result !== 0) return result\n\n console.log(chalk.green('\\nRunning repo lint --fix...'))\n packageLintMonorepo(true)\n\n return result\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = (pkg.workspaces as string[] | undefined) ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'yarn-to-pnpm')\n\n // 8. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n // 9. Run pnpm install\n console.log(chalk.blue('\\nRunning pnpm install...'))\n const install = spawnSync('pnpm', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('pnpm install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst IMPORT_SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ['@xylabs/ts-scripts-react-yarn3', '@xylabs/ts-scripts-react-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ['@xylabs/ts-scripts-react-pnpm', '@xylabs/ts-scripts-react-yarn3'],\n ],\n}\n\nconst SOURCE_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.mjs',\n]\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.yarn/**',\n]\n\nexport function rewriteSourceImports(cwd: string, direction: Direction): void {\n const swaps = IMPORT_SWAP_MAP[direction]\n const files = globSync(SOURCE_GLOBS, {\n cwd,\n absolute: true,\n ignore: IGNORE_PATTERNS,\n })\n\n let count = 0\n for (const file of files) {\n if (!existsSync(file)) continue\n const original = readFileSync(file, 'utf8')\n let content = original\n for (const [from, to] of swaps) {\n content = content.replaceAll(from, to)\n }\n if (content !== original) {\n writeFileSync(file, content, 'utf8')\n count++\n }\n }\n\n if (count > 0) {\n console.log(chalk.green(` Rewrote ts-scripts imports in ${count} source file(s)`))\n }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return (pkg.workspaces ?? []) as string[]\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'pnpm-to-yarn')\n\n // 8. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n // 9. Run yarn install\n console.log(chalk.blue('\\nRunning yarn install...'))\n const install = spawnSync('yarn', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('yarn install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nexport interface PackmanLintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface LintCheck {\n check: (cwd: string, verbose?: boolean, silent?: boolean) => boolean\n fix: (cwd: string, verbose?: boolean) => boolean\n name: string\n}\n\nfunction checkEnableScripts(cwd: string, verbose?: boolean, silent?: boolean): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) {\n if (verbose) console.log(chalk.gray(' No .yarnrc.yml found, skipping enableScripts check'))\n return true\n }\n\n const content = readFileSync(yarnrcPath, 'utf8')\n const lines = content.split('\\n')\n\n for (const line of lines) {\n const trimmed = line.trim()\n if (/^enableScripts\\s*:/.test(trimmed)) {\n const value = trimmed.replace(/^enableScripts\\s*:\\s*/, '').trim()\n if (value === 'false') {\n if (verbose) console.log(chalk.green(' enableScripts is correctly set to false'))\n return true\n }\n if (!silent) console.log(chalk.red(' enableScripts is set to', value, '(expected false)'))\n return false\n }\n }\n\n if (!silent) console.log(chalk.red(' enableScripts is not set in .yarnrc.yml (expected false)'))\n return false\n}\n\nfunction fixEnableScripts(cwd: string, verbose?: boolean): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) {\n if (verbose) console.log(chalk.gray(' No .yarnrc.yml found, skipping enableScripts fix'))\n return true\n }\n\n const content = readFileSync(yarnrcPath, 'utf8')\n const lines = content.split('\\n')\n\n let found = false\n const newLines = lines.map((line) => {\n if (/^\\s*enableScripts\\s*:/.test(line)) {\n found = true\n return 'enableScripts: false'\n }\n return line\n })\n\n if (!found) {\n // Insert enableScripts: false in alphabetical order\n let inserted = false\n for (let i = 0; i < newLines.length; i++) {\n const trimmed = newLines[i].trim()\n // Skip empty lines and comments at the beginning\n if (trimmed && !trimmed.startsWith('#') && trimmed > 'enableScripts:') {\n newLines.splice(i, 0, 'enableScripts: false', '')\n inserted = true\n break\n }\n }\n if (!inserted) {\n // Append before trailing newline\n const lastLine = newLines.at(-1)\n if (lastLine === '') {\n newLines.splice(-1, 0, 'enableScripts: false', '')\n } else {\n newLines.push('', 'enableScripts: false')\n }\n }\n }\n\n writeFileSync(yarnrcPath, newLines.join('\\n'), 'utf8')\n console.log(chalk.green(' Fixed: enableScripts set to false'))\n return true\n}\n\nconst checks: LintCheck[] = [\n {\n name: 'enableScripts should be false in .yarnrc.yml',\n check: checkEnableScripts,\n fix: fixEnableScripts,\n },\n]\n\nexport function packmanLint({ fix, verbose }: PackmanLintParams = {}): number {\n const cwd = process.cwd()\n let failures = 0\n\n for (const check of checks) {\n if (verbose) console.log(chalk.gray(`Checking: ${check.name}`))\n\n const passed = check.check(cwd, verbose, fix)\n if (!passed) {\n if (fix) {\n const fixed = check.fix(cwd, verbose)\n if (!fixed) {\n failures++\n }\n } else {\n failures++\n }\n }\n }\n\n if (failures > 0) {\n console.log(chalk.red(`\\npackman lint: ${failures} check(s) failed`))\n if (!fix) {\n console.log(chalk.yellow('Run with --fix to auto-fix issues'))\n }\n } else {\n console.log(chalk.green('\\npackman lint: all checks passed'))\n }\n\n return failures > 0 ? 1 : 0\n}\n","import chalk from 'chalk'\n\nimport {\n INIT_CWD,\n installOutputCapture,\n loadConfig,\n loadWorkspaceCommandConfig,\n outputStorage,\n runInstall,\n runWithConcurrency,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type {\n PublintCheckName, PublintConfig, XyConfig,\n} from './package/index.ts'\nimport { ALL_PUBLINT_CHECKS, packagePublint } from './package/index.ts'\nimport {\n checkInternalPeerVersions,\n fixInternalPeerVersions,\n} from './package-lint-deps.ts'\n\nexport interface PublintParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n exclude: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nfunction resolveExclude(\n publintConfig: { exclude?: PublintCheckName[]; include?: PublintCheckName[] },\n cliExclude?: string[],\n cliInclude?: string[],\n): Set<PublintCheckName> | undefined {\n const hasExclude = (publintConfig.exclude?.length ?? 0) > 0 || (cliExclude?.length ?? 0) > 0\n const hasInclude = (publintConfig.include?.length ?? 0) > 0 || (cliInclude?.length ?? 0) > 0\n\n if (hasExclude && hasInclude) {\n console.error(chalk.red('Publint: --include and --exclude cannot be used together'))\n return undefined\n }\n\n if (hasInclude) {\n const include = new Set<PublintCheckName>([\n ...((publintConfig.include ?? [])),\n ...((cliInclude ?? []) as PublintCheckName[]),\n ])\n return new Set(ALL_PUBLINT_CHECKS.filter(c => !include.has(c)))\n }\n\n return new Set<PublintCheckName>([\n ...(publintConfig.exclude ?? []),\n ...((cliExclude ?? []) as PublintCheckName[]),\n ])\n}\n\nfunction normalizePublintConfig(value: boolean | PublintConfig | undefined): PublintConfig {\n if (typeof value === 'object') return value\n return {}\n}\n\nexport interface ResolvedPublintOptions {\n exclude: Set<PublintCheckName>\n pack: boolean\n}\n\nexport async function loadPublintOptions(): Promise<ResolvedPublintOptions> {\n const config = await loadConfig<XyConfig>()\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const publintConfig = normalizePublintConfig(config.commands?.publint ?? config.publint)\n const exclude = resolveExclude(publintConfig) ?? new Set<PublintCheckName>()\n return { exclude, pack: publintConfig.pack ?? true }\n}\n\nexport const publint = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose, pkg,\n}: PublintParams) => {\n return pkg === undefined\n ? await publintAll({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n })\n : await publintSingle({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n })\n}\n\nfunction logPublintSummary(packages: number, errors: number, ms: number): void {\n const color = errors > 0 ? chalk.red : chalk.blue\n console.log(color(`Checked ${packages} package(s) in ${ms.toFixed(0)}ms with ${errors} issue(s) found.`))\n}\n\ninterface PublintSingleParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nexport const publintSingle = async ({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n}: PublintSingleParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspace = pm.findWorkspace(pkg)\n if (!workspace) {\n console.error(chalk.red(`Publint: workspace \"${pkg}\" not found`))\n return 1\n }\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(workspace.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n if (!exclude) return 1\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: workspace.location, verbose,\n })\n logPublintSummary(1, errors, performance.now() - start)\n return errors\n}\n\ninterface PublintAllParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n verbose?: boolean\n}\n\ninterface CapturedResult {\n errors: number\n output: string[]\n}\n\nexport const publintAll = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n}: PublintAllParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const concurrency = jobs\n\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ errors: 0, output: [] }))\n\n installOutputCapture()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n try {\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(ws.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n ?? new Set<PublintCheckName>()\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: ws.location, verbose,\n })\n results[i] = { errors, output }\n } catch (ex) {\n output.push(chalk.red(`Publint failed for ${ws.name}: ${(ex as Error).message}\\n`))\n results[i] = { errors: 1, output }\n }\n })\n },\n )\n\n let totalErrors = 0\n for (const { errors, output } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n totalErrors += errors\n }\n\n // Check internal peerDependencies use semver ranges (not workspace: protocol)\n const allExclude = resolveExclude({}, cliExclude, cliInclude) ?? new Set<PublintCheckName>()\n if (!allExclude.has('peerDeps')) {\n const cwd = INIT_CWD()\n const peerResult = checkInternalPeerVersions(cwd, workspaces)\n if (peerResult.fixable.length > 0) {\n if (fix) {\n fixInternalPeerVersions(cwd, workspaces)\n runInstall()\n } else {\n for (const msg of peerResult.fixable) {\n console.log(chalk.red(` ✗ ${msg} (fixable)`))\n }\n totalErrors += peerResult.fixable.length\n }\n }\n totalErrors += peerResult.errors.length\n }\n\n logPublintSummary(workspaces.length, totalErrors, performance.now() - start)\n return totalErrors\n}\n","import { generateReadmeFiles, loadConfig } from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeGenParams {\n jobs: number\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nexport async function readmeGen({\n jobs, pkg, templatePath, typedoc, verbose,\n}: ReadmeGenParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n return await generateReadmeFiles({\n jobs,\n logoLinkUrl: config.readme?.logoLinkUrl,\n logoUrl: config.readme?.logoUrl,\n pkg,\n templatePath,\n typedoc,\n verbose,\n })\n}\n","import {\n applyLogoConfig, DEFAULT_README_TEMPLATE, loadConfig, resolveTemplatePath, scaffoldTemplate,\n} from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeInitParams {\n templatePath?: string\n verbose?: boolean\n}\n\nexport async function readmeInit({ templatePath }: ReadmeInitParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config.readme?.logoUrl, config.readme?.logoLinkUrl)\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n await scaffoldTemplate(resolvedTemplatePath, template)\n return 0\n}\n","import { existsSync, readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD, resolveTemplatePath } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\ninterface ReadmeLintResult {\n errors: string[]\n warnings: string[]\n}\n\nfunction lintTemplate(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (!existsSync(templatePath)) {\n result.errors.push('Missing .xy/README.template.md (run \"xy readme init\" to create)')\n return result\n }\n\n const template = readFileSync(templatePath, 'utf8')\n\n if (!template.includes('{{body}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{body}} placeholder')\n }\n if (!template.includes('{{description}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{description}} placeholder')\n }\n\n const bodyPath = PATH.join(cwd, '.xy', 'README.body.md')\n if (!existsSync(bodyPath)) {\n result.errors.push('Missing .xy/README.body.md (run \"xy readme init\" to create)')\n }\n\n return result\n}\n\nfunction lintLogoConfig(cwd: string, config: XyConfig): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (existsSync(templatePath)) {\n const template = readFileSync(templatePath, 'utf8')\n const logoRef = /\\[logo]: (.+)/.exec(template)\n if (logoRef?.[1].includes('example.com')) {\n result.warnings.push('.xy/README.template.md still has the example.com logo placeholder — update it or set readme.logoUrl in xy.config.ts')\n } else if (!logoRef && !config.readme?.logoUrl) {\n result.warnings.push('No logo URL configured in xy.config.ts (readme.logoUrl) or template')\n }\n }\n\n if (!config.readme?.logoUrl && !config.readme?.logoLinkUrl) {\n result.warnings.push('No readme.logoUrl or readme.logoLinkUrl configured in xy.config.ts')\n }\n\n return result\n}\n\nfunction lintPackages(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n\n const pkgPath = PATH.join(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n if (pkg.private) continue\n\n if (!pkg.description) {\n result.warnings.push(`${name} is missing a \"description\" in package.json`)\n }\n\n const readmePath = PATH.join(cwd, location, 'README.md')\n if (!existsSync(readmePath)) {\n result.errors.push(`${name} is missing README.md`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nexport interface ReadmeLintParams {\n config: XyConfig\n verbose?: boolean\n}\n\nexport function readmeLint({ config, verbose }: ReadmeLintParams): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Readme Lint'))\n\n const checks = [\n lintTemplate(cwd),\n lintLogoConfig(cwd, config),\n lintPackages(cwd),\n ]\n\n let errorCount = 0\n let warningCount = 0\n\n for (const { errors, warnings } of checks) {\n for (const error of errors) {\n console.log(chalk.red(` ✗ ${error}`))\n errorCount++\n }\n for (const warning of warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n warningCount++\n }\n }\n\n if (errorCount === 0 && warningCount === 0) {\n console.log(chalk.green(' All checks passed'))\n } else {\n if (verbose) {\n console.log(chalk.gray(` ${errorCount} error(s), ${warningCount} warning(s)`))\n }\n }\n\n return errorCount > 0 ? 1 : 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { fillTemplate, loadRepoTemplateFiles } from '../lib/index.ts'\n\nexport interface RepoInitParams {\n description: string\n githubOrg?: string\n name?: string\n packageName?: string\n pm: 'pnpm' | 'yarn'\n scope: string\n skipGit?: boolean\n skipInstall?: boolean\n template: string\n verbose?: boolean\n}\n\nfunction askQuestion(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.trim())\n })\n })\n}\n\nfunction getConfigVersion(): string {\n const require = createRequire(import.meta.url)\n const pkgPath = require.resolve('@xylabs/ts-scripts-common/package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, string>\n return pkg.version.replace(/\\.\\d+$/, '')\n}\n\nfunction mapOutputPath(relativePath: string, variables: Record<string, string>): string | undefined {\n let result = relativePath\n\n // Strip .tmpl suffix\n if (result.endsWith('.tmpl')) {\n result = result.slice(0, -5)\n }\n\n // Map gitignore -> .gitignore\n if (result === 'gitignore') {\n result = '.gitignore'\n }\n\n // Map github/ -> .github/\n if (result.startsWith('github/')) {\n result = `.${result}`\n }\n\n // Replace __packageName__ in paths\n result = result.replaceAll('__packageName__', variables.packageName)\n\n return result\n}\n\nfunction isPmSpecificFile(relativePath: string, pm: string): boolean {\n // Skip pnpm-workspace.yaml for yarn\n if (relativePath === 'pnpm-workspace.yaml' && pm === 'yarn') return true\n\n // PM-specific build files: build-pnpm.yml.tmpl vs build-yarn.yml.tmpl\n if (relativePath.includes('build-pnpm') && pm !== 'pnpm') return true\n if (relativePath.includes('build-yarn') && pm !== 'yarn') return true\n\n return false\n}\n\nfunction mapBuildWorkflowName(outputPath: string): string {\n // build-pnpm.yml -> build.yml, build-yarn.yml -> build.yml\n return outputPath.replace(/build-(pnpm|yarn)\\.yml/, 'build.yml')\n}\n\nfunction buildVariables(params: {\n description: string\n githubOrg: string\n packageName: string\n pm: 'pnpm' | 'yarn'\n projectName: string\n scope: string\n}): Record<string, string> {\n const {\n description, githubOrg, packageName, pm, projectName, scope,\n } = params\n const identifierName = packageName.replaceAll(/-([a-z])/g, (_, c: string) => c.toUpperCase())\n const pmPackage = pm === 'pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n return {\n configVersion: getConfigVersion(),\n description,\n githubOrg,\n identifierName,\n npmScope: scope,\n packageName,\n pmName: pm,\n pmPackage,\n projectName,\n }\n}\n\nfunction ensureEmptyDir(projectDir: string, name: string): boolean {\n if (existsSync(projectDir)) {\n const entries = readdirSync(projectDir)\n if (entries.length > 0) {\n console.error(chalk.red(`Directory '${name}' already exists and is not empty`))\n return false\n }\n }\n mkdirSync(projectDir, { recursive: true })\n return true\n}\n\nfunction scaffoldFiles(\n templateName: string,\n layer: 'package' | 'root',\n outputDir: string,\n pm: string,\n variables: Record<string, string>,\n verbose?: boolean,\n): number {\n const files = loadRepoTemplateFiles(templateName, layer)\n let count = 0\n for (const file of files) {\n if (isPmSpecificFile(file.relativePath, pm)) continue\n const content = fillTemplate(file.content, variables)\n let outputPath = mapOutputPath(file.relativePath, variables)\n if (!outputPath) continue\n if (layer === 'root') outputPath = mapBuildWorkflowName(outputPath)\n\n const fullPath = PATH.resolve(outputDir, outputPath)\n mkdirSync(PATH.dirname(fullPath), { recursive: true })\n writeFileSync(fullPath, content)\n count++\n if (verbose) console.log(chalk.gray(` ${layer === 'root' ? outputPath : `packages/${variables.packageName}/${outputPath}`}`))\n }\n return count\n}\n\nfunction initGitRepo(projectDir: string, verbose?: boolean): void {\n if (verbose) console.log(chalk.gray('Initializing git repository...'))\n const result = spawnSync('git', ['init', '-b', 'main'], {\n cwd: projectDir,\n stdio: verbose ? 'inherit' : 'pipe',\n })\n if (result.status === 0) {\n console.log(chalk.green('Initialized git repository'))\n } else {\n console.warn(chalk.yellow('git init failed, skipping'))\n }\n}\n\nfunction installDependencies(projectDir: string, pm: string): boolean {\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd: projectDir,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n\nexport async function repoInit(params: RepoInitParams): Promise<number> {\n const {\n description, pm, scope, skipGit, skipInstall, template, verbose,\n } = params\n\n let name = params.name\n if (!name) {\n name = await askQuestion(chalk.cyan('Project name: '))\n if (!name) {\n console.error(chalk.red('Project name is required'))\n return 1\n }\n }\n\n const projectName = PATH.basename(name)\n const packageName = params.packageName ?? projectName\n const githubOrg = params.githubOrg ?? scope.replace(/^@/, '')\n\n const variables = buildVariables({\n description, githubOrg, packageName, pm, projectName, scope,\n })\n\n if (verbose) {\n console.log(chalk.gray('Template variables:'))\n for (const [key, value] of Object.entries(variables)) {\n console.log(chalk.gray(` ${key}: ${value}`))\n }\n }\n\n const projectDir = PATH.resolve(process.cwd(), name)\n if (!ensureEmptyDir(projectDir, name)) return 1\n\n const rootCount = scaffoldFiles(template, 'root', projectDir, pm, variables, verbose)\n const pkgDir = PATH.resolve(projectDir, 'packages', packageName)\n const pkgCount = scaffoldFiles(template, 'package', pkgDir, pm, variables, verbose)\n console.log(chalk.green(`Scaffolded ${rootCount + pkgCount} files into ${name}/`))\n\n if (!skipGit) initGitRepo(projectDir, verbose)\n if (!skipInstall && !installDependencies(projectDir, pm)) return 1\n\n console.log('')\n console.log(chalk.cyan(`Project ${name} created successfully!`))\n console.log('')\n console.log(chalk.gray('Next steps:'))\n console.log(chalk.gray(` cd ${name}`))\n if (skipInstall) console.log(chalk.gray(` ${pm} install`))\n console.log(chalk.gray(` ${pm} xy build`))\n\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCheck } from '../../../actions/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check if Claude configuration is up to date with templates',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Check')\n process.exitCode = claudeCheck()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove all Claude configuration files from the repo',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Clean')\n process.exitCode = claudeClean()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCommands } from '../../../actions/index.ts'\n\nexport const commandsCommand: CommandModule = {\n command: 'commands',\n describe: 'Sync XY Labs standard Claude slash commands to .claude/commands/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Commands')\n process.exitCode = claudeCommands()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport {\n claudeCommands, claudeRules, claudeSettings, claudeSkills,\n} from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level for settings (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize all Claude configuration (commands, rules, skills, settings)',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Init')\n const commandsResult = claudeCommands()\n const rulesResult = claudeRules({ force: argv.force as boolean | undefined })\n const skillsResult = claudeSkills()\n const settingsResult = await claudeSettings({ level: argv.level as SettingsLevel })\n process.exitCode = commandsResult || rulesResult || skillsResult || settingsResult\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeRules } from '../../../actions/index.ts'\n\nexport const rulesCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'rules',\n describe: 'Sync XY Labs standard Claude rules to .claude/rules/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Rules')\n process.exitCode = claudeRules({ force: argv.force as boolean | undefined })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport { claudeSettings } from '../../../actions/index.ts'\n\nexport const settingsCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'settings',\n describe: 'Initialize .claude/settings.local.json with XY Labs defaults',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Settings')\n process.exitCode = await claudeSettings({ level: argv.level as SettingsLevel })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSkills } from '../../../actions/index.ts'\n\nexport const skillsCommand: CommandModule = {\n builder: yargs => yargs,\n command: 'skills',\n describe: 'Sync XY Labs standard Claude skills to .claude/skills/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Skills')\n process.exitCode = claudeSkills()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { cleanCommand } from './cleanCommand.ts'\nimport { commandsCommand } from './commandsCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { rulesCommand } from './rulesCommand.ts'\nimport { settingsCommand } from './settingsCommand.ts'\nimport { skillsCommand } from './skillsCommand.ts'\n\nexport const claudeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(checkCommand)\n .command(cleanCommand)\n .command(commandsCommand)\n .command(initCommand)\n .command(rulesCommand)\n .command(settingsCommand)\n .command(skillsCommand)\n .demandCommand(1, 'Please specify a claude subcommand')\n .strictCommands()\n },\n command: 'claude',\n describe: 'Claude - Claude Code configuration utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanDocs } from '../../actions/index.ts'\n\nexport const cleanDocsCommand: CommandModule = {\n command: 'clean-docs',\n describe: 'CleanDocs - Clean TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log('Cleaning TypeDocs: all')\n process.exitCode = cleanDocs()\n },\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dead } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deadCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'dead [package]',\n describe: 'Dead - Check for dead code',\n handler: (argv) => {\n if (argv.verbose) console.log('Dead')\n process.exitCode = dead()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genDocs } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const genDocsCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'gen-docs [package]',\n describe: 'GenDocs - Generate TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log(`Generating TypeDocs: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = genDocs({\n incremental: !!argv.incremental, jobs: argv.jobs as number, pkg: argv.package as string,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitignore } from '../../actions/index.ts'\n\nexport const gitignoreCommand: CommandModule = {\n command: 'gitignore',\n describe: 'GitIgnore - Generate root .gitignore and remove package .gitignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('GitIgnore')\n process.exitCode = gitignore()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitlint, gitlintFix } from '../../actions/index.ts'\n\nexport const gitlintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix git config issues',\n type: 'boolean',\n })\n },\n command: 'gitlint',\n describe: 'Gitlint - Lint your git config',\n handler: (argv) => {\n if (argv.verbose) console.log('Gitlint')\n process.exitCode = argv.fix ? gitlintFix() : gitlint()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan Clean')\n process.exitCode = orphanClean({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanList } from '../../../actions/index.ts'\n\nexport const listCommand: CommandModule = {\n command: 'list',\n describe: 'List orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan List')\n process.exitCode = orphanList({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { listCommand } from './listCommand.ts'\n\nexport const orphanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(listCommand)\n .command(cleanCommand)\n .demandCommand(1, 'Please specify an orphan subcommand')\n .strictCommands()\n },\n command: 'orphan',\n describe: 'Orphan - Detect and clean orphaned build artifacts',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport {\n convert, packmanClean, packmanLint,\n} from '../../actions/index.ts'\n\nconst convertCommand: CommandModule = {\n command: 'convert <target>',\n describe: 'Convert repo to a different package manager (pnpm or yarn)',\n builder: (yargs) => {\n return yargs.positional('target', {\n choices: ['pnpm', 'yarn'] as const,\n describe: 'Target package manager',\n type: 'string',\n })\n },\n handler: (argv) => {\n process.exitCode = convert({\n target: argv.target as string,\n verbose: !!argv.verbose,\n })\n },\n}\n\nconst cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove node_modules and lock files for a clean install',\n handler: (argv) => {\n process.exitCode = packmanClean({ verbose: !!argv.verbose })\n },\n}\n\nconst lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check package manager configuration settings',\n builder: (yargs) => {\n return yargs.option('fix', {\n alias: 'f',\n default: false,\n description: 'Auto-fix configuration issues',\n type: 'boolean',\n })\n },\n handler: (argv) => {\n process.exitCode = packmanLint({\n fix: !!argv.fix,\n verbose: !!argv.verbose,\n })\n },\n}\n\nexport const packmanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(cleanCommand)\n .command(convertCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a packman subcommand')\n .strictCommands()\n },\n command: 'packman',\n describe: 'Package Manager - Configuration and conversion utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeGen } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const genCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n .option('notypedoc', {\n default: false,\n description: 'Disable TypeDoc reference sections',\n type: 'boolean',\n })\n },\n aliases: ['$0'],\n command: 'gen [package]',\n describe: 'Generate README.md files from template',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Gen')\n process.exitCode = await readmeGen({\n jobs: argv.jobs as number,\n pkg: argv.package as string | undefined,\n templatePath: argv.template as string | undefined,\n typedoc: !argv.notypedoc,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize README template and logo files',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Init')\n process.exitCode = await readmeInit({\n templatePath: argv.template as string | undefined,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../../actions/index.ts'\nimport { readmeLint } from '../../../actions/index.ts'\nimport { loadConfig } from '../../../lib/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check for missing readme templates, body files, logos, and descriptions',\n handler: async (argv) => {\n const config = await loadConfig<XyConfig>()\n process.exitCode = readmeLint({ config, verbose: !!argv.verbose })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genCommand } from './genCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const readmeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(genCommand)\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a readme subcommand')\n .strictCommands()\n },\n command: 'readme',\n describe: 'Readme - README file utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { repoInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n command: 'init <template> [name]',\n describe: 'Scaffold a new monorepo from a template',\n builder: (yargs) => {\n return yargs\n .positional('template', {\n choices: ['cli'] as const,\n describe: 'Template to use',\n type: 'string',\n })\n .positional('name', {\n describe: 'Project name (also used as directory name)',\n type: 'string',\n })\n .option('scope', {\n default: '@xylabs',\n describe: 'npm scope for packages',\n type: 'string',\n })\n .option('package', {\n describe: 'Package name within the monorepo (defaults to project name)',\n type: 'string',\n })\n .option('description', {\n default: '',\n describe: 'Project description',\n type: 'string',\n })\n .option('github-org', {\n describe: 'GitHub organization (derived from scope if not set)',\n type: 'string',\n })\n .option('pm', {\n choices: ['pnpm', 'yarn'] as const,\n default: 'pnpm',\n describe: 'Package manager to configure',\n type: 'string',\n })\n .option('skip-install', {\n default: false,\n describe: 'Skip dependency installation after scaffolding',\n type: 'boolean',\n })\n .option('skip-git', {\n default: false,\n describe: 'Skip git init after scaffolding',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Repo Init')\n process.exitCode = await repoInit({\n description: argv.description as string,\n githubOrg: argv['github-org'] as string | undefined,\n name: argv.name as string | undefined,\n packageName: argv.package as string | undefined,\n pm: argv.pm as 'pnpm' | 'yarn',\n scope: argv.scope as string,\n skipGit: !!argv.skipGit,\n skipInstall: !!argv.skipInstall,\n template: argv.template as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { packageLintMonorepo } from '../../../actions/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check monorepo package structure',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Repo Lint')\n process.exitCode = packageLintMonorepo(!!argv.fix)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const repoCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a repo subcommand')\n .strictCommands()\n },\n command: 'repo',\n describe: 'Repo - Repository structure utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { claudeCommand } from './claude/index.ts'\nimport { cleanDocsCommand } from './cleanDocsCommand.ts'\nimport { deadCommand } from './deadCommand.ts'\nimport { genDocsCommand } from './genDocsCommand.ts'\nimport { gitignoreCommand } from './gitignoreCommand.ts'\nimport { gitlintCommand } from './gitlintCommand.ts'\nimport { licenseCommand } from './licenseCommand.ts'\nimport { npmignoreGenCommand } from './npmignoreGenCommand.ts'\nimport { orphanCommand } from './orphan/index.ts'\nimport { packmanCommand } from './packmanCommand.ts'\nimport { readmeCommand } from './readme/index.ts'\nimport { repoCommand } from './repo/index.ts'\nimport { retestCommand } from './retestCommand.ts'\nimport { testCommand } from './testCommand.ts'\n\nexport const xyCommonCommands = (args: Argv) => {\n return args\n .command(checkCommand)\n .command(claudeCommand)\n .command(licenseCommand)\n .command(deadCommand)\n .command(genDocsCommand)\n .command(cleanDocsCommand)\n .command(gitlintCommand)\n .command(gitignoreCommand)\n .command(npmignoreGenCommand)\n .command(orphanCommand)\n .command(packmanCommand)\n .command(readmeCommand)\n .command(repoCommand)\n .command(retestCommand)\n .command(testCommand)\n}\n"],"mappings":";AAAA,OAAOA,aAAW;;;ACAlB,OAAO,WAAW;AAEX,IAAM,cAAc,CAAC,MAAc,QAAgB,QAA0B,SAAS,aAAa,UAAU;AAClH,MAAI,QAAQ;AACV,UAAM,UAAU,aAAa,sBAAsB;AACnD,UAAM,YAAY,UAAU,UAAU,MAAM,MAAM,MAAM;AACxD,YAAQ,KAAK,EAAE,UAAU,GAAG,IAAI,QAAQ,MAAM,aAAa,OAAO,EAAE,CAAC;AACrE,QAAI,YAAY;AACd,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF;AACF;;;ACXA;AAAA,EACE;AAAA,EAAa;AAAA,EAAc;AAAA,OACtB;AACP,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAIjB,IAAMC,WAAU,cAAc,YAAY,GAAG;AAC7C,IAAM,cAAc,KAAK,QAAQA,SAAQ,QAAQ,wCAAwC,CAAC;AAC1F,IAAM,eAAe,KAAK,QAAQ,aAAa,aAAa,QAAQ;AAE7D,SAAS,oBAAoB,SAAiB,IAAgC;AACnF,SAAO,QAAQ,WAAW,WAAW,GAAG,EAAE,KAAK,EAAE,WAAW,YAAY,GAAG,EAAE,MAAM;AACrF;AAEO,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB;AAC/B,IAAM,yBAAyB;AAC/B,IAAM,uBAAuB;AAE7B,IAAM,wBAAwB,MAA8B;AACjE,QAAM,WAAW,KAAK,QAAQ,cAAc,OAAO;AACnD,QAAM,QAAQ,YAAY,QAAQ,EAAE,OAAO,OAAK,EAAE,WAAW,mBAAmB,KAAK,EAAE,SAAS,KAAK,CAAC;AACtG,QAAM,SAAiC,CAAC;AACxC,aAAW,QAAQ,OAAO;AACxB,WAAO,IAAI,IAAI,aAAa,KAAK,QAAQ,UAAU,IAAI,GAAG,MAAM;AAAA,EAClE;AACA,SAAO;AACT;AAEO,IAAM,yBAAyB,MAA8B;AAClE,QAAM,cAAc,KAAK,QAAQ,cAAc,UAAU;AACzD,QAAM,QAAQ,YAAY,WAAW,EAAE,OAAO,OAAK,EAAE,WAAW,sBAAsB,KAAK,EAAE,SAAS,KAAK,CAAC;AAC5G,QAAM,SAAiC,CAAC;AACxC,aAAW,QAAQ,OAAO;AACxB,WAAO,IAAI,IAAI,aAAa,KAAK,QAAQ,aAAa,IAAI,GAAG,MAAM;AAAA,EACrE;AACA,SAAO;AACT;AAGO,IAAM,uBAAuB,MAA8C;AAChF,QAAM,YAAY,KAAK,QAAQ,cAAc,QAAQ;AACrD,QAAM,OAAO,YAAY,SAAS,EAAE;AAAA,IAClC,OAAK,EAAE,WAAW,oBAAoB,KAAK,SAAS,KAAK,QAAQ,WAAW,CAAC,CAAC,EAAE,YAAY;AAAA,EAC9F;AACA,QAAM,SAAiD,CAAC;AACxD,aAAW,OAAO,MAAM;AACtB,UAAM,UAAU,KAAK,QAAQ,WAAW,GAAG;AAC3C,UAAM,QAAQ,YAAY,SAAS,EAAE,WAAW,MAAM,UAAU,OAAO,CAAC;AACxE,WAAO,GAAG,IAAI,CAAC;AACf,eAAW,QAAQ,OAAO;AACxB,UAAI,SAAS,KAAK,QAAQ,SAAS,IAAI,CAAC,EAAE,OAAO,GAAG;AAClD,eAAO,GAAG,EAAE,IAAI,IAAI,aAAa,KAAK,QAAQ,SAAS,IAAI,GAAG,MAAM;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAKO,IAAM,wBAAwB,MACnC,aAAa,KAAK,QAAQ,cAAc,iBAAiB,GAAG,MAAM;;;ACjEpE,SAAS,yBAAyB;AAE3B,IAAM,gBAAgB,IAAI,kBAA4B;AAE7D,IAAI,mBAAmB;AAEhB,SAAS,uBAA6B;AAC3C,MAAI,iBAAkB;AACtB,qBAAmB;AAEnB,QAAM,sBAAsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,MAAM;AACpE,QAAM,sBAAsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,MAAM;AAEpE,WAAS,UACP,UAC6B;AAC7B,WAAO,SAAU,UAA+B,MAAiB;AAC/D,YAAM,SAAS,cAAc,SAAS;AACtC,UAAI,QAAQ;AACV,eAAO,KAAK,OAAO,UAAU,WAAW,QAAQ,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AAC/E,eAAO;AAAA,MACT;AACA,aAAQ,SAA+C,OAAO,GAAG,IAAI;AAAA,IACvE;AAAA,EACF;AAEA,UAAQ,OAAO,QAAQ,UAAU,mBAAmB;AACpD,UAAQ,OAAO,QAAQ,UAAU,mBAAmB;AACtD;AAEA,eAAsB,mBACpB,OACA,aACA,IACe;AACf,MAAI,OAAO;AACX,iBAAe,SAAwB;AACrC,WAAO,OAAO,MAAM,QAAQ;AAC1B,YAAM,IAAI;AACV,YAAM,GAAG,MAAM,CAAC,CAAC;AAAA,IACnB;AAAA,EACF;AACA,QAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAa,MAAM,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;AAC/F;;;AC3CA,OAAO,QAAQ;AAEf,SAAS,YAAY;AAEd,IAAM,aAAa,CAAC,aAAqB;AAE9C,QAAM,QAAQ,KAAK,KAAK,QAAQ;AAGhC,aAAW,QAAQ,OAAO;AACxB,OAAG,OAAO,MAAM,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EAClD;AACF;;;ACZA,SAAS,kBAAkB;AAIpB,SAAS,uBAA2C;AACzD,MAAI,WAAW,gBAAgB,KAAK,WAAW,qBAAqB,EAAG,QAAO;AAC9E,SAAO;AACT;;;ACHA,IAAM,kBAAkB,oBAAI,IAAwC;AAM7D,SAAS,kBAAkB,MAA2C;AAC3E,QAAM,SAAS,QAAQ,qBAAqB;AAC5C,QAAM,KAAK,gBAAgB,IAAI,MAAM;AACrC,MAAI,CAAC,IAAI;AACP,UAAM,IAAI;AAAA,MACR,qDAAqD,MAAM;AAAA,IAE7D;AAAA,EACF;AACA,SAAO;AACT;;;ACpBA,OAAOC,YAAW;;;ACAX,IAAM,YAAY,CAEvB,IACA,SACA,YAAY,CAACC,QAAW,CAAC,CAACA,IAAG,QAAQ,CAAC,CAACA,IAAG,YACvC;AACH,SAAO,UAAU,EAAO,IAAI,QAAQ,EAAO,IAAI;AACjD;;;ACLO,IAAM,qBAAqB,CAChC,IAAa,YACV;AACH,SAAO,UAAa,IAAI,SAAS,CAACC,QAAiBA,IAA6B,UAAU,MAAS;AACrG;;;AFDO,IAAM,YAAY,CAAC,OAAgB;AACxC,QAAM,QAAQ,OAAO,OAAO,WAAW,IAAI,MAAM,EAAE,IAAI;AACvD,QAAM,WACF,mBAAmB,OAAO,CAACC,WAAU;AACrC,QAAIA,OAAM,SAAS,UAAU;AAC3B,cAAQ,MAAMC,OAAM,IAAI,IAAID,OAAM,IAAI,cAAc,CAAC;AAAA,IACvD,OAAO;AACL,cAAQ,MAAMC,OAAM,IAAI,UAAUD,OAAM,IAAI,EAAE,CAAC;AAAA,IACjD;AACA,WAAOA,OAAM,SAAS;AAAA,EACxB,CAAC,KACE,UAAU,OAAO,CAACA,WAAU;AAC7B,YAAQ,MAAMC,OAAM,IAAI,GAAGD,OAAM,IAAI,KAAKA,OAAM,OAAO,EAAE,CAAC;AAC1D,WAAO;AAAA,EACT,CAAC,MACG,MAAM;AACR,YAAQ,MAAMC,OAAM,IAAI,qBAAqB,KAAK,UAAU,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC;AAC3E,WAAO;AAAA,EACT,GAAG;AAEL,UAAQ,KAAK,QAAQ,YAAY,QAAQ;AAC3C;;;AGtBA,IAAM,WAAW,CAAC,MAAoB,aAAa,SAAiB;AAClE,MAAI;AACF,UAAM,SAAS,KAAK;AACpB,QAAI,UAAU,YAAY;AACxB,cAAQ,KAAK,MAAM;AAAA,IACrB;AACA,WAAO;AAAA,EACT,SAAS,IAAI;AACX,WAAO,UAAU,EAAE;AAAA,EACrB;AACF;;;ACdO,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB;;;ACAtC;AAAA,EACE,cAAAC;AAAA,EAAY,gBAAAC;AAAA,EACZ;AAAA,OACK;;;ACJA,IAAM,QAAQ,CAAC,UAA4B,OAAO,KAAK,EAAE,WAAW;AACpE,IAAM,WAAW,CAAC,UAA4B,CAAC,MAAM,KAAK;;;ACD1D,IAAM,QAAQ,CAAC,GAAa,MAA6B,oBAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;;;ACK/F,IAAM,6BAAkD,EAAE,UAAU,OAAO;;;AHM3E,IAAM,YAAY,CAAC,KAAe,UAA+B,+BACtEC,YAAW,GAAG,IACVC,cAAa,KAAK,OAAO,EAAE,QAAQ,uBAAuB,sBAAsB,EAAE,MAAM,sBAAsB,IAC9G,CAAC;AAEA,IAAM,oBAAoB,CAAC,KAAe,UAA+B,+BAC9E,UAAU,KAAK,OAAO,EAAE,OAAO,QAAQ;AAElC,IAAM,aAAa,CAAC,KAAe,OAAiB,UAA4B,+BAA+B;AACpH,QAAM,WAAWD,YAAW,GAAG,IAAIC,cAAa,KAAK,OAAO,IAAI;AAChE,QAAM,UAAU,MAAM,KAAK,sBAAsB;AAEjD,MAAI,aAAa,QAAS,eAAc,KAAK,SAAS,OAAO;AAC/D;;;AIxBO,SAAS,aAAa,UAAkB,MAAsC;AACnF,SAAO,SAAS,WAAW,kBAAkB,CAAC,GAAG,QAAgB,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzF;;;ACFA,OAAOC,YAAW;;;ACAX,SAAS,WAAmB;AACjC,SAAO,QAAQ,IAAI,YAAY,QAAQ,IAAI;AAC7C;;;ADKA,IAAM,gBAAgB,CAAC,GAAW,MAAc,EAAE,cAAc,CAAC;AAEjE,IAAM,eAAe,CAAC,GAAa,MAA0B,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,aAAa;AAE7F,IAAM,sBAAsB,CAACC,WAAkB,QAAiB;AACrE,UAAQ,IAAIC,OAAM,MAAM,YAAYD,SAAQ,QAAQ,CAAC;AACrD,QAAM,MAAM,SAAS;AACrB,QAAM,KAAK,kBAAkB;AAC7B,QAAM,kBAAkB,MAAM,GAAG,cAAc,GAAG,IAAI;AACtD,QAAM,aAAa,kBAAkB,CAAC,eAAe,IAAI,GAAG,eAAe;AAC3E,QAAM,cAAc,CAAC,aAA+B,kBAAkB,GAAG,QAAQ,IAAIA,SAAQ,EAAE;AAC/F,QAAM,eAAe,CAAC,UAAkB,YAAsB,WAAW,GAAG,QAAQ,IAAIA,SAAQ,IAAI,OAAO;AAC3G,QAAM,UAAU,WAAW,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM;AACrD,QAAI;AACF,mBAAa,UAAU,aAAa,YAAY,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC;AAC5E,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,MAAM,YAAYA,SAAQ,WAAW,IAAI,MAAM,MAAM,OAAO,GAAG;AACvE,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,QAAM,YAAY,QAAQ,MAAM,YAAU,WAAW,CAAC;AACtD,SAAO,YAAY,IAAI;AACzB;;;AE/BA,SAAS,gBAAgB;AACzB,OAAO,MAAM,gBAAAE,qBAAoB;AACjC;AAAA,EACE;AAAA,EAAO;AAAA,EAAU;AAAA,OACZ;AACP,SAAS,iBAAAC,sBAAqB;AAC9B,OAAOC,WAAU;AACjB,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAE1B,OAAOC,YAAW;AAMlB,IAAM,gBAAgB,UAAU,QAAQ;AAExC,IAAMC,WAAUC,eAAc,YAAY,GAAG;AAC7C,IAAMC,eAAcC,MAAK,QAAQH,SAAQ,QAAQ,wCAAwC,CAAC;AAC1F,IAAM,qBAAqBG,MAAK,QAAQD,cAAa,aAAa,QAAQ;AAY1E,SAAS,mBAAmB,UAAkB,MAAsC;AAClF,QAAM,iBAAyC,EAAE,GAAG,MAAM,UAAU,KAAK,KAAK,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,EAAE,EAAE;AACxH,SAAO,aAAa,UAAU,cAAc;AAC9C;AAEA,eAAe,gBAAgB,iBAAyB,aAAwC;AAC9F,QAAM,UAAUC,MAAK,KAAK,iBAAiB,eAAe;AAE1D,MAAI;AACF,QAAI,CAAC,GAAG,WAAW,OAAO,GAAG;AAC3B,SAAG,UAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,IAC3C;AAEA,UAAM,gBAAgB;AAAA,MACpB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,aAAa,YAAY,IAAI,QAAMA,MAAK,QAAQ,iBAAiB,EAAE,CAAC;AAAA,MACpE,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,KAAK;AAAA,MACL,QAAQ,CAAC,yBAAyB;AAAA,MAClC,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,MAAM,CAAC,cAAc;AAAA,MACrB,OAAO;AAAA,MACP,eAAe;AAAA,IACjB;AAEA,UAAM,kBAAkBA,MAAK,KAAK,SAAS,cAAc;AACzD,OAAG,cAAc,iBAAiB,KAAK,UAAU,eAAe,MAAM,CAAC,CAAC;AAExE,QAAI;AACF,YAAM,cAAc,OAAO,CAAC,WAAW,aAAa,eAAe,GAAG,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC;AAAA,IAC9F,QAAQ;AACN,aAAO;AAAA,IACT;AAEA,WAAO,oBAAoB,OAAO;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT,UAAE;AACA,QAAI;AACF,SAAG,OAAO,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACrD,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,SAAyB;AACpD,MAAI,eAAe;AAEnB,QAAM,iBAAiBA,MAAK,KAAK,SAAS,WAAW;AACrD,MAAI,GAAG,WAAW,cAAc,GAAG;AACjC,UAAM,cAAc,GAAG,aAAa,gBAAgB,MAAM,EACvD,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,WAAW,EAAE,EACrB,WAAW,oBAAoB,QAAQ;AAE1C,oBAAgB,cAAc;AAAA,EAChC;AAEA,kBAAgB,iBAAiB,OAAO;AAExC,SAAO,aACJ,WAAW,YAAY,MAAM,EAC7B,WAAW,YAAY,MAAM,EAC7B,WAAW,aAAa,OAAO,EAC/B,WAAW,cAAc,QAAQ;AACtC;AAEA,SAAS,iBAAiB,KAAa,QAAQ,GAAW;AACxD,QAAM,SAAS,KAAK,OAAO,KAAK;AAChC,MAAI,UAAU;AAEd,MAAI;AACF,UAAM,QAAQ,GAAG,YAAY,KAAK,EAAE,eAAe,KAAK,CAAC;AAEzD,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,YAAY,EAAG;AACxB,UAAI,KAAK,SAAS,eAAe,CAAC,KAAK,KAAK,SAAS,KAAK,EAAG;AAE7D,YAAM,cAAc,GAAG,aAAaA,MAAK,KAAK,KAAK,KAAK,IAAI,GAAG,MAAM,EAClE,QAAQ,qBAAqB,EAAE;AAClC,YAAM,aAAa,KAAK,KAAK,QAAQ,OAAO,EAAE;AAE9C,iBAAW;AAAA;AAAA,EAAO,MAAM,cAAc,UAAU,SAAS,UAAU;AAAA;AAAA;AACnE,iBAAW,YACR,QAAQ,WAAW,EAAE,EACrB,WAAW,oBAAoB,QAAQ;AAAA,IAC5C;AAEA,eAAW,QAAQ,OAAO;AACxB,UAAI,CAAC,KAAK,YAAY,EAAG;AACzB,UAAI,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,OAAO,EAAG;AAEzD,iBAAW;AAAA;AAAA,EAAO,MAAM,OAAO,KAAK,IAAI;AAAA;AACxC,iBAAW,iBAAiBA,MAAK,KAAK,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC;AAAA,IAClE;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB,UAAoC;AAC3D,QAAM,KAAK,gBAAgB,EAAE,OAAO,QAAQ,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAC3E,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,OAAG,SAAS,UAAU,CAAC,WAAW;AAChC,SAAG,MAAM;AACT,cAAQ,OAAO,YAAY,MAAM,OAAO,OAAO,YAAY,MAAM,KAAK;AAAA,IACxE,CAAC;AAAA,EACH,CAAC;AACH;AAEO,IAAM,0BAA0BC,cAAaD,MAAK,QAAQ,oBAAoB,oBAAoB,GAAG,MAAM;AAC3G,IAAM,sBAAsBC,cAAaD,MAAK,QAAQ,oBAAoB,gBAAgB,GAAG,MAAM;AAEnG,SAAS,gBAAgB,UAAkB,SAAkB,aAA8B;AAChG,MAAI,SAAS;AACb,MAAI,SAAS;AACX,aAAS,OAAO,QAAQ,eAAe,WAAW,OAAO,EAAE;AAC3D,QAAI,aAAa;AACf,eAAS,OAAO,QAAQ,yBAAyB,eAAe,WAAW,GAAG;AAAA,IAChF;AAAA,EACF,OAAO;AACL,aAAS,OAAO,QAAQ,2BAA2B,EAAE;AACrD,aAAS,OAAO,QAAQ,sBAAsB,EAAE;AAAA,EAClD;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,cAA+B;AACjE,QAAM,MAAM,SAAS;AACrB,SAAO,gBAAgBA,MAAK,KAAK,KAAK,OAAO,oBAAoB;AACnE;AAEA,eAAe,qBAAqB,sBAGjC;AACD,MAAI;AACF,UAAM,WAAW,MAAM,SAAS,sBAAsB,MAAM;AAC5D,WAAO,EAAE,SAAS,OAAO,SAAS;AAAA,EACpC,QAAQ;AACN,YAAQ,IAAIE,OAAM,OAAO,uBAAuB,oBAAoB,EAAE,CAAC;AACvE,UAAM,eAAe,MAAM,gBAAgB,mDAAmD;AAC9F,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,UAAM,WAAW;AACjB,UAAM,iBAAiB,sBAAsB,QAAQ;AACrD,WAAO,EAAE,SAAS,MAAM,SAAS;AAAA,EACnC;AACF;AAEA,eAAsB,iBAAiB,sBAA8B,UAAiC;AACpG,QAAM,QAAQF,MAAK,QAAQ,oBAAoB;AAC/C,QAAM,MAAM,OAAO,EAAE,WAAW,KAAK,CAAC;AACtC,QAAM,UAAU,sBAAsB,QAAQ;AAC9C,UAAQ,IAAIE,OAAM,MAAM,qBAAqB,oBAAoB,EAAE,CAAC;AACpE,QAAM,WAAWF,MAAK,KAAK,OAAO,gBAAgB;AAClD,QAAM,UAAU,UAAU,mBAAmB;AAC7C,UAAQ,IAAIE,OAAM,MAAM,0BAA0B,QAAQ,EAAE,CAAC;AAC/D;AAEA,eAAe,YAAY,UAAkB,aAAsC;AACjF,QAAM,gBAAgBF,MAAK,KAAK,UAAU,gBAAgB;AAC1D,MAAI;AACF,WAAO,MAAM,SAAS,eAAe,MAAM;AAAA,EAC7C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,2BACb,UACA,MACA,UACA,aACA,SACA,SACA,IACkB;AAClB,MAAI;AACF,UAAM,cAAcA,MAAK,KAAK,UAAU,cAAc;AACtD,UAAM,UAAU,KAAK,MAAM,MAAM,SAAS,aAAa,MAAM,CAAC;AAC9D,UAAM,OAAO,MAAM,YAAY,UAAU,WAAW;AACpD,UAAM,iBAAiB,UAAU,MAAM,gBAAgB,UAAU,CAAC,eAAe,CAAC,IAAI;AACtF,UAAM,gBAAgB,mBAAmB,UAAU;AAAA,MACjD,GAAG;AAAA,MAAS;AAAA,MAAM;AAAA,MAAI,SAAS;AAAA,IACjC,CAAC;AACD,UAAM,UAAUA,MAAK,KAAK,UAAU,WAAW,GAAG,aAAa;AAC/D,QAAI,QAAS,SAAQ,IAAIE,OAAM,MAAM,KAAK,IAAI,EAAE,CAAC;AACjD,WAAO;AAAA,EACT,SAAS,IAAI;AACX,UAAM,QAAQ;AACd,YAAQ,KAAKA,OAAM,OAAO,aAAa,QAAQ,KAAK,MAAM,OAAO,EAAE,CAAC;AACpE,WAAO;AAAA,EACT;AACF;AAWA,eAAe,gBAAgB,sBAA+C;AAC5E,QAAM,aAAaF,MAAK,KAAKA,MAAK,QAAQ,oBAAoB,GAAG,gBAAgB;AACjF,MAAI;AACF,WAAO,MAAM,SAAS,YAAY,MAAM;AAAA,EAC1C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,SAAoC;AACxD,MAAI,SAAS;AACb,aAAW,EAAE,QAAQ,QAAQ,KAAK,SAAS;AACzC,eAAW,QAAQ,QAAQ;AACzB,cAAQ,OAAO,MAAM,IAAI;AAAA,IAC3B;AACA,QAAI,CAAC,QAAS,UAAS;AAAA,EACzB;AACA,SAAO;AACT;AAEA,eAAsB,oBAAoB;AAAA,EACxC;AAAA,EAAM;AAAA,EAAa;AAAA,EAAS;AAAA,EAAK;AAAA,EAAc,UAAU;AAAA,EAAO,UAAU;AAC5E,GAA+C;AAC7C,UAAQ,IAAIE,OAAM,MAAM,uBAAuB,CAAC;AAChD,QAAM,uBAAuB,oBAAoB,YAAY;AAE7D,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,KAAC,EAAE,UAAU,SAAS,gBAAgB,IAAI,MAAM,qBAAqB,oBAAoB;AAAA,EAC3F,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,aAAW,gBAAgB,UAAU,SAAS,WAAW;AAEzD,MAAI,iBAAiB;AACnB,YAAQ,IAAIA,OAAM,MAAM,6CAA6C,CAAC;AAAA,EACxE;AAEA,QAAM,cAAc,MAAM,gBAAgB,oBAAoB;AAC9D,QAAM,SAAS,qBAAqB;AACpC,QAAM,KAAK,kBAAkB;AAC7B,QAAM,kBAAkB,OAAO,CAAC,kBAAkB,GAAG,cAAc,GAAG,IAAI;AAC1E,QAAM,aAAa,kBAAkB,CAAC,eAAe,IAAI,GAAG,eAAe;AAC3E,QAAM,cAAc;AACpB,QAAM,UAA4B,MAAM,KAAK,EAAE,QAAQ,WAAW,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,KAAK,EAAE;AAEjH,uBAAqB;AAErB,QAAM,QAAQ,YAAY,IAAI;AAE9B,QAAM;AAAA,IACJ,WAAW,IAAI,CAAC,IAAI,OAAO,EAAE,GAAG,GAAG,EAAE;AAAA,IACrC;AAAA,IACA,OAAO,EAAE,GAAG,GAAG,MAAM;AACnB,YAAM,SAAmB,CAAC;AAC1B,YAAM,cAAc,IAAI,QAAQ,YAAY;AAC1C,cAAM,UAAU,MAAM,2BAA2B,GAAG,UAAU,GAAG,MAAM,UAAU,aAAa,SAAS,SAAS,MAAM;AACtH,gBAAQ,CAAC,IAAI,EAAE,QAAQ,QAAQ;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,OAAO;AACnC,QAAM,KAAK,YAAY,IAAI,IAAI;AAC/B,UAAQ,IAAIA,OAAM,KAAK,aAAa,WAAW,MAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;AAExF,SAAO,SAAS,IAAI;AACtB;;;AC9TA,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,iBAAAC,sBAAqB;AAC9B,OAAOC,WAAU;AAEjB,IAAMC,WAAUF,eAAc,YAAY,GAAG;AAC7C,IAAMG,eAAcF,MAAK,QAAQC,SAAQ,QAAQ,wCAAwC,CAAC;AAC1F,IAAME,gBAAeH,MAAK,QAAQE,cAAa,aAAa,WAAW;AAEhE,IAAM,oBAAoB,MAC/BJ,cAAaE,MAAK,QAAQG,eAAc,oBAAoB,GAAG,MAAM;;;ACNhE,IAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;;;ACTA,OAAOC,YAAW;AAClB,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,OAAO,eAAe;AAEtB,IAAI;AACJ,IAAI;AAEJ,IAAM,uBAAuB,oBAAI,IAAqC;AACtE,IAAM,oBAAoB,oBAAI,IAAY;AAE1C,SAAS,iBAAiB;AACxB,SAAO,YAAY,MAAM,EAAE,OAAO,MAAM,SAAS,EAAE,OAAO,iBAAiB,EAAE,EAAE,CAAC;AAClF;AAEO,IAAM,aAAa,OAAyB,WAA2B;AAC5E,MAAI,WAAW,QAAW;AACxB,UAAM,qBAAqB,MAAM,eAAe,EAAE,OAAO;AACzD,aAAU,oBAAoB,UAAU,CAAC;AACzC,qBAAiB,oBAAoB;AACrC,UAAM,iBAAiB,oBAAoB;AAC3C,QAAI,mBAAmB,QAAW;AAChC,cAAQ,IAAIA,OAAM,MAAM,sBAAsB,cAAc,EAAE,CAAC;AAC/D,UAAI,OAAO,SAAS;AAClB,gBAAQ,IAAIA,OAAM,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACA,SAAO,UAAU,QAAQ,UAAU,CAAC,CAAC;AACvC;AAOA,eAAe,oBAAoB,cAAwD;AACzF,QAAM,SAAS,qBAAqB,IAAI,YAAY;AACpD,MAAI,WAAW,OAAW,QAAO;AAEjC,QAAM,SAAS,MAAM,eAAe,EAAE,OAAO,YAAY;AAGzD,MAAI,CAAC,UAAU,OAAO,aAAa,gBAAgB;AACjD,yBAAqB,IAAI,cAAc,CAAC,CAAC;AACzC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAY,OAAO,UAAU,CAAC;AACpC,uBAAqB,IAAI,cAAc,QAAQ;AAC/C,SAAO;AACT;AAGA,IAAM,4BAA4B,oBAAI,IAAI,CAAC,WAAW,SAAS,CAAC;AAOhE,SAAS,oBACP,KACA,aACA,YACyB;AACzB,QAAM,WAAW,IAAI;AACrB,QAAM,eAAe,WAAW,WAAW;AAC3C,QAAM,eAAe,IAAI,WAAW;AAEpC,MAAI,iBAAiB,UAAa,OAAO,iBAAiB,UAAU;AAClE,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,UAAa,OAAO,iBAAiB,YACrD,0BAA0B,IAAI,WAAW,GAAG;AAC/C,UAAM,MAAM,GAAG,cAAc,SAAS,IAAI,WAAW;AACrD,QAAI,CAAC,kBAAkB,IAAI,GAAG,GAAG;AAC/B,wBAAkB,IAAI,GAAG;AACzB,cAAQ,KAAKA,OAAM;AAAA,QACjB,+BAA+B,WAAW,QAAQ,cAAc,WAAW,6BAAwB,WAAW;AAAA,MAChH,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAEA,SAAO,CAAC;AACV;AAQA,eAAsB,2BACpB,cACA,aACY;AAEZ,QAAM,OAAO,MAAM,WAAW;AAC9B,QAAM,UAAU,oBAAoB,MAAiC,aAAa,cAAc;AAEhG,QAAM,WAAW,MAAM,oBAAoB,YAAY;AACvD,QAAM,eAAe,qBAAqB,IAAI,YAAY,IAAI,eAAe;AAC7E,QAAM,QAAQ,oBAAoB,UAAU,aAAa,YAAY;AAErE,SAAO,UAAU,SAAS,KAAK;AACjC;;;AC5GA,SAAS,gBAAAC,qBAAoB;AAC7B,OAAO,UAAU;AAIV,SAAS,cAAkC;AAChD,MAAI,QAAQ,IAAI,kBAAkB;AAChC,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,MAAI;AACF,UAAM,UAAU,KAAK,KAAK,SAAS,GAAG,cAAc;AACpD,UAAM,MAAM,KAAK,MAAMC,cAAa,SAAS,MAAM,CAAC;AACpD,WAAO,IAAI;AAAA,EACb,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AChBA,SAAS,eAAAC,cAAa,gBAAAC,qBAAoB;AAC1C,SAAS,iBAAAC,sBAAqB;AAC9B,OAAOC,WAAU;AAEjB,IAAMC,WAAUF,eAAc,YAAY,GAAG;AAC7C,IAAMG,eAAcF,MAAK,QAAQC,SAAQ,QAAQ,wCAAwC,CAAC;AAC1F,IAAM,mBAAmBD,MAAK,QAAQE,cAAa,aAAa,MAAM;AAOtE,SAAS,aAAa,KAAa,QAAgC;AACjE,QAAM,UAA0B,CAAC;AACjC,aAAW,SAASL,aAAY,KAAK,EAAE,eAAe,KAAK,CAAC,GAAG;AAC7D,UAAM,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,KAAK,MAAM;AACvD,QAAI,MAAM,YAAY,GAAG;AACvB,cAAQ,KAAK,GAAG,aAAaG,MAAK,QAAQ,KAAK,MAAM,IAAI,GAAG,GAAG,CAAC;AAAA,IAClE,OAAO;AACL,cAAQ,KAAK;AAAA,QACX,SAASF,cAAaE,MAAK,QAAQ,KAAK,MAAM,IAAI,GAAG,MAAM;AAAA,QAC3D,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,sBAAsB,UAAkB,SAAiC;AACvF,QAAM,MAAMA,MAAK,QAAQ,kBAAkB,UAAU,OAAO;AAC5D,SAAO,aAAa,KAAK,EAAE;AAC7B;;;AChCA,SAAS,iBAAiB;AAE1B,OAAOG,YAAW;AAIX,SAAS,WAAW,KAAuB;AAChD,QAAM,KAAK,qBAAqB;AAChC,UAAQ,IAAIC,OAAM,KAAK,WAAW,EAAE,aAAa,CAAC;AAClD,QAAM,SAAS,UAAU,IAAI,CAAC,SAAS,GAAG;AAAA,IACxC;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACD,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,KAAKA,OAAM,OAAO,GAAG,EAAE,iBAAiB,CAAC;AACjD,WAAO;AAAA,EACT;AACA,UAAQ,IAAIA,OAAM,MAAM,wBAAwB,CAAC;AACjD,SAAO;AACT;;;ACnBA,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,cAAAC,mBAAkB;AAE3B,OAAOC,YAAW;AAOX,IAAM,WAAW,CAAC,MAAc,OAAqB,aAAa,MAAM,aAAgC;AAC7G,SAAO,SAAS,MAAM;AACpB,UAAM,UAAU,YAAY;AAC5B,YAAQ,IAAIC,OAAM,MAAM,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC;AAC/C,QAAI,cAAc;AAClB,eAAW,CAAC,GAAG,CAAC,SAAS,MAAMC,OAAM,CAAC,KAAK,MAAM,QAAQ,GAAG;AAC1D,UAAI,WAAW,CAAC,GAAG;AACjB,gBAAQ,IAAID,OAAM,KAAK,WAAW,CAAC,CAAC,CAAC;AAAA,MACvC;AACA,YAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG;AAC3D,UAAI,YAAY,UAAU,CAACE,YAAW,QAAQ,CAAC,CAAC,GAAG;AACjD,cAAM,IAAI,MAAM,mBAAmB,QAAQ,CAAC,CAAC,GAAG;AAAA,MAClD;AACA,YAAM,SACFC,WAAU,SAAS,MAAM,QAAQ,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAAA,QACjE,GAAGF;AAAA,QACH,UAAU;AAAA,QACV,KAAK,EAAE,aAAa,KAAK,GAAG,QAAQ,IAAI;AAAA,QACxC,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC,EAAE,UAAU;AACf,kBAAY,MAAM,QAAQ,SAAS,UAAU;AAC7C,qBAAe,UAAU;AAAA,IAC3B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC,UAAU;AACjB;;;ACpCA;AAAA,EACE,cAAAG;AAAA,EAAY,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,YAAAC;AAAA,OAClC;AACP,OAAOC,WAAU;AAEjB,OAAOC,YAAW;AAclB,IAAM,gBAAgB,CAAC,gBAAqC;AAC1D,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,uBAAuB;AAC5C,QAAM,YAAoC,CAAC;AAC3C,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC1D,cAAU,IAAI,IAAI,oBAAoB,SAAS,EAAE;AAAA,EACnD;AAEA,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAqB,CAAC;AAE5B,aAAW,CAACC,WAAU,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC3D,UAAM,aAAaC,MAAK,QAAQ,aAAaD,SAAQ;AACrD,QAAI,CAACE,YAAW,UAAU,GAAG;AAC3B,cAAQ,KAAKF,SAAQ;AAAA,IACvB,WAAWG,cAAa,YAAY,MAAM,MAAM,SAAS;AACvD,eAAS,KAAKH,SAAQ;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AACpD,QAAM,QAAQE,YAAW,WAAW,IAChCE,aAAY,WAAW,EAAE,OAAO,OAAK,EAAE,WAAW,sBAAsB,KAAK,EAAE,SAAS,KAAK,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,IACvH,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAU;AAAA,EACrB;AACF;AAEA,IAAM,aAAa,CAAC,aAAkC;AACpD,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,sBAAsB;AAC3C,QAAM,YAAoC,CAAC;AAC3C,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC1D,cAAU,IAAI,IAAI,oBAAoB,SAAS,EAAE;AAAA,EACnD;AAEA,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAqB,CAAC;AAE5B,aAAW,CAACJ,WAAU,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC3D,UAAM,aAAaC,MAAK,QAAQ,UAAUD,SAAQ;AAClD,QAAI,CAACE,YAAW,UAAU,GAAG;AAC3B,cAAQ,KAAKF,SAAQ;AAAA,IACvB,WAAWG,cAAa,YAAY,MAAM,MAAM,SAAS;AACvD,eAAS,KAAKH,SAAQ;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AACpD,QAAM,QAAQE,YAAW,QAAQ,IAC7BE,aAAY,QAAQ,EAAE,OAAO,OAAK,EAAE,WAAW,mBAAmB,KAAK,EAAE,SAAS,KAAK,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,IACjH,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAU;AAAA,EACrB;AACF;AAEA,IAAM,cAAc,CAAC,cAAmC;AACtD,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,qBAAqB;AAE1C,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAqB,CAAC;AAE5B,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC7D,UAAM,WAAWH,MAAK,QAAQ,WAAW,SAAS;AAClD,QAAI,CAACC,YAAW,QAAQ,GAAG;AACzB,cAAQ,KAAK,SAAS;AACtB;AAAA,IACF;AACA,eAAW,CAACF,WAAU,UAAU,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC1D,YAAM,UAAU,oBAAoB,YAAY,EAAE;AAClD,YAAM,aAAaC,MAAK,QAAQ,UAAUD,SAAQ;AAClD,UAAI,CAACE,YAAW,UAAU,GAAG;AAC3B,gBAAQ,KAAK,GAAG,SAAS,IAAIF,SAAQ,EAAE;AAAA,MACzC,WAAWG,cAAa,YAAY,MAAM,MAAM,SAAS;AACvD,iBAAS,KAAK,GAAG,SAAS,IAAIH,SAAQ,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,YAAY,CAAC;AACvD,QAAM,QAAQE,YAAW,SAAS,IAC9BE,aAAY,SAAS,EAAE;AAAA,IACrB,OAAK,EAAE,WAAW,oBAAoB,KAAKC,UAASJ,MAAK,QAAQ,WAAW,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,cAAc,IAAI,CAAC;AAAA,EACvH,IACA,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAU;AAAA,EACrB;AACF;AAEA,IAAM,aAAa,CAAC,OAAe,WAAiC;AAClE,QAAM,SAAS,CAAC,GAAG,OAAO,SAAS,GAAG,OAAO,UAAU,GAAG,OAAO,KAAK;AACtE,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,IAAIK,OAAM,MAAM,YAAY,KAAK,EAAE,CAAC;AAC5C,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,OAAM,IAAI,YAAY,KAAK,EAAE,CAAC;AAC1C,aAAW,QAAQ,OAAO,SAAS;AACjC,YAAQ,IAAIA,OAAM,OAAO,kBAAkB,IAAI,EAAE,CAAC;AAAA,EACpD;AACA,aAAW,QAAQ,OAAO,UAAU;AAClC,YAAQ,IAAIA,OAAM,OAAO,mBAAmB,IAAI,EAAE,CAAC;AAAA,EACrD;AACA,aAAW,QAAQ,OAAO,OAAO;AAC/B,YAAQ,IAAIA,OAAM,OAAO,gBAAgB,IAAI,EAAE,CAAC;AAAA,EAClD;AACA,SAAO;AACT;AAEO,SAAS,cAAsB;AACpC,QAAM,MAAM,SAAS;AACrB,QAAM,YAAYL,MAAK,QAAQ,KAAK,SAAS;AAE7C,UAAQ,IAAIK,OAAM,KAAK,6BAA6B,CAAC;AACrD,UAAQ,IAAI;AAEZ,QAAM,iBAAiB,cAAcL,MAAK,QAAQ,WAAW,UAAU,CAAC;AACxE,QAAM,cAAc,WAAWA,MAAK,QAAQ,WAAW,OAAO,CAAC;AAC/D,QAAM,eAAe,YAAYA,MAAK,QAAQ,WAAW,QAAQ,CAAC;AAElE,QAAM,aAAa,WAAW,YAAY,cAAc;AACxD,QAAM,UAAU,WAAW,SAAS,WAAW;AAC/C,QAAM,WAAW,WAAW,UAAU,YAAY;AAElD,UAAQ,IAAI;AACZ,MAAI,cAAc,WAAW,UAAU;AACrC,YAAQ,IAAIK,OAAM,MAAM,yCAAyC,CAAC;AAAA,EACpE,OAAO;AACL,YAAQ,IAAIA,OAAM,OAAO,iDAAiD,CAAC;AAAA,EAC7E;AAEA,SAAO;AACT;;;AC9JA;AAAA,EACE,cAAAC;AAAA,EAAY,eAAAC;AAAA,EAAa;AAAA,EAAQ;AAAA,OAC5B;AACP,OAAOC,WAAU;AAEjB,OAAOC,YAAW;AAIlB,SAAS,WAAW,UAAkB,OAAwB;AAC5D,MAAIC,YAAW,QAAQ,GAAG;AACxB,eAAW,QAAQ;AACnB,YAAQ,IAAIC,OAAM,OAAO,aAAa,KAAK,EAAE,CAAC;AAC9C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,UAAU,SAAiB,OAAwB;AAC1D,MAAID,YAAW,OAAO,GAAG;AACvB,WAAO,SAAS,EAAE,WAAW,KAAK,CAAC;AACnC,YAAQ,IAAIC,OAAM,OAAO,aAAa,KAAK,EAAE,CAAC;AAC9C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,cAAsB;AACpC,UAAQ,IAAIA,OAAM,MAAM,4BAA4B,CAAC;AACrD,QAAM,MAAM,SAAS;AACrB,MAAI,UAAU;AAGd,QAAM,YAAY,CAAC,aAAa,iBAAiB;AACjD,aAAW,QAAQ,WAAW;AAC5B,QAAI,WAAWC,MAAK,QAAQ,KAAK,IAAI,GAAG,IAAI,EAAG;AAAA,EACjD;AAGA,MAAI,UAAUA,MAAK,QAAQ,KAAK,SAAS,GAAG,UAAU,EAAG;AAGzD,QAAM,cAAcA,MAAK,QAAQ,KAAK,UAAU;AAChD,MAAIF,YAAW,WAAW,GAAG;AAC3B,UAAM,kBAAkB,CAAC,KAAa,WAAmB;AACvD,YAAM,UAAUG,aAAY,KAAK,EAAE,eAAe,KAAK,CAAC;AACxD,iBAAW,SAAS,SAAS;AAC3B,cAAM,WAAWD,MAAK,QAAQ,KAAK,MAAM,IAAI;AAC7C,cAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,IAAI;AACpC,YAAI,MAAM,OAAO,MAAM,MAAM,SAAS,eAAe,MAAM,SAAS,oBAAoB;AACtF,cAAI,WAAW,UAAU,KAAK,EAAG;AAAA,QACnC,WAAW,MAAM,YAAY,KAAK,MAAM,SAAS,WAAW;AAC1D,cAAI,UAAU,UAAU,GAAG,KAAK,GAAG,EAAG;AAAA,QACxC,WAAW,MAAM,YAAY,KAAK,MAAM,SAAS,kBAAkB,MAAM,SAAS,QAAQ;AACxF,0BAAgB,UAAU,GAAG,KAAK,GAAG;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AACA,oBAAgB,aAAa,WAAW;AAAA,EAC1C;AAEA,MAAI,UAAU,GAAG;AACf,YAAQ,IAAID,OAAM,MAAM,aAAa,OAAO,UAAU,CAAC;AAAA,EACzD,OAAO;AACL,YAAQ,IAAIA,OAAM,KAAK,oBAAoB,CAAC;AAAA,EAC9C;AAEA,SAAO;AACT;;;ACpEA;AAAA,EACE,cAAAG;AAAA,EAAY;AAAA,EAAW,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,cAAAC;AAAA,EAAY,iBAAAC;AAAA,OACzD;AACP,OAAOC,WAAU;AAEjB,OAAOC,aAAW;AAQlB,IAAM,mBAAmB,CAAC,gBAAwB;AAChD,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,uBAAuB;AAC5C,QAAM,YAAoC,CAAC;AAC3C,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC1D,cAAU,IAAI,IAAI,oBAAoB,SAAS,EAAE;AAAA,EACnD;AACA,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AACpD,MAAI,UAAU;AACd,MAAI,UAAU;AAEd,aAAW,CAACC,WAAU,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC3D,UAAM,aAAaC,MAAK,QAAQ,aAAaD,SAAQ;AACrD,UAAM,WAAWE,YAAW,UAAU,IAAIC,cAAa,YAAY,MAAM,IAAI;AAC7E,QAAI,aAAa,QAAS;AAC1B,IAAAC,eAAc,YAAY,SAAS,MAAM;AACzC,QAAI,UAAU;AACZ;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B;AACF;AAEA,IAAM,sBAAsB,CAAC,aAAqB,kBAA+B;AAC/E,QAAM,mBAAmBC,aAAY,WAAW,EAAE,OAAO,OAAK,EAAE,WAAW,sBAAsB,KAAK,EAAE,SAAS,KAAK,CAAC;AACvH,MAAI,UAAU;AAEd,aAAW,QAAQ,kBAAkB;AACnC,QAAI,CAAC,cAAc,IAAI,IAAI,GAAG;AAC5B,MAAAC,YAAWL,MAAK,QAAQ,aAAa,IAAI,CAAC;AAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,uBAAuB,CAAC,gBAAgC;AAC5D,QAAM,cAAcI,aAAY,WAAW,EAAE,OAAO,OAAK,EAAE,WAAW,sBAAsB,KAAK,EAAE,SAAS,KAAK,CAAC;AAClH,aAAW,QAAQ,aAAa;AAC9B,IAAAC,YAAWL,MAAK,QAAQ,aAAa,IAAI,CAAC;AAAA,EAC5C;AACA,SAAO,YAAY;AACrB;AAEA,IAAM,oBAAoB,CAAC,SAAiB,SAAiB,YAAoB;AAC/E,MAAI,WAAW,WAAW,SAAS;AACjC,UAAM,QAAQ;AAAA,MACZ,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,IACnC,EAAE,OAAO,OAAO;AAChB,YAAQ,IAAIM,QAAM,MAAM,oBAAoB,sBAAsB,SAAS,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EAChG,OAAO;AACL,YAAQ,IAAIA,QAAM,KAAK,oBAAoB,sBAAsB,0BAA0B,CAAC;AAAA,EAC9F;AACF;AAEO,IAAM,iBAAiB,MAAc;AAC1C,QAAM,MAAM,SAAS;AACrB,QAAM,cAAcN,MAAK,QAAQ,KAAK,WAAW,UAAU;AAE3D,YAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAE1C,QAAM,SAAS,qBAAqB,WAAW;AAC/C,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B,IAAI,iBAAiB,WAAW;AAChC,QAAM,UAAU,oBAAoB,aAAa,aAAa;AAC9D,oBAAkB,SAAS,SAAS,UAAU,MAAM;AAEpD,SAAO;AACT;;;AC1FA,SAAS,aAAAO,kBAAiB;AAC1B;AAAA,EACE,cAAAC;AAAA,EAAY,aAAAC;AAAA,EAAW,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,cAAAC;AAAA,EAAY,iBAAAC;AAAA,OACzD;AACP,OAAOC,WAAU;AAEjB,OAAOC,aAAW;AAQlB,IAAM,gBAAgB,CAAC,aAAqB;AAC1C,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,sBAAsB;AAC3C,QAAM,YAAoC,CAAC;AAC3C,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC1D,cAAU,IAAI,IAAI,oBAAoB,SAAS,EAAE;AAAA,EACnD;AACA,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;AACpD,MAAI,UAAU;AACd,MAAI,UAAU;AAEd,aAAW,CAACC,WAAU,OAAO,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC3D,UAAM,aAAaC,MAAK,QAAQ,UAAUD,SAAQ;AAClD,UAAM,WAAWE,YAAW,UAAU,IAAIC,cAAa,YAAY,MAAM,IAAI;AAC7E,QAAI,aAAa,QAAS;AAC1B,IAAAC,eAAc,YAAY,SAAS,MAAM;AACzC,QAAI,UAAU;AACZ;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B;AACF;AAEA,IAAM,mBAAmB,CAAC,UAAkB,kBAA+B;AACzE,QAAM,gBAAgBC,aAAY,QAAQ,EAAE,OAAO,OAAK,EAAE,WAAW,mBAAmB,KAAK,EAAE,SAAS,KAAK,CAAC;AAC9G,MAAI,UAAU;AAEd,aAAW,QAAQ,eAAe;AAChC,QAAI,CAAC,cAAc,IAAI,IAAI,GAAG;AAC5B,MAAAC,YAAWL,MAAK,QAAQ,UAAU,IAAI,CAAC;AACvC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,iBAAiB,CAAC,SAAiB,SAAiB,YAAoB;AAC5E,MAAI,WAAW,WAAW,SAAS;AACjC,UAAM,QAAQ;AAAA,MACZ,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,IACnC,EAAE,OAAO,OAAO;AAChB,YAAQ,IAAIM,QAAM,MAAM,iBAAiB,mBAAmB,SAAS,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EAC1F,OAAO;AACL,YAAQ,IAAIA,QAAM,KAAK,iBAAiB,mBAAmB,0BAA0B,CAAC;AAAA,EACxF;AACF;AAEA,IAAM,wBAAwB,CAAC,KAAa,UAAoB;AAC9D,QAAM,cAAcN,MAAK,QAAQ,KAAK,WAAW;AAEjD,MAAI,CAACC,YAAW,WAAW,KAAK,OAAO;AACrC,QAAI,SAASA,YAAW,WAAW,GAAG;AACpC,cAAQ,IAAIK,QAAM,OAAO,wBAAwB,CAAC;AAAA,IACpD;AACA,YAAQ,IAAIA,QAAM,MAAM,0CAA0C,CAAC;AACnE,UAAM,SAASC,WAAU,UAAU,CAAC,MAAM,SAAS,kBAAkB,QAAQ,SAAS,QAAQ,MAAM,GAAG;AAAA,MACrG;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC;AACD,QAAI,OAAO,WAAW,GAAG;AACvB,cAAQ,MAAMD,QAAM,IAAI,sDAAiD,CAAC;AAC1E,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,YAAQ,IAAIA,QAAM,KAAK,+DAA+D,CAAC;AAAA,EACzF;AACA,SAAO;AACT;AAEA,IAAM,sBAAsB,CAAC,QAAgB;AAC3C,QAAM,YAAYN,MAAK,QAAQ,KAAK,iBAAiB;AAErD,MAAIC,YAAW,SAAS,GAAG;AACzB,YAAQ,IAAIK,QAAM,KAAK,0CAA0C,CAAC;AAAA,EACpE,OAAO;AACL,IAAAH,eAAc,WAAW,sBAAsB,GAAG,MAAM;AACxD,YAAQ,IAAIG,QAAM,MAAM,2BAA2B,CAAC;AAAA,EACtD;AACF;AAEO,IAAM,cAAc,CAAC,EAAE,MAAM,IAAyB,CAAC,MAAc;AAC1E,QAAM,MAAM,SAAS;AACrB,QAAM,WAAWN,MAAK,QAAQ,KAAK,WAAW,OAAO;AAErD,EAAAQ,WAAU,UAAU,EAAE,WAAW,KAAK,CAAC;AAEvC,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B,IAAI,cAAc,QAAQ;AAC1B,QAAM,UAAU,iBAAiB,UAAU,aAAa;AACxD,iBAAe,SAAS,SAAS,OAAO;AACxC,QAAM,iBAAiB,sBAAsB,KAAK,KAAK;AACvD,sBAAoB,GAAG;AAEvB,SAAO,kBAAkB;AAC3B;;;ACtHA;AAAA,EACE,cAAAC;AAAA,EAAY,aAAAC;AAAA,EAAW,iBAAAC;AAAA,OAClB;AACP,OAAOC,WAAU;AACjB,SAAS,mBAAAC,wBAAuB;AAEhC,OAAOC,aAAW;AAMlB,IAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,mBAAmB;AAAA,EACvB,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,cAAc,OAA8B;AACnD,SAAO;AAAA,IACL,aAAa;AAAA,MACX,OAAO,UAAU,gBAAgB,oBAAoB;AAAA,MACrD,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAASC,iBAAgB,UAAoC;AAC3D,QAAM,KAAKC,iBAAgB,EAAE,OAAO,QAAQ,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAC3E,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,OAAG,SAAS,UAAU,CAAC,WAAW;AAChC,SAAG,MAAM;AACT,cAAQ,OAAO,YAAY,MAAM,OAAO,OAAO,YAAY,MAAM,KAAK;AAAA,IACxE,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAsB,eAAe,EAAE,QAAQ,aAAa,IAA+B,CAAC,GAAoB;AAC9G,QAAM,MAAM,SAAS;AACrB,QAAM,YAAYC,MAAK,QAAQ,KAAK,SAAS;AAC7C,QAAM,eAAeA,MAAK,QAAQ,WAAW,qBAAqB;AAElE,EAAAC,WAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAExC,MAAIC,YAAW,YAAY,GAAG;AAC5B,UAAM,YAAY,MAAMJ;AAAA,MACtBK,QAAM,OAAO,GAAG,YAAY,qCAAqC;AAAA,IACnE;AACA,QAAI,CAAC,WAAW;AACd,cAAQ,IAAIA,QAAM,KAAK,uDAAkD,CAAC;AAC1E,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,WAAW,cAAc,KAAK;AACpC,EAAAC,eAAc,cAAc,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAC5E,UAAQ,IAAID,QAAM,MAAM,0CAA0C,KAAK,GAAG,CAAC;AAC3E,SAAO;AACT;;;ACjGA;AAAA,EACE,cAAAE;AAAA,EAAY,aAAAC;AAAA,EAAW,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,UAAAC;AAAA,EAAQ,YAAAC;AAAA,EAAU,iBAAAC;AAAA,OAC/D;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAOlB,IAAM,iBAAiB,CAAC,cAAsB;AAC5C,QAAM,KAAK,qBAAqB;AAChC,QAAM,eAAe,qBAAqB;AAC1C,QAAM,gBAAgB,IAAI,IAAI,OAAO,KAAK,YAAY,CAAC;AACvD,MAAI,UAAU;AACd,MAAI,UAAU;AAEd,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC7D,UAAM,WAAWC,OAAK,QAAQ,WAAW,SAAS;AAClD,IAAAC,WAAU,UAAU,EAAE,WAAW,KAAK,CAAC;AAEvC,eAAW,CAACC,WAAU,UAAU,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC1D,YAAM,UAAU,oBAAoB,YAAY,EAAE;AAClD,YAAM,aAAaF,OAAK,QAAQ,UAAUE,SAAQ;AAClD,MAAAD,WAAUD,OAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACvD,YAAM,WAAWG,YAAW,UAAU,IAAIC,eAAa,YAAY,MAAM,IAAI;AAC7E,UAAI,aAAa,QAAS;AAC1B,MAAAC,eAAc,YAAY,SAAS,MAAM;AACzC,UAAI,UAAU;AACZ;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B;AACF;AAEA,IAAM,oBAAoB,CAAC,WAAmB,kBAA+B;AAC3E,QAAM,iBAAiBC,aAAY,SAAS,EAAE;AAAA,IAC5C,OAAK,EAAE,WAAW,oBAAoB,KAAKC,UAASP,OAAK,QAAQ,WAAW,CAAC,CAAC,EAAE,YAAY;AAAA,EAC9F;AACA,MAAI,UAAU;AAEd,aAAW,OAAO,gBAAgB;AAChC,QAAI,CAAC,cAAc,IAAI,GAAG,GAAG;AAC3B,MAAAQ,QAAOR,OAAK,QAAQ,WAAW,GAAG,GAAG,EAAE,WAAW,KAAK,CAAC;AACxD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,kBAAkB,CAAC,SAAiB,SAAiB,YAAoB;AAC7E,MAAI,WAAW,WAAW,SAAS;AACjC,UAAM,QAAQ;AAAA,MACZ,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,MACjC,UAAU,GAAG,OAAO,aAAa;AAAA,IACnC,EAAE,OAAO,OAAO;AAChB,YAAQ,IAAIS,QAAM,MAAM,kBAAkB,oBAAoB,OAAO,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EAC1F,OAAO;AACL,YAAQ,IAAIA,QAAM,KAAK,kBAAkB,oBAAoB,wBAAwB,CAAC;AAAA,EACxF;AACF;AAEO,IAAM,eAAe,MAAc;AACxC,QAAM,MAAM,SAAS;AACrB,QAAM,YAAYT,OAAK,QAAQ,KAAK,WAAW,QAAQ;AAEvD,EAAAC,WAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAExC,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAe;AAAA,EAC1B,IAAI,eAAe,SAAS;AAC5B,QAAM,UAAU,kBAAkB,WAAW,aAAa;AAC1D,kBAAgB,SAAS,SAAS,OAAO;AAEzC,SAAO;AACT;;;ACrFA,OAAOS,WAAU;AAEjB,OAAOC,aAAW;AAKX,IAAM,YAAY,MAAM;AAC7B,QAAM,UAAU,YAAY;AAC5B,UAAQ,IAAIC,QAAM,MAAM,kBAAkB,OAAO,GAAG,CAAC;AACrD,aAAW,EAAE,SAAS,KAAK,kBAAkB,EAAE,eAAe,EAAG,YAAWC,MAAK,KAAK,UAAU,MAAM,CAAC;AACvG,SAAO;AACT;;;ACVO,IAAM,OAAO,MAAM;AACxB,SAAO,SAAS,QAAQ,CAAC,CAAC,YAAY,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;AACjE;;;ACJA,SAAS,gBAAAC,gBAAc,iBAAAC,sBAAqB;AAC5C,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAClB,OAAO,YAAY;AAMnB,SAAS,yBAAyB,KAAa,UAAuD;AACpG,QAAM,UAAUC,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,MAAI;AACF,WAAO,KAAK,MAAMC,eAAa,SAAS,MAAM,CAAC;AAAA,EACjD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,0BAA0B,KAAa,UAAkB,KAA8B;AAC9F,QAAM,UAAUD,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,EAAAE,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AACpE;AAEA,SAAS,yBACP,KACA,YACqB;AACrB,QAAM,MAAM,oBAAI,IAAoB;AACpC,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,UAAM,UAAU,IAAI;AACpB,QAAI,QAAS,KAAI,IAAI,MAAM,OAAO;AAAA,EACpC;AACA,SAAO;AACT;AAWA,SAAS,kBAAkB,eAAmC,eAA+B;AAC3F,QAAM,SAAS,OAAO,MAAM,aAAa;AACzC,MAAI,CAAC,OAAQ,QAAO,IAAI,aAAa;AAErC,MAAI,kBAAkB,eAAe;AACnC,WAAO,IAAI,OAAO,KAAK;AAAA,EACzB;AACA,SAAO,IAAI,OAAO,KAAK,IAAI,OAAO,KAAK;AACzC;AAIO,SAAS,wBACd,KACA,SACA,YACY;AACZ,QAAM,SAAqB;AAAA,IACzB,QAAQ,CAAC;AAAA,IAAG,SAAS,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtC;AAEA,MAAI,QAAQ,YAAY,QAAW;AACjC,WAAO,QAAQ,KAAK,mEAAmE;AAAA,EACzF;AAEA,QAAM,WAAW,oBAAI,IAAoB;AACzC,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,UAAM,UAAU,IAAI;AACpB,QAAI,SAAS;AACX,eAAS,IAAI,MAAM,OAAO;AAAA,IAC5B,OAAO;AACL,aAAO,OAAO,KAAK,GAAG,IAAI,KAAK,QAAQ,gCAAgC;AAAA,IACzE;AAAA,EACF;AAEA,QAAM,iBAAiB,IAAI,IAAI,SAAS,OAAO,CAAC;AAChD,MAAI,eAAe,OAAO,GAAG;AAC3B,UAAM,cAAc,CAAC,GAAG,cAAc,EAAE,SAAS,OAAO,QAAQ;AAChE,eAAW,CAAC,MAAM,OAAO,KAAK,UAAU;AACtC,UAAI,YAAY,YAAY,CAAC,GAAG;AAC9B,eAAO,QAAQ,KAAK,GAAG,IAAI,gBAAgB,OAAO,cAAc,YAAY,CAAC,CAAC,GAAG;AAAA,MACnF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,sBACd,KACA,SACAC,uBACA,YACM;AACN,MAAI,QAAQ,YAAY,QAAW;AACjC,WAAO,QAAQ;AACf,IAAAA,sBAAqB,KAAK,OAAO;AACjC,YAAQ,IAAIC,QAAM,MAAM,0DAAqD,CAAC;AAAA,EAChF;AAEA,QAAM,WAAqB,CAAC;AAC5B,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,aAAa,IAAK;AACtB,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,UAAM,UAAU,IAAI;AACpB,QAAI,WAAW,OAAO,MAAM,OAAO,GAAG;AACpC,eAAS,KAAK,OAAO;AAAA,IACvB;AAAA,EACF;AAEA,MAAI,SAAS,WAAW,EAAG;AAE3B,QAAM,UAAU,SAAS,SAAS,OAAO,QAAQ,EAAE,CAAC;AAEpD,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,QAAI,IAAI,YAAY,SAAS;AAC3B,UAAI,UAAU;AACd,gCAA0B,KAAK,UAAU,GAAG;AAC5C,cAAQ,IAAIA,QAAM,MAAM,kCAA6B,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAC;AAAA,IAC1F;AAAA,EACF;AACF;AAIA,SAAS,mBAAmB,eAA+B;AACzD,QAAM,SAAS,OAAO,MAAM,aAAa;AACzC,MAAI,CAAC,OAAQ,QAAO,IAAI,aAAa;AACrC,SAAO,IAAI,aAAa;AAC1B;AAEO,SAAS,yBACd,KACA,YACY;AACZ,QAAM,SAAqB;AAAA,IACzB,QAAQ,CAAC;AAAA,IAAG,SAAS,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtC;AACA,QAAM,oBAAoB,yBAAyB,KAAK,UAAU;AAElE,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AAEV,eAAW,YAAY,CAAC,gBAAgB,iBAAiB,GAAY;AACnE,YAAM,OAAO,IAAI,QAAQ;AACzB,UAAI,CAAC,KAAM;AACX,iBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AACjD,cAAM,gBAAgB,kBAAkB,IAAI,GAAG;AAC/C,YAAI,CAAC,cAAe;AACpB,cAAM,WAAW,mBAAmB,aAAa;AACjD,YAAI,QAAQ,WAAW,YAAY,GAAG;AACpC,iBAAO,QAAQ;AAAA,YACb,GAAG,IAAI,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,QAAQ,OAAO,uBAAkB,QAAQ;AAAA,UACnF;AAAA,QACF,WAAW,YAAY,UAAU;AAC/B,iBAAO,QAAQ;AAAA,YACb,GAAG,IAAI,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,QAAQ,OAAO,uBAAkB,QAAQ;AAAA,UACnF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,uBACd,KACA,YACM;AACN,QAAM,oBAAoB,yBAAyB,KAAK,UAAU;AAElE,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,QAAI,WAAW;AAEf,eAAW,YAAY,CAAC,gBAAgB,iBAAiB,GAAY;AACnE,YAAM,OAAO,IAAI,QAAQ;AACzB,UAAI,CAAC,KAAM;AACX,iBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AACjD,cAAM,gBAAgB,kBAAkB,IAAI,GAAG;AAC/C,YAAI,CAAC,cAAe;AACpB,cAAM,WAAW,mBAAmB,aAAa;AACjD,YAAI,YAAY,UAAU;AACxB,eAAK,GAAG,IAAI;AACZ,kBAAQ,IAAIA,QAAM,MAAM,uBAAkB,QAAQ,IAAI,GAAG,QAAQ,QAAQ,QAAQ,IAAI,KAAK,QAAQ,GAAG,CAAC;AACtG,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,gCAA0B,KAAK,UAAU,GAAG;AAAA,IAC9C;AAAA,EACF;AACF;AAIO,SAAS,uBACd,KACA,YACY;AACZ,QAAM,SAAqB;AAAA,IACzB,QAAQ,CAAC;AAAA,IAAG,SAAS,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtC;AACA,QAAM,iBAAiB,IAAI,IAAI,WAAW,IAAI,OAAK,EAAE,IAAI,CAAC;AAE1D,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AAEV,eAAW,YAAY,CAAC,gBAAgB,iBAAiB,GAAY;AACnE,YAAM,OAAO,IAAI,QAAQ;AACzB,UAAI,CAAC,KAAM;AACX,iBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AACjD,YAAI,CAAC,eAAe,IAAI,GAAG,EAAG;AAC9B,YAAI,CAAC,QAAQ,WAAW,YAAY,GAAG;AACrC,iBAAO,QAAQ;AAAA,YACb,GAAG,IAAI,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,QAAQ,OAAO;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,KACA,YACM;AACN,QAAM,iBAAiB,IAAI,IAAI,WAAW,IAAI,OAAK,EAAE,IAAI,CAAC;AAE1D,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AACV,QAAI,WAAW;AAEf,eAAW,YAAY,CAAC,gBAAgB,iBAAiB,GAAY;AACnE,YAAM,OAAO,IAAI,QAAQ;AACzB,UAAI,CAAC,KAAM;AACX,iBAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AACjD,YAAI,CAAC,eAAe,IAAI,GAAG,EAAG;AAC9B,YAAI,CAAC,QAAQ,WAAW,YAAY,GAAG;AACrC,eAAK,GAAG,IAAI;AACZ,kBAAQ,IAAIA,QAAM,MAAM,uBAAkB,QAAQ,IAAI,GAAG,wBAAwB,IAAI,KAAK,QAAQ,GAAG,CAAC;AACtG,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,gCAA0B,KAAK,UAAU,GAAG;AAAA,IAC9C;AAAA,EACF;AACF;AAIO,SAAS,0BACd,KACA,YACY;AACZ,QAAM,SAAqB;AAAA,IACzB,QAAQ,CAAC;AAAA,IAAG,SAAS,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtC;AACA,QAAM,oBAAoB,yBAAyB,KAAK,UAAU;AAElE,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AAEV,UAAM,WAAW,IAAI;AACrB,QAAI,CAAC,SAAU;AACf,UAAM,UAAU,IAAI;AAEpB,eAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACrD,YAAM,gBAAgB,kBAAkB,IAAI,GAAG;AAC/C,UAAI,CAAC,cAAe;AAEpB,UAAI,QAAQ,WAAW,YAAY,GAAG;AACpC,cAAMC,YAAW,kBAAkB,UAAU,GAAG,GAAG,aAAa;AAChE,eAAO,QAAQ;AAAA,UACb,GAAG,IAAI,KAAK,QAAQ,sBAAsB,GAAG,+CAA0CA,SAAQ;AAAA,QACjG;AACA;AAAA,MACF;AAEA,YAAM,WAAW,kBAAkB,UAAU,GAAG,GAAG,aAAa;AAChE,UAAI,YAAY,YAAY,CAAC,OAAO,UAAU,eAAe,OAAO,GAAG;AACrE,eAAO,QAAQ;AAAA,UACb,GAAG,IAAI,KAAK,QAAQ,sBAAsB,GAAG,QAAQ,OAAO,4BAAuB,aAAa,gCAAgC,QAAQ;AAAA,QAC1I;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,wBACd,KACA,YACM;AACN,QAAM,oBAAoB,yBAAyB,KAAK,UAAU;AAElE,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,MAAM,yBAAyB,KAAK,QAAQ;AAClD,QAAI,CAAC,IAAK;AAEV,UAAM,WAAW,IAAI;AACrB,QAAI,CAAC,SAAU;AACf,UAAM,UAAU,IAAI;AACpB,QAAI,WAAW;AAEf,eAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACrD,YAAM,gBAAgB,kBAAkB,IAAI,GAAG;AAC/C,UAAI,CAAC,cAAe;AAEpB,YAAM,WAAW,kBAAkB,UAAU,GAAG,GAAG,aAAa;AAChE,UAAI,YAAY,UAAU;AACxB,iBAAS,GAAG,IAAI;AAChB,gBAAQ,IAAID,QAAM,MAAM,wCAAmC,GAAG,QAAQ,QAAQ,QAAQ,IAAI,KAAK,QAAQ,GAAG,CAAC;AAC3G,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,gCAA0B,KAAK,UAAU,GAAG;AAAA,IAC9C;AAAA,EACF;AACF;;;ACnVO,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EAAM;AAAA,EAAK;AACb,MAAqB;AACnB,SAAO,MAAM,eAAe,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,aAAa,KAAK,CAAC;AACzE;AAEO,IAAM,iBAAiB,CAAC,EAAE,IAAI,MAA4B;AAC/D,QAAM,KAAK,kBAAkB;AAC7B,SAAO,SAAS,YAAY,GAAG,KAAK,CAAC,GAAG,eAAe,KAAK,kBAAkB,CAAC,CAAC;AAClF;AAEO,IAAM,aAAa,CAAC,EAAE,aAAa,KAAK,MAAqB;AAClE,QAAM,KAAK,kBAAkB;AAC7B,SAAO,SAAS,eAAe,cAAc,iBAAiB,EAAE,KAAK;AAAA,IACnE,GAAG,iBAAiB,oBAAoB,CAAC,GAAG,EAAE,aAAa,KAAK,CAAC;AAAA,EACnE,CAAC;AACH;;;AC3BA,SAAS,cAAAE,mBAAkB;AAE3B,OAAOC,aAAW;AASlB,IAAM,iBAAiB;AAEvB,IAAM,YAAY,CAAC,SAA0B,KAAK,WAAW,cAAc;AAE3E,IAAM,aAAa,CAAC,SAA0B,KAAK,WAAW,GAAG;AAGjE,SAAS,sBAAsB,OAA6B;AAC1D,QAAM,WAAuB,CAAC;AAC9B,MAAI,UAAoB,CAAC;AACzB,aAAW,QAAQ,OAAO;AACxB,QAAI,UAAU,IAAI,GAAG;AACnB,UAAI,QAAQ,SAAS,GAAG;AACtB,iBAAS,KAAK,OAAO;AAAA,MACvB;AACA,gBAAU,CAAC,IAAI;AAAA,IACjB,OAAO;AACL,cAAQ,KAAK,IAAI;AAAA,IACnB;AAAA,EACF;AACA,MAAI,QAAQ,SAAS,GAAG;AACtB,aAAS,KAAK,OAAO;AAAA,EACvB;AACA,SAAO;AACT;AAGA,SAAS,kBAAkB,UAAoB,iBAAmC;AAChF,QAAM,gBAAgB,gBAAgB,MAAM,IAAI,EAAE,OAAO,UAAQ,KAAK,KAAK,EAAE,SAAS,CAAC;AACvF,QAAM,WAAW,sBAAsB,aAAa;AAGpD,QAAM,kBAAkB,IAAI,IAAI,SAAS,OAAO,UAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAGzE,QAAM,kBAAkB,IAAI,IAAI,cAAc,OAAO,UAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAG9E,QAAM,gBAAgB,CAAC,GAAG,eAAe,EAAE,OAAO,WAAS,CAAC,gBAAgB,IAAI,KAAK,CAAC;AAGtF,QAAM,SAAmB,CAAC;AAC1B,aAAW,WAAW,UAAU;AAC9B,eAAW,QAAQ,SAAS;AAC1B,aAAO,KAAK,IAAI;AAAA,IAClB;AACA,WAAO,KAAK,EAAE;AAAA,EAChB;AAEA,MAAI,cAAc,SAAS,GAAG;AAC5B,WAAO,KAAK,UAAU;AACtB,UAAM,SAAS,CAAC,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM;AAE9D,UAAI,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAG,QAAO;AAC5C,UAAI,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC,EAAG,QAAO;AAC5C,aAAO,EAAE,cAAc,CAAC;AAAA,IAC1B,CAAC;AACD,eAAW,SAAS,QAAQ;AAC1B,aAAO,KAAK,KAAK;AAAA,IACnB;AACA,WAAO,KAAK,EAAE;AAAA,EAChB;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,KAAqB;AACpD,MAAI,UAAU;AACd,QAAM,aAAa,kBAAkB,EAAE,eAAe;AACtD,aAAW,EAAE,SAAS,KAAK,YAAY;AAErC,QAAI,aAAa,IAAK;AACtB,UAAM,WAAW,GAAG,GAAG,IAAI,QAAQ;AACnC,QAAI;AACF,MAAAC,YAAW,QAAQ;AACnB,cAAQ,IAAIC,QAAM,OAAO,aAAa,QAAQ,aAAa,CAAC;AAC5D;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;AAKO,SAAS,YAAoB;AAClC,UAAQ,IAAIC,QAAM,MAAM,qBAAqB,CAAC;AAC9C,QAAM,MAAM,SAAS;AACrB,QAAM,gBAAgB,GAAG,GAAG;AAE5B,MAAI;AACF,UAAM,kBAAkB,kBAAkB;AAC1C,UAAM,WAAW,kBAAkB,aAAa;AAChD,UAAM,SAAS,kBAAkB,UAAU,eAAe;AAC1D,eAAW,eAAe,MAAM;AAChC,YAAQ,IAAIA,QAAM,MAAM,2BAA2B,CAAC;AAEpD,UAAM,UAAU,wBAAwB,GAAG;AAC3C,QAAI,UAAU,GAAG;AACf,cAAQ,IAAIA,QAAM,MAAM,aAAa,OAAO,6BAA6B,CAAC;AAAA,IAC5E;AAEA,WAAO;AAAA,EACT,SAAS,IAAI;AACX,UAAM,QAAQ;AACd,YAAQ,MAAMA,QAAM,IAAI,+BAA+B,MAAM,OAAO,EAAE,CAAC;AACvE,WAAO;AAAA,EACT;AACF;;;ACzHA,OAAOC,aAAW;AAClB,OAAO,oBAAoB;AAEpB,IAAM,UAAU,MAAM;AAC3B,UAAQ,IAAI;AAAA,iBAAoB,QAAQ,IAAI,CAAC;AAAA,CAAK;AAClD,MAAI,QAAQ;AACZ,MAAI,WAAW;AACf,QAAM,SAAS;AACf,QAAM,YAAY,eAAe,KAAK;AAEtC,QAAM,OAAO,CAAC,YAAoB;AAChC,YAAQ,KAAKA,QAAM,OAAO,YAAY,OAAO,EAAE,CAAC;AAChD;AAAA,EACF;AAEA,MAAI,UAAU,KAAK,YAAY;AAC7B,SAAK,gFAAgF;AAAA,EACvF,OAAO;AACL;AAAA,EACF;AAEA,MAAI,UAAU,KAAK,aAAa,OAAO;AACrC;AAAA,EACF,OAAO;AACL,SAAK,8EAA8E;AAAA,EACrF;AAEA,MAAI,UAAU,KAAK,QAAQ,MAAM;AAC/B;AAAA,EACF,OAAO;AACL,SAAK,wEAAwE;AAAA,EAC/E;AAEA,QAAM,iBAA2B,CAAC;AAClC,MAAI,QAAQ,GAAG;AACb,mBAAe,KAAKA,QAAM,MAAM,WAAW,KAAK,EAAE,CAAC;AAAA,EACrD;AACA,MAAI,WAAW,GAAG;AAChB,mBAAe,KAAKA,QAAM,OAAO,aAAa,QAAQ,EAAE,CAAC;AAAA,EAC3D;AACA,MAAI,SAAS,GAAG;AACd,mBAAe,KAAKA,QAAM,IAAI,YAAY,MAAM,EAAE,CAAC;AAAA,EACrD;AACA,UAAQ,KAAK,oBAAoB,eAAe,KAAK,KAAK,CAAC;AAAA,CAAM;AACjE,SAAO,WAAW,WAAW,IAAI,IAAI;AACvC;;;AC7CA,SAAS,gBAAgB;AAEzB,OAAOC,aAAW;AAClB,OAAOC,qBAAoB;AAEpB,IAAM,aAAa,MAAM;AAC9B,UAAQ,IAAI;AAAA,qBAAwB,QAAQ,IAAI,CAAC;AAAA,CAAK;AAEtD,QAAM,YAAYA,gBAAe,KAAK;AAEtC,MAAI,UAAU,KAAK,YAAY;AAC7B,aAAS,oCAAoC,EAAE,OAAO,UAAU,CAAC;AACjE,YAAQ,KAAKD,QAAM,OAAO,sDAAsD,CAAC;AAAA,EACnF;AAEA,MAAI,UAAU,KAAK,aAAa,OAAO;AACrC,aAAS,kCAAkC,EAAE,OAAO,UAAU,CAAC;AAC/D,YAAQ,KAAKA,QAAM,OAAO,oDAAoD,CAAC;AAAA,EACjF;AAEA,MAAI,UAAU,KAAK,QAAQ,MAAM;AAC/B,aAAS,0BAA0B,EAAE,OAAO,UAAU,CAAC;AACvD,YAAQ,KAAKA,QAAM,OAAO,8CAA8C,CAAC;AAAA,EAC3E;AAEA,SAAO;AACT;;;AC1BA,OAAOE,aAAW;AAClB,SAAS,YAAY;AAId,IAAM,UAAU,OAAO,QAAiB;AAC7C,QAAM,aAAa,kBAAkB,EAAE,eAAe;AACtD,QAAM,gBAAgB,WAAW,OAAO,CAAC,EAAE,KAAK,MAAM;AACpD,WAAO,QAAQ,UAAa,SAAS;AAAA,EACvC,CAAC;AAED,QAAM,UAAU,oBAAI,IAAI;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,UAAQ,IAAIC,QAAM,MAAM,iBAAiB,CAAC;AAE1C,UAEI,MAAM,QAAQ;AAAA,IACZ,cAAc,IAAI,CAAC,EAAE,UAAU,KAAK,MAAM;AACxC,aAAO,IAAI,QAAgB,CAAC,YAAY;AACtC,aAAK,EAAE,YAAY,MAAM,OAAO,SAAS,GAAG,CAAC,OAAO,aAAa;AAC/D,cAAI,OAAO;AACT,oBAAQ,MAAMA,QAAM,IAAI,oBAAoB,IAAI,SAAS,CAAC;AAC1D,oBAAQ,MAAMA,QAAM,KAAK,KAAK,CAAC;AAC/B,oBAAQ,IAAI,IAAI;AAChB,oBAAQ,CAAC;AAAA,UACX,OAAO;AACL,oBAAQ,IAAIA,QAAM,MAAM,oBAAoB,IAAI,GAAG,CAAC;AACpD,gBAAI,QAAQ;AACZ,uBAAW,CAACC,OAAM,IAAI,KAAK,OAAO,QAAQ,QAAQ,GAAG;AACnD,oBAAM,WAAW,MAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK,WAAW,CAAC,KAAK,QAAQ;AAC9E,yBAAWC,YAAW,UAAU;AAC9B,oBAAIA,UAAS;AAEX,wBAAM,mBAAoBA,SAAQ,WAAW,GAAG,KAAKA,SAAQ,GAAG,EAAE,MAAM,MACpEA,SAAQ,MAAM,GAAG,EAAE,IACnBA;AAEJ,wBAAM,aAAa,iBAAiB,MAAM,MAAM;AAChD,sBAAI,iBAAiB;AACrB,6BAAW,aAAa,YAAY;AAClC,wBAAI,QAAQ,IAAI,SAAS,GAAG;AAC1B,uCAAiB;AAAA,oBACnB;AAAA,kBACF;AACA,sBAAI,CAAC,gBAAgB;AACnB;AACA,4BAAQ,KAAKF,QAAM,OAAO,GAAGC,KAAI,kCAAkCC,QAAO,GAAG,CAAC;AAAA,kBAChF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,oBAAQ,IAAI,IAAI;AAChB,oBAAQ,KAAK;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,GAGC,OAAO,CAAC,MAAM,UAAU,QAAQ,OAAO,CAAC;AAE/C;;;AChFA;AAAA,EACE,cAAAC;AAAA,EAAY,gBAAAC;AAAA,EAAc,cAAAC;AAAA,EAAY,iBAAAC;AAAA,OACjC;AACP,OAAOC,YAAU;AACjB,SAAS,mBAAAC,wBAAuB;AAEhC,OAAOC,aAAW;AAClB,SAAS,gBAAgB;AAyKlB,SAAS,sBAAsB,KAAa,SAA4B;AAC7E,QAAM,mBAAmB,SAAS,4BAA4B;AAAA,IAC5D;AAAA,IACA,QAAQ,CAAC,oBAAoB;AAAA,EAC/B,CAAC;AAED,aAAW,WAAW,kBAAkB;AACtC,UAAM,WAAWC,OAAK,QAAQ,KAAK,OAAO;AAC1C,QAAI;AACF,YAAM,UAAUC,eAAa,UAAU,MAAM;AAC7C,YAAM,MAAM,KAAK,MAAM,OAAO;AAI9B,YAAM,OAAO,IAAI;AACjB,YAAM,WAAW,IAAI;AACrB,UAAI,MAAM,SAAS,UAAU,OAAO;AAClC,YAAI,QAAS,SAAQ,IAAIC,QAAM,KAAK,uBAAuB,OAAO,EAAE,CAAC;AACrE,eAAO;AAAA,MACT;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;;;ACzMA,SAAS,aAAAC,kBAAiB;AAC1B;AAAA,EACE,cAAAC;AAAA,EAAY,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OACrB;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAClB,SAAS,cAAc;AAyBvB,SAAS,eAAe,OAAuC;AAC7D,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,OAAO,MAAM;AAAA,EACxB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,OAAO,OAAO,KAAK,EAAE;AAAA,EAChC;AACA,MAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GAAG;AAC5C,WAAO;AAAA,MACL,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,MACtB,SAAS,MAAM,SAAS,IAAI,MAAM,MAAM,CAAC,IAAI;AAAA,IAC/C;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAuB;AAC7C,MAAI,UAAU,OAAO,UAAU,MAAO,QAAO;AAC7C,MAAI,UAAU,OAAO,UAAU,OAAQ,QAAO;AAC9C,MAAI,UAAU,OAAO,UAAU,QAAS,QAAO;AAC/C,SAAO;AACT;AAEA,SAAS,WAAW,GAAc,GAAuB;AACvD,MAAI,eAAe,EAAE,KAAK,MAAM,eAAe,EAAE,KAAK,EAAG,QAAO;AAChE,SAAO,KAAK,UAAU,EAAE,OAAO,MAAM,KAAK,UAAU,EAAE,OAAO;AAC/D;AAEA,SAAS,WAAW,OAA0B;AAC5C,MAAI,MAAM,SAAS;AACjB,WAAO,KAAK,UAAU,CAAC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;AAAA,EACvD;AACA,SAAO,KAAK,UAAU,CAAC,MAAM,KAAK,CAAC;AACrC;AAEA,SAAS,qBAAqB,QAA+C;AAC3E,QAAM,SAAS,oBAAI,IAAuB;AAC1C,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,MAAM,MAAO;AAClB,eAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AACvD,YAAM,SAAS,eAAe,KAAK;AACnC,UAAI,OAAQ,QAAO,IAAI,MAAM,MAAM;AAAA,IACrC;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,QAAoC;AAC/D,MAAI,OAAO,SAAS,kCAAkC,EAAG,QAAO;AAChE,MAAI,OAAO,SAAS,4BAA4B,EAAG,QAAO;AAC1D,SAAO;AACT;AAEA,SAAS,uBAAuB,QAA0B;AACxD,QAAM,SAAmB,CAAC;AAC1B,QAAM,iBAAiB;AACvB,MAAI;AACJ,UAAQ,QAAQ,eAAe,KAAK,MAAM,OAAO,MAAM;AACrD,WAAO,KAAK,MAAM,CAAC,CAAC;AAAA,EACtB;AACA,SAAO;AACT;AAEA,SAAS,6BAA6B,QAAuC;AAC3E,QAAM,QAAQ,oBAAI,IAAoB;AACtC,aAAW,SAAS,QAAQ;AAC1B,UAAM,YAAY;AAClB,QAAI;AACJ,YAAQ,QAAQ,UAAU,KAAK,KAAK,OAAO,MAAM;AAC/C,YAAM,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,cAAsD;AACjF,QAAMC,UAAS,aAAa,UAAU,aAAa;AACnD,MAAI,MAAM,QAAQA,OAAM,EAAG,QAAOA;AAClC,SAAO,CAAC;AACV;AAEA,eAAe,oBAAoB,WAAmB,WAA2C;AAC/F,MAAI;AACF,UAAM,eAAe,MAAM,OAAO;AAClC,WAAO,oBAAoB,YAAY;AAAA,EACzC,QAAQ;AACN,UAAM,WAAWC,OAAK,QAAQ,WAAW,gBAAgB,WAAW,QAAQ,QAAQ,WAAW;AAC/F,QAAI;AACF,YAAM,eAAe,MAAM,OAAO;AAClC,aAAO,oBAAoB,YAAY;AAAA,IACzC,QAAQ;AACN,YAAM,cAAcA,OAAK,QAAQ,WAAW,gBAAgB,WAAW,QAAQ,WAAW,WAAW;AACrG,YAAM,eAAe,MAAM,OAAO;AAClC,aAAO,oBAAoB,YAAY;AAAA,IACzC;AACA,WAAO,CAAC;AAAA,EACV;AACF;AAEA,eAAe,gBAAgB,WAAmB,WAAmB,SAA+D;AAClI,QAAM,eAAe,MAAM,oBAAoB,WAAW,SAAS;AACnE,QAAM,cAAc,qBAAqB,YAAY;AAErD,MAAI,SAAS;AACX,YAAQ,IAAIC,QAAM,KAAK,yBAAyB,YAAY,IAAI,QAAQ,CAAC;AAAA,EAC3E;AAEA,MAAI,YAAY,SAAS,GAAG;AAC1B,YAAQ,MAAMA,QAAM,IAAI,qEAAqE,CAAC;AAC9F,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,eAAe,eAAe,kBAA0B,QAAgB,SAAgG;AACtK,QAAM,cAAc,MAAM,OAAO;AACjC,QAAM,cAAc,YAAY,WAAW;AAC3C,QAAM,cAA6B,MAAM,QAAQ,WAAW,IAAI,cAA+B,CAAC,WAA0B;AAC1H,QAAM,WAAW,qBAAqB,WAAW;AAEjD,QAAM,kBAAkB,uBAAuB,MAAM;AACrD,QAAM,WAAW,6BAA6B,eAAe;AAE7D,MAAI,SAAS;AACX,YAAQ,IAAIA,QAAM,KAAK,oBAAoB,SAAS,IAAI,2BAA2B,CAAC;AAAA,EACtF;AAEA,SAAO,EAAE,UAAU,SAAS;AAC9B;AAEA,SAAS,aACP,mBACA,kBACA,aACgB;AAChB,QAAM,YAAyC,CAAC;AAChD,QAAM,YAAyC,CAAC;AAChD,QAAM,YAAyC,CAAC;AAEhD,aAAW,YAAY,kBAAkB,KAAK,GAAG;AAC/C,UAAM,gBAAgB,iBAAiB,IAAI,QAAQ;AACnD,UAAM,cAAc,YAAY,IAAI,QAAQ;AAE5C,QAAI,CAAC,cAAe;AAEpB,QAAI,CAAC,aAAa;AAChB,gBAAU,KAAK,EAAE,OAAO,eAAe,MAAM,SAAS,CAAC;AAAA,IACzD,WAAW,WAAW,eAAe,WAAW,GAAG;AACjD,gBAAU,KAAK;AAAA,QACb,OAAO;AAAA,QAAe,MAAM;AAAA,QAAU,QAAQ;AAAA,MAChD,CAAC;AAAA,IACH,OAAO;AACL,gBAAU,KAAK;AAAA,QACb,OAAO;AAAA,QAAe,MAAM;AAAA,QAAU,QAAQ;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EAAW;AAAA,EAAW;AACxB,GAAmB,SAAwB;AACzC,MAAI,UAAU,SAAS,GAAG;AACxB,YAAQ,IAAIA,QAAM,OAAO;AAAA,EAAK,UAAU,MAAM,mEAA8D,CAAC;AAC7G,eAAW,EAAE,MAAM,MAAM,KAAK,WAAW;AACvC,cAAQ,IAAIA,QAAM,OAAO,KAAK,IAAI,KAAK,WAAW,KAAK,CAAC,EAAE,CAAC;AAAA,IAC7D;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,GAAG;AACxB,YAAQ,IAAIA,QAAM,KAAK;AAAA,EAAK,UAAU,MAAM,mDAAmD,CAAC;AAChG,eAAW;AAAA,MACT;AAAA,MAAM;AAAA,MAAO;AAAA,IACf,KAAK,WAAW;AACd,cAAQ,IAAIA,QAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AACpC,cAAQ,IAAIA,QAAM,KAAK,eAAe,WAAW,MAAM,CAAC,EAAE,CAAC;AAC3D,cAAQ,IAAIA,QAAM,MAAM,eAAe,WAAW,KAAK,CAAC,EAAE,CAAC;AAAA,IAC7D;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,KAAK,SAAS;AACnC,YAAQ,IAAIA,QAAM,KAAK;AAAA,EAAK,UAAU,MAAM,4CAA4C,CAAC;AACzF,eAAW,EAAE,MAAM,MAAM,KAAK,WAAW;AACvC,cAAQ,IAAIA,QAAM,KAAK,KAAK,IAAI,KAAK,WAAW,KAAK,CAAC,EAAE,CAAC;AAAA,IAC3D;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,KAAK,UAAU,WAAW,GAAG;AACpD,YAAQ,IAAIA,QAAM,MAAM,wCAAwC,CAAC;AAAA,EACnE;AACF;AAEA,SAAS,kBAAkB,kBAA0B,WAA8C;AACjG,MAAI,UAAUC,eAAa,kBAAkB,MAAM;AACnD,QAAM,WAAW;AACjB,aAAW,EAAE,KAAK,KAAK,WAAW;AAChC,UAAM,UAAU,KAAK,WAAW,KAAK,OAAO,OAAO;AACnD,UAAM,UAAU,IAAI,OAAO,OAAO,gBAAgB,OAAO,oCAAoC,GAAG;AAChG,cAAU,QAAQ,QAAQ,SAAS,EAAE;AAAA,EACvC;AAEA,YAAU,QAAQ,WAAW,4CAA4C,EAAE;AAC3E,YAAU,QAAQ,WAAW,WAAW,MAAM;AAE9C,MAAI,YAAY,UAAU;AACxB,IAAAC,eAAc,kBAAkB,SAAS,MAAM;AAC/C,YAAQ,IAAIF,QAAM,MAAM;AAAA,iBAAoB,UAAU,MAAM,oBAAoB,CAAC;AAAA,EACnF;AACF;AAEA,SAAS,iBAAiB,kBAAgC;AACxD,EAAAG,WAAU,UAAU,CAAC,SAAS,gBAAgB,GAAG,EAAE,OAAO,UAAU,CAAC;AACvE;AAEA,SAAS,kBACP,kBACA,WACA,QACA,WACA,aACM;AACN,QAAM,UAAU,OAAO,WAAW,WAAW,WAAW;AACxD,EAAAD,eAAc,kBAAkB,SAAS,MAAM;AAC/C,UAAQ,IAAIF,QAAM,MAAM,mBAAmB,SAAS,SAAS,WAAW,EAAE,CAAC;AAE3E,QAAM,kBAAkBD,OAAK,QAAQ,WAAW,cAAc;AAC9D,MAAI,CAACK,aAAW,eAAe,EAAG;AAElC,QAAM,UAAUH,eAAa,iBAAiB,MAAM;AACpD,QAAM,MAAM,KAAK,MAAM,OAAO;AAC9B,QAAM,UAAW,IAAI,mBAAmB,CAAC;AACzC,QAAM,aAAa,QAAQ,SAAS;AACpC,MAAI,CAAC,WAAY;AAEjB,SAAO,QAAQ,SAAS;AACxB,UAAQ,WAAW,IAAI;AACvB,QAAM,SAAS,OAAO,YAAY,OAAO,QAAQ,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AACpG,MAAI,kBAAkB;AACtB,EAAAC,eAAc,iBAAiB,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAC1E,UAAQ,IAAIF,QAAM,MAAM,yBAAyB,SAAS,WAAM,WAAW,EAAE,CAAC;AAC9E,aAAW,SAAS;AACtB;AAEA,SAAS,mBACP,kBACA,WACA,QACA,WACA,KACA,SACS;AACT,QAAM,WAAW,sBAAsB,WAAW,OAAO;AACzD,QAAM,cAAc,WAAW,qCAAqC;AAEpE,MAAI,cAAc,YAAa,QAAO;AAEtC,UAAQ,IAAIA,QAAM,OAAO;AAAA,yBAA4B,SAAS,QAAQ,WAAW,4BAA4B,yBAAyB,EAAE,CAAC;AACzI,UAAQ,IAAIA,QAAM,OAAO,eAAe,WAAW,EAAE,CAAC;AAEtD,MAAI,KAAK;AACP,sBAAkB,kBAAkB,WAAW,QAAQ,WAAW,WAAW;AAAA,EAC/E;AAEA,SAAO;AACT;AAEA,eAAsB,SAAS,EAAE,KAAK,QAAQ,IAAoB,CAAC,GAAoB;AACrF,QAAM,mBAAmB,MAAM,OAAO,CAAC,oBAAoB,mBAAmB,CAAC;AAC/E,MAAI,CAAC,kBAAkB;AACrB,YAAQ,MAAMA,QAAM,IAAI,2BAA2B,CAAC;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,YAAYD,OAAK,QAAQ,gBAAgB;AAE/C,MAAI,SAAS;AACX,YAAQ,IAAIC,QAAM,KAAK,iBAAiB,gBAAgB,EAAE,CAAC;AAAA,EAC7D;AAEA,QAAM,SAASC,eAAa,kBAAkB,MAAM;AACpD,QAAM,YAAY,oBAAoB,MAAM;AAE5C,MAAI,CAAC,WAAW;AACd,YAAQ,IAAID,QAAM,OAAO,iFAAiF,CAAC;AAC3G,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AACX,YAAQ,IAAIA,QAAM,KAAK,mBAAmB,SAAS,EAAE,CAAC;AAAA,EACxD;AAEA,QAAM,cAAc,mBAAmB,kBAAkB,WAAW,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO;AAGvG,QAAM,gBAAiB,eAAe,MAAOC,eAAa,kBAAkB,MAAM,IAAI;AAEtF,QAAM,cAAc,MAAM,gBAAgB,WAAW,WAAW,CAAC,CAAC,OAAO;AACzE,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,EAAE,UAAU,SAAS,IAAI,MAAM,eAAe,kBAAkB,eAAe,CAAC,CAAC,OAAO;AAC9F,QAAM,UAAU,aAAa,UAAU,UAAU,WAAW;AAE5D,gBAAc,SAAS,CAAC,CAAC,OAAO;AAEhC,MAAI,QAAQ,UAAU,SAAS,KAAK,KAAK;AACvC,sBAAkB,kBAAkB,QAAQ,SAAS;AAAA,EACvD;AAEA,QAAM,SAAS,QAAQ,eAAe,QAAQ,UAAU,SAAS;AACjE,MAAI,QAAQ;AACV,qBAAiB,gBAAgB;AAAA,EACnC;AAEA,QAAM,qBAAqB,eAAe,CAAC;AAC3C,QAAM,sBAAsB,QAAQ,UAAU,SAAS,KAAK,CAAC;AAC7D,SAAO,sBAAsB,sBAAsB,IAAI;AACzD;;;ACjWA,IAAM,WAAW;AAEV,IAAM,eAAe,CAAC,QAAiB,oBAAoB,UAAU,GAAG;;;ACJ/E,OAAOI,SAAQ;AACf,OAAOC,WAAU;AAEjB,OAAOC,aAAW;AAClB,SAAS,QAAAC,aAAY;AASrB,SAAS,sBAAsB,KAAa,oBAA0C;AACpF,QAAM,aAAa,IAAI,SAASC,MAAK,GAAG,IAAI,MAAM,MAAMA,MAAK;AAC7D,aAAW,MAAM,oBAAoB;AACnC,QAAI,GAAG,WAAW,UAAU,EAAG,QAAO;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,YAAY,KAAa,SAA6B;AAC7D,QAAM,KAAK,kBAAkB;AAC7B,QAAM,aAAa,GAAG,eAAe;AACrC,QAAM,qBAAqB,IAAI;AAAA,IAC7B,WAAW,IAAI,QAAMA,MAAK,QAAQ,KAAK,GAAG,QAAQ,CAAC;AAAA,EACrD;AAGA,QAAM,WAAWC,MAAK,KAAK,WAAW;AAAA,IACpC;AAAA,IACA,QAAQ,CAAC,oBAAoB;AAAA,EAC/B,CAAC;AAED,QAAM,UAAU,oBAAI,IAAY;AAEhC,aAAW,WAAW,UAAU;AAC9B,UAAM,YAAYD,MAAK,QAAQ,OAAO;AACtC,UAAM,YAAYA,MAAK,QAAQ,KAAK,SAAS;AAG7C,QAAI,cAAc,IAAK;AAGvB,QAAI,mBAAmB,IAAI,SAAS,EAAG;AAGvC,QAAIE,IAAG,WAAWF,MAAK,KAAK,WAAW,cAAc,CAAC,EAAG;AAEzD,QAAI,SAAS;AACX,cAAQ,IAAIG,QAAM,KAAK,mBAAmB,SAAS,EAAE,CAAC;AAAA,IACxD;AAIA,QAAI,YAAY;AAChB,QAAI,UAAUH,MAAK,QAAQ,SAAS;AACpC,WAAO,YAAY,KAAK;AACtB,YAAM,aAAaA,MAAK,QAAQ,KAAK,OAAO;AAC5C,UAAI,mBAAmB,IAAI,UAAU,EAAG;AACxC,UAAIE,IAAG,WAAWF,MAAK,KAAK,YAAY,cAAc,CAAC,EAAG;AAC1D,UAAI,sBAAsB,YAAY,kBAAkB,EAAG;AAC3D,kBAAY;AACZ,gBAAUA,MAAK,QAAQ,OAAO;AAAA,IAChC;AAEA,YAAQ,IAAI,SAAS;AAAA,EACvB;AAEA,SAAO,CAAC,GAAG,OAAO,EAAE,SAAS;AAC/B;AAEO,SAAS,WAAW,EAAE,QAAQ,IAAkB,CAAC,GAAW;AACjE,QAAM,MAAM,SAAS;AACrB,UAAQ,IAAIG,QAAM,MAAM,aAAa,CAAC;AAEtC,QAAM,UAAU,YAAY,KAAK,OAAO;AAExC,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,IAAIA,QAAM,MAAM,iCAAiC,CAAC;AAC1D,WAAO;AAAA,EACT;AAEA,aAAW,UAAU,SAAS;AAC5B,YAAQ,IAAIA,QAAM,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,EACzC;AAEA,UAAQ,IAAIA,QAAM,OAAO;AAAA,UAAa,QAAQ,MAAM,qBAAqB,QAAQ,WAAW,IAAI,MAAM,KAAK,EAAE,CAAC;AAC9G,SAAO;AACT;AAEO,SAAS,YAAY,EAAE,QAAQ,IAAkB,CAAC,GAAW;AAClE,QAAM,MAAM,SAAS;AACrB,UAAQ,IAAIA,QAAM,MAAM,cAAc,CAAC;AAEvC,QAAM,UAAU,YAAY,KAAK,OAAO;AAExC,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,IAAIA,QAAM,MAAM,iCAAiC,CAAC;AAC1D,WAAO;AAAA,EACT;AAEA,aAAW,UAAU,SAAS;AAC5B,UAAM,UAAUH,MAAK,QAAQ,KAAK,MAAM;AACxC,IAAAE,IAAG,OAAO,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AACnD,YAAQ,IAAIC,QAAM,OAAO,aAAa,MAAM,EAAE,CAAC;AAAA,EACjD;AAEA,UAAQ,IAAIA,QAAM,MAAM;AAAA,YAAe,QAAQ,MAAM,qBAAqB,QAAQ,WAAW,IAAI,MAAM,KAAK,EAAE,CAAC;AAC/G,SAAO;AACT;;;ACVO,IAAM,qBAAyC;AAAA,EACpD;AAAA,EAAS;AAAA,EAAmB;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAY;AAAA,EAAW;AAAA,EAAe;AAAA,EAAc;AAAA,EAAa;AAAA,EAAe;AAAA,EAAU;AAC1I;AAGO,IAAM,sBAA0C;AAAA,EACrD;AAAA,EAAS;AAAA,EAAmB;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAW;AAAA,EAAc;AAAA,EAAa;AAAA,EAAe;AAAA,EAAU;AAC/G;;;AC3GA,SAAS,YAAYC,WAAU;AAC/B,OAAOC,WAAU;AAEjB,OAAOC,aAAW;AAClB,SAAS,QAAAC,aAAY;AACrB,OAAO,qBAAqB;AAiB5B,IAAM,0BAA0B,CAAC,YAA8C;AAC7E,MAAI,UAAU;AACd,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,QAAQ,UAAU;AACpB,aAAO,QAAQ,GAAG;AAClB,gBAAU;AAAA,IACZ,WAAW,OAAO,UAAU,YAAY,UAAU,QAAQ,wBAAwB,KAAgC,EAAG,WAAU;AAAA,EACjI;AACA,SAAO;AACT;AAEA,IAAM,qBAAqB,CAAC,YAA8C;AACxE,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,QAAQ,SAAU,QAAO;AAC7B,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,mBAAmB,KAAgC,EAAG,QAAO;AAAA,EAClH;AACA,SAAO;AACT;AAEA,IAAM,wBAAwB,CAAC,YAA8C;AAC3E,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,QAAQ,YAAY,OAAO,UAAU,YAAY,MAAM,SAAS,MAAM,EAAG,QAAO;AACpF,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,sBAAsB,KAAgC,EAAG,QAAO;AAAA,EACrH;AACA,SAAO;AACT;AAEA,IAAM,2BAA2B,CAAC,YAA8C;AAC9E,MAAI,WAAW;AACf,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,QAAQ,YAAY,OAAO,UAAU,YAAY,MAAM,SAAS,MAAM,GAAG;AAC3E,UAAI,QAAQ,YAAY,QAAW;AACjC,gBAAQ,UAAU;AAAA,MACpB;AACA,aAAO,QAAQ;AACf,UAAI,QAAQ,UAAU,QAAW;AAC/B,gBAAQ,QAAQ,MAAM,QAAQ,UAAU,OAAO;AAAA,MACjD;AACA,iBAAW;AAAA,IACb,WAAW,OAAO,UAAU,YAAY,UAAU,QAAQ,yBAAyB,KAAgC,EAAG,YAAW;AAAA,EACnI;AACA,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,YAA8C;AACvE,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,QAAQ,QAAS,QAAO;AAC5B,QAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,kBAAkB,KAAgC,EAAG,QAAO;AAAA,EACjH;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,OAAuB;AAChD,MAAI,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,KAAK,EAAG,QAAO;AAC9D,SAAO,KAAK,KAAK;AACnB;AAQA,SAAS,oBAAsC;AAC7C,SAAO;AAAA,IACL,QAAQ;AAAA,IAAG,UAAU;AAAA,IAAO,UAAU;AAAA,EACxC;AACF;AAEA,SAAS,aAAa,QAA0B,QAAgC;AAC9E,SAAO,UAAU,OAAO;AACxB,SAAO,YAAY,OAAO;AAC1B,SAAO,WAAW,OAAO,YAAY,OAAO;AAC9C;AAEA,SAAS,WAAW,KAA8B,KAAgC;AAChF,QAAM,SAAS,kBAAkB;AACjC,QAAM,QAAQ,IAAI;AAClB,MAAI,UAAU,QAAW;AACvB,YAAQ,KAAKC,QAAM,OAAO,4CAA4C,CAAC;AACvE,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,SAAS,WAAW,GAAG;AACxD,UAAM,KAAK,WAAW;AACtB,YAAQ,KAAKA,QAAM,OAAO,gDAAgD,CAAC;AAC3E,WAAO,WAAW;AAClB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAK,GAAG;AACjD,QAAI,KAAK;AACP,UAAI,QAAQ,MAAM,OAAO,CAAC,MAAc,MAAM,KAAK;AACnD,cAAQ,KAAKA,QAAM,OAAO,8CAA8C,CAAC;AACzE,aAAO,WAAW;AAAA,IACpB,OAAO;AACL,cAAQ,KAAKA,QAAM,OAAO,wEAAwE,CAAC;AAAA,IACrG;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,KAA8B,KAAgC;AACxF,QAAM,SAAS,kBAAkB;AACjC,QAAM,UAAU,IAAI;AACpB,MAAI,WAAW,OAAO,YAAY,YAAY,mBAAmB,OAAO,GAAG;AACzE,QAAI,KAAK;AACP,8BAAwB,OAAO;AAC/B,cAAQ,KAAKA,QAAM,OAAO,2DAA2D,CAAC;AACtF,aAAO,WAAW;AAAA,IACpB,OAAO;AACL,cAAQ,KAAKA,QAAM,OAAO,qFAAqF,CAAC;AAAA,IAClH;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,sBACP,KACA,OACA,WACA,KACkB;AAClB,QAAM,SAAS,kBAAkB;AACjC,MAAI,IAAI,KAAK,MAAM,OAAW,QAAO;AAGrC,QAAM,aAAa,IAAI,KAAK;AAC5B,MAAI,CAAC,WAAW,SAAS,KAAK,KAAK,CAAC,WAAW,SAAS,MAAM,KAAK,CAAC,WAAW,SAAS,MAAM,EAAG,QAAO;AAExG,MAAI,KAAK;AACP,UAAM,cAAc,kBAAkB,UAAU;AAChD,UAAM,UAAU,IAAI;AACpB,QAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,YAAM,MAAM,QAAQ,GAAG;AACvB,UAAI,OAAO,OAAO,QAAQ,YAAY,CAAE,IAAgC,SAAS,GAAG;AAClF,QAAC,IAAgC,SAAS,IAAI;AAC9C,gBAAQ,KAAKA,QAAM,OAAO,+BAA+B,KAAK,sBAAsB,SAAS,MAAM,UAAU,GAAG,CAAC;AAAA,MACnH;AAAA,IACF,WAAW,CAAC,IAAI,SAAS;AACvB,UAAI,UAAU,EAAE,KAAK,EAAE,CAAC,SAAS,GAAG,YAAY,EAAE;AAClD,cAAQ,KAAKA,QAAM,OAAO,+BAA+B,KAAK,0BAAqB,UAAU,GAAG,CAAC;AAAA,IACnG;AACA,WAAO,IAAI,KAAK;AAChB,YAAQ,KAAKA,QAAM,OAAO,yCAAyC,KAAK,SAAS,CAAC;AAClF,WAAO,WAAW;AAAA,EACpB,OAAO;AACL,YAAQ,KAAKA,QAAM,OAAO,sBAAsB,KAAK,oEAAoE,CAAC;AAAA,EAC5H;AACA,SAAO;AACP,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAgD;AACxE,QAAM,SAAS,kBAAkB;AACjC,MAAI,IAAI,gBAAgB,OAAO;AAC7B,YAAQ,KAAKA,QAAM,OAAO,8DAA8D,CAAC;AACzF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,KAA8B,KAAgC;AACrF,QAAM,SAAS,kBAAkB;AACjC,aAAW,SAAS,CAAC,UAAU,KAAK,GAAG;AACrC,QAAI,IAAI,KAAK,MAAM,QAAW;AAC5B,UAAI,KAAK;AACP,eAAO,IAAI,KAAK;AAChB,gBAAQ,KAAKA,QAAM,OAAO,yCAAyC,KAAK,SAAS,CAAC;AAClF,eAAO,WAAW;AAAA,MACpB,OAAO;AACL,gBAAQ,KAAKA,QAAM,OAAO,iCAAiC,KAAK,6DAA6D,CAAC;AAAA,MAChI;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAgD;AACxE,QAAM,SAAS,kBAAkB;AACjC,MAAI,IAAI,gBAAgB,QAAW;AACjC,YAAQ,KAAKA,QAAM,OAAO,wCAAwC,CAAC;AACnE,YAAQ,KAAKA,QAAM,KAAK,KAAK,UAAU,IAAI,aAAa,MAAM,CAAC,CAAC,CAAC;AACjE,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,KAA8B,KAAgC;AAC1F,QAAM,SAAS,kBAAkB;AACjC,QAAM,UAAU,IAAI;AACpB,MAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,MAAI,CAAC,sBAAsB,OAAO,EAAG,QAAO;AAE5C,MAAI,KAAK;AACP,6BAAyB,OAAO;AAChC,YAAQ,KAAKA,QAAM,OAAO,2FAA2F,CAAC;AACtH,WAAO,WAAW;AAAA,EACpB,OAAO;AACL,YAAQ,KAAKA,QAAM,OAAO,oGAAoG,CAAC;AAAA,EACjI;AACA,SAAO;AACP,SAAO;AACT;AAEA,SAAS,eAAe,KAA8B,KAAgC;AACpF,QAAM,SAAS,kBAAkB;AACjC,MAAI,IAAI,UAAU,OAAW,QAAO;AACpC,QAAM,UAAU,IAAI;AACpB,MAAI,CAAC,WAAW,OAAO,YAAY,YAAY,CAAC,kBAAkB,OAAO,EAAG,QAAO;AAEnF,MAAI,KAAK;AACP,WAAO,IAAI;AACX,YAAQ,KAAKA,QAAM,OAAO,uFAAuF,CAAC;AAClH,WAAO,WAAW;AAAA,EACpB,OAAO;AACL,YAAQ,KAAKA,QAAM,OAAO,sGAAsG,CAAC;AAAA,EACnI;AACA,SAAO;AACP,SAAO;AACT;AAEA,SAAS,cACP,KACA,MAAM,OACN,UAAU,oBAAI,IAAsB,GACT;AAC3B,QAAM,SAAS,kBAAkB;AACjC,MAAI,CAAC,QAAQ,IAAI,OAAO,EAAG,cAAa,QAAQ,WAAW,KAAK,GAAG,CAAC;AACpE,MAAI,CAAC,QAAQ,IAAI,QAAQ,EAAG,cAAa,QAAQ,mBAAmB,KAAK,GAAG,CAAC;AAC7E,MAAI,CAAC,QAAQ,IAAI,YAAY,EAAG,cAAa,QAAQ,gBAAgB,KAAK,GAAG,CAAC;AAC9E,MAAI,CAAC,QAAQ,IAAI,MAAM,EAAG,cAAa,QAAQ,sBAAsB,KAAK,QAAQ,WAAW,GAAG,CAAC;AACjG,MAAI,CAAC,QAAQ,IAAI,OAAO,EAAG,cAAa,QAAQ,sBAAsB,KAAK,SAAS,SAAS,GAAG,CAAC;AACjG,MAAI,CAAC,QAAQ,IAAI,QAAQ,EAAG,cAAa,QAAQ,sBAAsB,KAAK,UAAU,WAAW,GAAG,CAAC;AACrG,MAAI,CAAC,QAAQ,IAAI,iBAAiB,EAAG,cAAa,QAAQ,qBAAqB,KAAK,GAAG,CAAC;AACxF,MAAI,CAAC,QAAQ,IAAI,WAAW,EAAG,cAAa,QAAQ,eAAe,KAAK,GAAG,CAAC;AAC5E,MAAI,CAAC,QAAQ,IAAI,aAAa,EAAG,cAAa,QAAQ,iBAAiB,GAAG,CAAC;AAC3E,MAAI,CAAC,QAAQ,IAAI,aAAa,EAAG,cAAa,QAAQ,iBAAiB,GAAG,CAAC;AAC3E,SAAO,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO,QAAQ;AACzD;AAGA,IAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOA,eAAe,iBAAiB,QAAgB,YAA4C;AAC1F,QAAM,WAAW,CAAC,GAAG,wBAAwB;AAC7C,MAAI,YAAY;AACd,eAAW,WAAW,YAAY;AAEhC,UAAI,QAAQ,WAAW,GAAG,GAAG;AAC3B,iBAAS,KAAK,OAAO;AAAA,MACvB,OAAO;AAEL,iBAAS,KAAK,SAAS,GAAG,OAAO,KAAK;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,MAAMC,MAAK,UAAU;AAAA,IACnC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,QAAM,QAAoB,MAAM,QAAQ;AAAA,IACtC,QAAQ,IAAI,OAAO,QAAQ;AACzB,YAAM,MAAMC,MAAK,KAAK,QAAQ,GAAG;AACjC,YAAM,OAAO,MAAMC,IAAG,SAAS,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE;AAG1D,aAAO,EAAE,MAAMD,MAAK,KAAK,QAAQ,GAAG,GAAG,KAAK;AAAA,IAC9C,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,eAAe,kBAAkB,QAAgB,KAA8B,QAAiB,MAA2D;AACzJ,QAAM,EAAE,SAAAE,SAAQ,IAAI,MAAM,OAAO,SAAS;AAE1C,MAAI,aAA4C;AAChD,MAAI,MAAM;AACR,UAAM,QAAQ,MAAM,iBAAiB,QAAQ,IAAI,KAA6B;AAC9E,iBAAa,EAAE,MAAM;AAAA,EACvB;AAEA,QAAM,EAAE,SAAS,IAAI,MAAMA,SAAQ;AAAA,IACjC,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,EAAE,cAAc,IAAI,MAAM,OAAO,eAAe;AAEtD,aAAW,WAAW,UAAU;AAC9B,YAAQ,QAAQ,MAAM;AAAA,MACpB,KAAK,SAAS;AACZ,gBAAQ,MAAMJ,QAAM,IAAI,IAAI,QAAQ,IAAI,KAAK,cAAc,SAAS,GAAG,CAAC,EAAE,CAAC;AAC3E;AAAA,MACF;AAAA,MACA,KAAK,WAAW;AACd,gBAAQ,KAAKA,QAAM,OAAO,IAAI,QAAQ,IAAI,KAAK,cAAc,SAAS,GAAG,CAAC,EAAE,CAAC;AAC7E;AAAA,MACF;AAAA,MACA,SAAS;AACP,gBAAQ,IAAIA,QAAM,MAAM,IAAI,QAAQ,IAAI,KAAK,cAAc,SAAS,GAAG,CAAC,EAAE,CAAC;AAC3E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ,SAAS,OAAO,aAAW,QAAQ,SAAS,OAAO,EAAE;AAAA,IAC7D,OAAO,SAAS;AAAA,EAClB;AACF;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC,UAAU,oBAAI,IAAI;AAAA,EAAG,MAAM;AAAA,EAAO,OAAO;AAAA,EAAM,QAAQ;AAAA,EAAa,SAAS;AAAA,EAAM,SAAS,WAAW;AACzG,IAA0B,CAAC,MAAuB;AAChD,QAAM,SAAS,eAAe,SAAS;AAEvC,QAAM,YAAY,gBAAgB,MAAMG,IAAG,SAAS,GAAG,MAAM,iBAAiB,MAAM,CAAC;AACrF,QAAMA,IAAG,UAAU,GAAG,MAAM,iBAAiB,SAAS;AAEtD,QAAM,MAAM,KAAK,MAAM,MAAMA,IAAG,SAAS,GAAG,MAAM,iBAAiB,MAAM,CAAC;AAE1E,QAAM,mBAAmB,IAAI,UACzB,oBAAI,IAAI,CAAC,GAAG,SAAS,GAAG,mBAAmB,CAAC,IAC5C;AAEJ,UAAQ,IAAIH,QAAM,MAAM,YAAY,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,UAAUA,QAAM,KAAK,YAAY,IAAI,EAAE,EAAE,CAAC;AACrG,UAAQ,IAAIA,QAAM,KAAK,MAAM,CAAC;AAE9B,MAAI,gBAAgB;AACpB,MAAI,CAAC,iBAAiB,IAAI,SAAS,GAAG;AACpC,UAAM,UAAU,MAAM,kBAAkB,QAAQ,KAAK,QAAQ,IAAI;AACjE,oBAAgB,QAAQ;AAAA,EAC1B;AAEA,QAAM,CAAC,YAAY,eAAe,QAAQ,IAAI,cAAc,KAAK,KAAK,gBAAgB;AAEtF,MAAI,UAAU;AACZ,UAAM,SAAS,gBAAgB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAC3D,UAAMG,IAAG,UAAU,GAAG,MAAM,iBAAiB,MAAM;AAAA,EACrD;AAEA,SAAO,gBAAgB;AACzB;;;ACnYA;AAAA,EACE,cAAAE;AAAA,EAAY,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OACrB;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAClB,OAAO,eAAe;AACtB,OAAOC,aAAY;AAuBnB,SAAS,cAA0B;AACjC,SAAO;AAAA,IACL,QAAQ,CAAC;AAAA,IAAG,SAAS,CAAC;AAAA,IAAG,UAAU,CAAC;AAAA,EACtC;AACF;AAEA,SAAS,oBAAoB,KAAsC;AACjE,QAAM,MAAMC,eAAaC,OAAK,QAAQ,KAAK,cAAc,GAAG,MAAM;AAClE,SAAO,KAAK,MAAM,GAAG;AACvB;AAEA,SAAS,qBAAqB,KAAa,KAA8B;AACvE,QAAMC,QAAOD,OAAK,QAAQ,KAAK,cAAc;AAC7C,EAAAE,eAAcD,OAAM,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AACjE;AAEA,SAAS,uBAAuB,KAAmC;AACjE,QAAM,SAASD,OAAK,QAAQ,KAAK,qBAAqB;AACtD,MAAI,CAACG,aAAW,MAAM,EAAG,QAAO;AAChC,QAAM,MAAMJ,eAAa,QAAQ,MAAM;AACvC,QAAM,QAAkB,CAAC;AACzB,MAAI,aAAa;AACjB,aAAW,QAAQ,IAAI,MAAM,IAAI,GAAG;AAClC,QAAI,gBAAgB,KAAK,IAAI,GAAG;AAC9B,mBAAa;AACb;AAAA,IACF;AACA,QAAI,YAAY;AACd,YAAM,QAAQ,iCAAiC,KAAK,IAAI;AACxD,UAAI,OAAO;AACT,cAAM,KAAK,MAAM,CAAC,CAAC;AAAA,MACrB,WAAW,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,MAAM,IAAI;AACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,SAAS,IAAI,QAAQ;AACpC;AAEA,SAAS,WAAW,KAA8B,KAAsB;AACtE,QAAM,aAAa,IAAI;AACvB,MAAI,MAAM,QAAQ,UAAU,KAAK,WAAW,SAAS,EAAG,QAAO;AAC/D,SAAO,uBAAuB,GAAG,MAAM;AACzC;AAEA,SAAS,oBAAoB,YAA8D;AACzF,QAAM,SAAS,YAAY;AAE3B,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,QAAI,CAAC,SAAS,WAAW,WAAW,KAAK,CAAC,SAAS,WAAW,YAAY,GAAG;AAC3E,aAAO,OAAO,KAAK,GAAG,IAAI,KAAK,QAAQ,oCAAoC;AAAA,IAC7E;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,KAA0C;AAClE,QAAM,SAAS,YAAY;AAE3B,MAAI,CAAC,IAAI,SAAS;AAChB,WAAO,QAAQ,KAAK,oEAAoE;AAAA,EAC1F;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,KAAa,KAA8B;AACjE,MAAI,UAAU;AACd,uBAAqB,KAAK,GAAG;AAC7B,UAAQ,IAAIK,QAAM,MAAM,0DAAqD,CAAC;AAChF;AAEA,SAAS,8BAA8B,KAA0C;AAC/E,QAAM,SAAS,YAAY;AAE3B,MAAI,IAAI,WAAW,IAAI,eAAe;AACpC,WAAO,QAAQ,KAAK,wFAAmF;AAAA,EACzG;AAEA,SAAO;AACT;AAEA,SAAS,4BAA4B,KAAa,KAA8B;AAC9E,SAAO,IAAI;AACX,uBAAqB,KAAK,GAAG;AAC7B,UAAQ,IAAIA,QAAM,MAAM,sEAAiE,CAAC;AAC5F;AAEA,SAAS,kCACP,KACA,YACY;AACZ,QAAM,SAAS,YAAY;AAE3B,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUJ,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAMD,eAAa,SAAS,MAAM;AACxC,YAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,UAAI,IAAI,gBAAgB;AACtB,eAAO,QAAQ,KAAK,GAAG,IAAI,KAAK,QAAQ,sEAAiE;AAAA,MAC3G;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,gCAAgC,KAAa,MAA+B,YAAkD;AACrI,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUC,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAMD,eAAa,SAAS,MAAM;AACxC,YAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,UAAI,IAAI,gBAAgB;AACtB,eAAO,IAAI;AACX,QAAAG,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAClE,gBAAQ,IAAIE,QAAM,MAAM,+CAA0C,QAAQ,eAAe,CAAC;AAAA,MAC5F;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAEA,SAAS,8BACP,KACA,IACA,YACY;AACZ,QAAM,SAAS,YAAY;AAE3B,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAG3C,QAAI,OAAO,SAAS,OAAO,aAAa,KAAK;AAC3C,YAAM,UAAUJ,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,UAAI;AACF,cAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AACpD,YAAI,IAAI,YAAY;AAClB,gBAAM,QAAQ,aAAa,MAAM,SAAS,GAAG,IAAI,KAAK,QAAQ;AAC9D,gBAAM,SAAS,OAAO,SAClB,0CACA;AACJ,iBAAO,QAAQ,KAAK,GAAG,KAAK,kCAA6B,MAAM,EAAE;AAAA,QACnE;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,4BACP,KACA,IACA,YACM;AACN,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,OAAO,SAAS,OAAO,aAAa,KAAK;AAC3C,YAAM,UAAUC,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,UAAI;AACF,cAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AACpD,YAAI,IAAI,YAAY;AAClB,iBAAO,IAAI;AACX,UAAAG,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAClE,gBAAM,QAAQ,aAAa,MAAM,SAAS;AAC1C,kBAAQ,IAAIE,QAAM,MAAM,2CAAsC,KAAK,eAAe,CAAC;AAAA,QACrF;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,2BACP,KACA,KACA,IACA,YACY;AACZ,QAAM,SAAS,YAAY;AAE3B,QAAM,QAAQ,OAAO,SACjB,uBAAuB,GAAG,KAAK,CAAC,IAC/B,MAAM,QAAQ,IAAI,UAAU,IAAI,IAAI,aAAyB,CAAC;AAEnE,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,SAAS,OAAO,SAAS,wBAAwB;AACvD,WAAO,OAAO,KAAK,+BAA+B,MAAM,EAAE;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,MAAM,IAAI,CAAAC,UAAQ,UAAUA,KAAI,CAAC;AAClD,QAAM,UAAU,CAAC,aAAqB,SAAS,KAAK,OAAK,EAAE,QAAQ,CAAC;AAEpE,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,QAAI,CAAC,QAAQ,QAAQ,GAAG;AACtB,YAAM,SAAS,OAAO,SAAS,wBAAwB;AACvD,aAAO,OAAO,KAAK,GAAG,IAAI,KAAK,QAAQ,mCAAmC,MAAM,EAAE;AAAA,IACpF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,WAAW,OAAe,QAAoB,KAAiD;AACtG,MAAI,SAAS;AACb,MAAI,QAAQ;AAEZ,aAAW,SAAS,OAAO,QAAQ;AACjC,YAAQ,IAAID,QAAM,IAAI,YAAO,KAAK,EAAE,CAAC;AACrC;AAAA,EACF;AACA,aAAW,WAAW,OAAO,SAAS;AACpC,QAAI,KAAK;AACP;AAAA,IACF,OAAO;AACL,cAAQ,IAAIA,QAAM,IAAI,YAAO,OAAO,YAAY,CAAC;AACjD;AAAA,IACF;AAAA,EACF;AACA,aAAW,WAAW,OAAO,UAAU;AACrC,YAAQ,IAAIA,QAAM,OAAO,YAAO,OAAO,EAAE,CAAC;AAAA,EAC5C;AACA,MAAI,WAAW,KAAK,UAAU,KAAK,OAAO,SAAS,WAAW,GAAG;AAC/D,YAAQ,IAAIA,QAAM,MAAM,YAAO,KAAK,EAAE,CAAC;AAAA,EACzC;AAEA,SAAO,EAAE,QAAQ,MAAM;AACzB;AAQA,SAAS,UAAU,SAAuB,KAAa,KAA8B,KAAiD;AACpI,MAAI,cAAc;AAClB,MAAI,aAAa;AAEjB,aAAW,SAAS,SAAS;AAC3B,UAAM,SAAS,MAAM,MAAM;AAC3B,UAAM,MAAM,WAAW,MAAM,OAAO,QAAQ,GAAG;AAC/C,QAAI,OAAO,MAAM,OAAO,OAAO,QAAQ,SAAS,GAAG;AACjD,YAAM,IAAI,KAAK,GAAG;AAAA,IACpB;AACA,mBAAe,IAAI;AACnB,kBAAc,IAAI;AAAA,EACpB;AAEA,SAAO,EAAE,QAAQ,aAAa,OAAO,WAAW;AAClD;AAEA,SAAS,qBACP,KACA,YACY;AACZ,QAAM,SAAS,YAAY;AAE3B,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUJ,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AACpD,UAAI,IAAI,OAAO;AACb,eAAO,QAAQ,KAAK,GAAG,IAAI,KAAK,QAAQ,6DAAwD;AAAA,MAClG;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,KAAa,MAA+B,YAAkD;AACxH,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUC,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAMD,eAAa,SAAS,MAAM;AACxC,YAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,UAAI,IAAI,OAAO;AACb,eAAO,IAAI;AACX,QAAAG,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAClE,gBAAQ,IAAIE,QAAM,MAAM,sCAAiC,QAAQ,eAAe,CAAC;AAAA,MACnF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,KAAuC;AAChE,SAAO,IAAI,YAAY;AACzB;AAEA,SAAS,8BACP,KACA,YACY;AACZ,QAAM,SAAS,YAAY;AAG3B,QAAM,UAAU,KAAK,MAAML,eAAaC,OAAK,QAAQ,KAAK,cAAc,GAAG,MAAM,CAAC;AAClF,MAAI,QAAQ,SAAS;AACnB,WAAO,QAAQ,KAAK,uGAAkG;AAAA,EACxH;AAEA,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUA,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AACpD,UAAI,kBAAkB,GAAG,KAAK,IAAI,SAAS;AACzC,eAAO,QAAQ,KAAK,GAAG,IAAI,KAAK,QAAQ,6FAAwF;AAAA,MAClI;AACA,UAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,SAAS;AAC3C,eAAO,QAAQ,KAAK,GAAG,IAAI,KAAK,QAAQ,yCAAyC;AAAA,MACnF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,4BAA4B,KAAa,MAA+B,YAAkD;AAEjI,QAAM,WAAWC,OAAK,QAAQ,KAAK,cAAc;AACjD,QAAM,UAAUD,eAAa,UAAU,MAAM;AAC7C,QAAM,UAAU,KAAK,MAAM,OAAO;AAClC,MAAI,QAAQ,SAAS;AACnB,WAAO,QAAQ;AACf,IAAAG,eAAc,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AACvE,YAAQ,IAAIE,QAAM,MAAM,wDAAmD,CAAC;AAAA,EAC9E;AAGA,QAAM,kBAAkB,uBAAuB,KAAK,UAAU;AAC9D,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,aAAa,IAAK;AACtB,UAAM,UAAUJ,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC1D,QAAI;AACF,YAAM,MAAMD,eAAa,SAAS,MAAM;AACxC,YAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,UAAI,kBAAkB,GAAG,KAAK,IAAI,SAAS;AACzC,eAAO,IAAI;AACX,QAAAG,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAClE,gBAAQ,IAAIE,QAAM,MAAM,wCAAmC,QAAQ,eAAe,CAAC;AAAA,MACrF;AACA,UAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,WAAW,iBAAiB;AAC9D,YAAI,UAAU;AACd,QAAAF,eAAc,SAAS,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAClE,gBAAQ,IAAIE,QAAM,MAAM,oCAA+B,QAAQ,eAAe,CAAC;AAAA,MACjF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAEA,SAAS,uBACP,KACA,YACoC;AAEpC,aAAW,EAAE,SAAS,KAAK,YAAY;AACrC,QAAI,aAAa,IAAK;AACtB,QAAI;AACF,YAAM,MAAM,KAAK,MAAML,eAAaC,OAAK,QAAQ,KAAK,UAAU,cAAc,GAAG,MAAM,CAAC;AACxF,UAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI,SAAS;AAC1C,eAAO,IAAI;AAAA,MACb;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,wBACP,KACA,YACY;AACZ,QAAM,SAAS,YAAY;AAE3B,QAAM,eAAuC;AAAA,IAC3C,MAAM,eAAe;AAAA,IACrB,KAAK,eAAe;AAAA,IACpB,MAAM,eAAe;AAAA,IACrB,MAAM,eAAe;AAAA,EACvB;AAGA,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,UAAM,UAAU,aAAa,MACzBA,OAAK,QAAQ,KAAK,cAAc,IAChCA,OAAK,QAAQ,KAAK,UAAU,cAAc;AAC9C,QAAI;AACF,YAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AACpD,YAAM,QAAQ,aAAa,MAAM,SAAS,GAAG,IAAI,KAAK,QAAQ;AAG9D,YAAM,UAAU,IAAI;AACpB,UAAI,SAAS;AACX,mBAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,gBAAM,SAAS,aAAa,IAAI;AAChC,cAAI,UAAU,CAACO,QAAO,UAAU,QAAQ,KAAK,GAAG;AAC9C,mBAAO,OAAO;AAAA,cACZ,GAAG,KAAK,YAAY,IAAI,KAAK,KAAK,6BAA6B,SAAS,SAAS,SAAS,EAAE,WAAW,MAAM;AAAA,YAC/G;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,YAAM,QAAQ,IAAI;AAClB,UAAI,OAAO;AACT,mBAAW,CAAC,MAAM,aAAa,KAAK,OAAO,QAAQ,KAAK,GAAG;AACzD,gBAAM,SAAS,aAAa,IAAI;AAChC,cAAI,UAAUA,QAAO,GAAG,eAAe,MAAM,GAAG;AAC9C,mBAAO,SAAS;AAAA,cACd,GAAG,KAAK,UAAU,IAAI,KAAK,aAAa,0BAA0B,SAAS,SAAS,SAAS,EAAE,WAAW,MAAM;AAAA,YAClH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,WAAW,QAAgB,OAAe;AACjD,MAAI,QAAQ,GAAG;AACb,YAAQ,IAAIF,QAAM,MAAM;AAAA,UAAa,KAAK,WAAW,CAAC;AAAA,EACxD;AACA,MAAI,SAAS,GAAG;AACd,YAAQ,IAAIA,QAAM,IAAI;AAAA,IAAO,MAAM,iBAAiB,CAAC;AAAA,EACvD,WAAW,UAAU,GAAG;AACtB,YAAQ,IAAIA,QAAM,MAAM,uBAAuB,CAAC;AAAA,EAClD;AACF;AAEO,SAAS,oBAAoB,MAAM,OAAe;AACvD,QAAM,MAAM,SAAS;AAErB,MAAI;AACJ,MAAI;AACF,UAAM,oBAAoB,GAAG;AAAA,EAC/B,QAAQ;AACN,YAAQ,MAAMA,QAAM,IAAI,6BAA6B,CAAC;AACtD,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,WAAW,KAAK,GAAG,GAAG;AACzB,YAAQ,IAAIA,QAAM,KAAK,iDAA4C,CAAC;AACpE,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,QAAM,MAAM,WAAW,CAAC;AAEpC,QAAM,KAAK,qBAAqB;AAChC,QAAM,aAAa,kBAAkB,EAAE,eAAe;AAEtD,QAAM,mBAA+B,OAAO,SACxC;AAAA,IACE,OAAO,MAAM,uBAAuB,KAAK,UAAU;AAAA,IACnD,KAAK,MAAM,qBAAqB,KAAK,UAAU;AAAA,IAC/C,OAAO;AAAA,EACT,IACA;AAAA,IACE,OAAO,MAAM,yBAAyB,KAAK,UAAU;AAAA,IACrD,KAAK,MAAM,uBAAuB,KAAK,UAAU;AAAA,IACjD,OAAO;AAAA,EACT;AAEJ,QAAMG,UAAuB;AAAA,IAC3B;AAAA,MACE,OAAO,MAAM,iBAAiB,GAAG;AAAA,MAAG,KAAK;AAAA,MAAgB,OAAO;AAAA,IAClE;AAAA,IACA;AAAA,MACE,OAAO,MAAM,8BAA8B,GAAG;AAAA,MAAG,KAAK;AAAA,MAA6B,OAAO;AAAA,IAC5F;AAAA,IACA,EAAE,OAAO,MAAM,oBAAoB,UAAU,GAAG,OAAO,uCAAuC;AAAA,IAC9F;AAAA,MACE,OAAO,MAAM,8BAA8B,KAAK,IAAI,UAAU;AAAA,MAC9D,KAAK,MAAM,4BAA4B,KAAK,IAAI,UAAU;AAAA,MAC1D,OAAO,OAAO,SAAS,kEAAkE;AAAA,IAC3F;AAAA,IACA;AAAA,MACE,OAAO,MAAM,2BAA2B,KAAK,KAAK,IAAI,UAAU;AAAA,MAChE,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,MAAM,kCAAkC,KAAK,UAAU;AAAA,MAC9D,KAAK,MAAM,gCAAgC,KAAK,KAAK,UAAU;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,MAAM,qBAAqB,KAAK,UAAU;AAAA,MACjD,KAAK,MAAM,mBAAmB,KAAK,KAAK,UAAU;AAAA,MAClD,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,MAAM,8BAA8B,KAAK,UAAU;AAAA,MAC1D,KAAK,MAAM,4BAA4B,KAAK,KAAK,UAAU;AAAA,MAC3D,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,MAAM,wBAAwB,KAAK,UAAU;AAAA,MACpD,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO,MAAM,wBAAwB,KAAK,KAAK,UAAU;AAAA,MACzD,KAAK,MAAM,sBAAsB,KAAK,KAAK,sBAAsB,UAAU;AAAA,MAC3E,OAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,MACE,OAAO,MAAM,0BAA0B,KAAK,UAAU;AAAA,MACtD,KAAK,MAAM,wBAAwB,KAAK,UAAU;AAAA,MAClD,OAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,MAAM,IAAI,UAAUA,SAAQ,KAAK,KAAK,GAAG;AACzD,aAAW,QAAQ,KAAK;AAExB,MAAI,OAAO,QAAQ,GAAG;AACpB,eAAW;AAAA,EACb;AAEA,SAAO,SAAS,IAAI,IAAI;AAC1B;;;ACpkBA;AAAA,EACE,cAAAC;AAAA,EAAY,UAAAC;AAAA,EAAQ,iBAAAC;AAAA,OACf;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;;;ACLlB;AAAA,EACE,cAAAC;AAAA,EAAY,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,YAAAC;AAAA,OAClC;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;;;ACLlB,SAAS,aAAAC,kBAAiB;AAC1B;AAAA,EACE,cAAAC;AAAA,EAAY,aAAAC;AAAA,EAAW,gBAAAC;AAAA,EAAc,UAAAC;AAAA,EAAQ,iBAAAC;AAAA,OACxC;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;;;ACJlB,SAAS,kBAAkB,QAAwB;AACjD,MAAI,SAAS;AAEb,WAAS,OAAO,WAAW,gCAAgC,uBAAuB;AAElF,WAAS,OAAO,WAAW,yCAAyC,yBAAyB;AAE7F,WAAS,OAAO,WAAW,mDAAmD,cAAc;AAE5F,WAAS,OAAO,WAAW,6DAA6D,kDAAkD;AAE1I,WAAS,OAAO,WAAW,+BAA+B,yBAAyB;AAEnF,WAAS,OAAO,WAAW,gBAAgB,SAAS;AAEpD,WAAS,OAAO,WAAW,iBAAiB,UAAU;AACtD,WAAS,OAAO,WAAW,oBAAoB,aAAa;AAC5D,WAAS,OAAO,WAAW,qBAAqB,cAAc;AAC9D,WAAS,OAAO,WAAW,oBAAoB,aAAa;AAC5D,WAAS,OAAO,WAAW,sBAAsB,eAAe;AAChE,WAAS,OAAO,WAAW,iBAAiB,UAAU;AAEtD,WAAS,OAAO,WAAW,oBAAoB,QAAQ;AAEvD,WAAS,OAAO,WAAW,iBAAiB,KAAK;AAEjD,WAAS,OAAO,WAAW,sBAAsB,MAAM;AACvD,SAAO;AACT;AAEA,SAAS,kBAAkB,QAAwB;AACjD,MAAI,SAAS;AAEb,WAAS,OAAO,WAAW,+BAA+B,wBAAwB;AAElF,WAAS,OAAO,WAAW,mBAAmB,mCAAmC;AAEjF,WAAS,OAAO,WAAW,0DAA0D,qDAAqD;AAE1I,WAAS,OAAO,WAAW,gBAAgB,SAAS;AAEpD,WAAS,OAAO,WAAW,iBAAiB,UAAU;AACtD,WAAS,OAAO,WAAW,oBAAoB,aAAa;AAC5D,WAAS,OAAO,WAAW,qBAAqB,cAAc;AAC9D,WAAS,OAAO,WAAW,oBAAoB,aAAa;AAC5D,WAAS,OAAO,WAAW,sBAAsB,eAAe;AAChE,WAAS,OAAO,WAAW,iBAAiB,UAAU;AAEtD,WAAS,OAAO,WAAW,sBAAsB,MAAM;AACvD,SAAO;AACT;AAEO,SAAS,cAAc,QAAgB,WAA8B;AAC1E,SAAO,cAAc,iBACjB,kBAAkB,MAAM,IACxB,kBAAkB,MAAM;AAC9B;AAEO,SAAS,4BACd,KACA,WACyB;AACzB,QAAM,UAAU,IAAI;AACpB,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,YAAoC,CAAC;AAC3C,aAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACpD,cAAU,IAAI,IAAI,cAAc,QAAQ,SAAS;AAAA,EACnD;AACA,SAAO,EAAE,GAAG,KAAK,SAAS,UAAU;AACtC;;;ACxEA;AAAA,EACE,cAAAC;AAAA,EAAY,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OACrB;AAEP,OAAOC,aAAW;AAClB,SAAS,YAAAC,iBAAgB;AAIzB,IAAM,kBAAmE;AAAA,EACvE,gBAAgB;AAAA,IACd,CAAC,4BAA4B,yBAAyB;AAAA,IACtD,CAAC,kCAAkC,+BAA+B;AAAA,EACpE;AAAA,EACA,gBAAgB;AAAA,IACd,CAAC,2BAA2B,0BAA0B;AAAA,IACtD,CAAC,iCAAiC,gCAAgC;AAAA,EACpE;AACF;AAEA,IAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,qBAAqB,KAAa,WAA4B;AAC5E,QAAM,QAAQ,gBAAgB,SAAS;AACvC,QAAM,QAAQA,UAAS,cAAc;AAAA,IACnC;AAAA,IACA,UAAU;AAAA,IACV,QAAQ;AAAA,EACV,CAAC;AAED,MAAI,QAAQ;AACZ,aAAW,QAAQ,OAAO;AACxB,QAAI,CAACJ,aAAW,IAAI,EAAG;AACvB,UAAM,WAAWC,eAAa,MAAM,MAAM;AAC1C,QAAI,UAAU;AACd,eAAW,CAAC,MAAM,EAAE,KAAK,OAAO;AAC9B,gBAAU,QAAQ,WAAW,MAAM,EAAE;AAAA,IACvC;AACA,QAAI,YAAY,UAAU;AACxB,MAAAC,gBAAc,MAAM,SAAS,MAAM;AACnC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,GAAG;AACb,YAAQ,IAAIC,QAAM,MAAM,mCAAmC,KAAK,iBAAiB,CAAC;AAAA,EACpF;AACF;;;AC7DA;AAAA,EACE,cAAAE;AAAA,EAAY,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OACrB;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAIlB,IAAM,WAA4D;AAAA,EAChE,gBAAgB;AAAA,IACd,CAAC,4BAA4B,yBAAyB;AAAA,EACxD;AAAA,EACA,gBAAgB;AAAA,IACd,CAAC,2BAA2B,0BAA0B;AAAA,EACxD;AACF;AAEA,SAAS,kBAAkB,SAAiB,WAA+B;AACzE,MAAI,CAACJ,aAAW,OAAO,EAAG,QAAO;AAEjC,QAAM,MAAMC,eAAa,SAAS,MAAM;AACxC,QAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,MAAI,UAAU;AAEd,aAAW,YAAY,CAAC,gBAAgB,iBAAiB,GAAG;AAC1D,UAAM,OAAO,IAAI,QAAQ;AACzB,QAAI,CAAC,KAAM;AAEX,eAAW,CAAC,MAAM,EAAE,KAAK,SAAS,SAAS,GAAG;AAC5C,UAAI,KAAK,IAAI,GAAG;AACd,aAAK,EAAE,IAAI,KAAK,IAAI;AACpB,eAAO,KAAK,IAAI;AAChB,kBAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,MAAI,SAAS;AACX,IAAAC,gBAAc,SAAS,KAAK,UAAU,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM;AAAA,EACpE;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB,KAAa,2BAAqC,WAA4B;AACpH,MAAI,QAAQ;AAGZ,MAAI,kBAAkBC,OAAK,KAAK,KAAK,cAAc,GAAG,SAAS,GAAG;AAChE;AAAA,EACF;AAGA,aAAW,WAAW,2BAA2B;AAC/C,UAAM,WAAWA,OAAK,QAAQ,KAAK,SAAS,cAAc;AAC1D,QAAI,kBAAkB,UAAU,SAAS,GAAG;AAC1C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,GAAG;AACb,UAAM,SAAS,cAAc,iBAAiB,4BAA4B;AAC1E,YAAQ,IAAIC,QAAM,MAAM,sCAAsC,MAAM,OAAO,KAAK,aAAa,CAAC;AAAA,EAChG;AACF;;;AHpDA,IAAM,eAAe;AAErB,SAAS,wBAAwB,KAAa,mBAAmC;AAC/E,QAAM,QAAQ,CAAC,WAAW;AAC1B,aAAW,WAAW,mBAAmB;AACvC,UAAM,KAAK,QAAQ,OAAO,GAAG;AAAA,EAC/B;AACA,EAAAC,gBAAcC,OAAK,KAAK,KAAK,qBAAqB,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,MAAM;AACpF,UAAQ,IAAIC,QAAM,MAAM,+BAA+B,CAAC;AAC1D;AAEA,SAAS,0BAA0B,KAAuB;AACxD,QAAM,SAASD,OAAK,KAAK,KAAK,qBAAqB;AACnD,MAAI,CAACE,aAAW,MAAM,EAAG,QAAO,CAAC;AAEjC,QAAM,UAAUC,eAAa,QAAQ,MAAM;AAC3C,QAAM,WAAqB,CAAC;AAC5B,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,MAAI,aAAa;AACjB,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,KAAK,MAAM,aAAa;AAC/B,mBAAa;AACb;AAAA,IACF;AACA,QAAI,cAAc,WAAW,KAAK,IAAI,GAAG;AACvC,YAAM,UAAU,KAAK,QAAQ,YAAY,EAAE,EAAE,WAAW,SAAS,EAAE,EAAE,KAAK;AAC1E,UAAI,QAAS,UAAS,KAAK,OAAO;AAAA,IACpC,WAAW,cAAc,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG;AACzD,mBAAa;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,KAAuB;AACpD,QAAM,UAAUH,OAAK,KAAK,KAAK,cAAc;AAC7C,QAAM,MAAM,KAAK,MAAMG,eAAa,SAAS,MAAM,CAAC;AAGpD,QAAM,oBAA+B,IAAI,cAAuC,0BAA0B,GAAG;AAG7G,SAAO,IAAI;AAGX,MAAI,iBAAiB,QAAQ,YAAY;AAGzC,QAAM,UAAU,4BAA4B,KAAK,cAAc;AAE/D,EAAAJ,gBAAc,SAAS,KAAK,UAAU,SAAS,MAAM,CAAC,IAAI,MAAM,MAAM;AACtE,UAAQ,IAAIE,QAAM,MAAM,6BAA6B,CAAC;AAEtD,SAAO;AACT;AAEA,SAAS,gBAAgB,KAAmB;AAC1C,QAAM,gBAAgBD,OAAK,KAAK,KAAK,YAAY;AACjD,MAAI,CAACE,aAAW,aAAa,EAAG;AAEhC,MAAI,UAAUC,eAAa,eAAe,MAAM;AAGhD,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,aAAW,QAAQ,WAAW;AAC5B,cAAU,QAAQ,WAAW,IAAI,OAAO,OAAO,OAAO,KAAK,WAAW,KAAK,OAAO,OAAO,EAAE,WAAW,KAAK,OAAO,OAAO,EAAE,WAAW,KAAK,OAAO,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE;AAAA,EAC7K;AAGA,YAAU,QAAQ,WAAW,WAAW,MAAM;AAE9C,EAAAJ,gBAAc,eAAe,SAAS,MAAM;AAC5C,UAAQ,IAAIE,QAAM,MAAM,sBAAsB,CAAC;AACjD;AAEA,SAAS,oBAAoB,KAAmB;AAC9C,QAAM,WAAWD,OAAK,KAAK,KAAK,WAAW;AAC3C,QAAM,SAASA,OAAK,KAAK,KAAK,aAAa;AAC3C,QAAM,UAAUA,OAAK,KAAK,KAAK,OAAO;AAEtC,MAAIE,aAAW,QAAQ,GAAG;AACxB,IAAAE,QAAO,QAAQ;AACf,YAAQ,IAAIH,QAAM,KAAK,qBAAqB,CAAC;AAAA,EAC/C;AACA,MAAIC,aAAW,MAAM,GAAG;AACtB,IAAAE,QAAO,MAAM;AACb,YAAQ,IAAIH,QAAM,KAAK,uBAAuB,CAAC;AAAA,EACjD;AACA,MAAIC,aAAW,OAAO,GAAG;AACvB,IAAAE,QAAO,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAChD,YAAQ,IAAIH,QAAM,KAAK,kBAAkB,CAAC;AAAA,EAC5C;AACF;AAEA,SAAS,YAAY,KAAmB;AACtC,QAAM,YAAYD,OAAK,KAAK,KAAK,QAAQ;AACzC,MAAIE,aAAW,SAAS,EAAG;AAE3B,EAAAG,WAAUL,OAAK,QAAQ,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AACtD,EAAAD,gBAAc,WAAW,IAAI,MAAM;AACnC,UAAQ,IAAIE,QAAM,MAAM,kBAAkB,CAAC;AAC7C;AAEO,SAAS,cAAc,KAAa,2BAA6C;AACtF,UAAQ,IAAIA,QAAM,KAAK,2BAA2B,CAAC;AAGnD,QAAM,oBAAoB,sBAAsB,GAAG;AAGnD,0BAAwB,KAAK,iBAAiB;AAG9C,aAAW,WAAW,2BAA2B;AAC/C,UAAM,WAAWD,OAAK,QAAQ,KAAK,SAAS,cAAc;AAC1D,QAAI,CAACE,aAAW,QAAQ,EAAG;AAC3B,UAAM,MAAM,KAAK,MAAMC,eAAa,UAAU,MAAM,CAAC;AACrD,UAAM,UAAU,4BAA4B,KAAK,cAAc;AAC/D,QAAI,KAAK,UAAU,GAAG,MAAM,KAAK,UAAU,OAAO,GAAG;AACnD,MAAAJ,gBAAc,UAAU,KAAK,UAAU,SAAS,MAAM,CAAC,IAAI,MAAM,MAAM;AAAA,IACzE;AAAA,EACF;AACA,UAAQ,IAAIE,QAAM,MAAM,wBAAwB,0BAA0B,MAAM,uBAAuB,CAAC;AAGxG,kBAAgB,GAAG;AAGnB,cAAY,GAAG;AAGf,0BAAwB,KAAK,2BAA2B,cAAc;AAGtE,uBAAqB,KAAK,cAAc;AAGxC,sBAAoB,GAAG;AAGvB,UAAQ,IAAIA,QAAM,KAAK,2BAA2B,CAAC;AACnD,QAAM,UAAUK,WAAU,QAAQ,CAAC,SAAS,GAAG;AAAA,IAC7C;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AACD,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,MAAML,QAAM,IAAI,qBAAqB,CAAC;AAC9C,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,QAAM,KAAK,0BAA0B,CAAC;AAClD,SAAO;AACT;;;AI/KA,SAAS,aAAAM,kBAAiB;AAC1B;AAAA,EACE,cAAAC;AAAA,EAAY,gBAAAC;AAAA,EAAc,UAAAC;AAAA,EAAQ,iBAAAC;AAAA,OAC7B;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAMlB,IAAM,eAAe;AAErB,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWxB,IAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU/B,SAASC,2BAA0B,KAAuB;AACxD,QAAM,SAASC,OAAK,KAAK,KAAK,qBAAqB;AACnD,MAAI,CAACC,aAAW,MAAM,EAAG,QAAO,CAAC;AAEjC,QAAM,UAAUC,eAAa,QAAQ,MAAM;AAC3C,QAAM,WAAqB,CAAC;AAE5B,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,MAAI,aAAa;AACjB,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,KAAK,MAAM,aAAa;AAC/B,mBAAa;AACb;AAAA,IACF;AACA,QAAI,cAAc,WAAW,KAAK,IAAI,GAAG;AACvC,YAAM,UAAU,KAAK,QAAQ,YAAY,EAAE,EAAE,WAAW,SAAS,EAAE,EAAE,KAAK;AAC1E,UAAI,QAAS,UAAS,KAAK,OAAO;AAAA,IACpC,WAAW,cAAc,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG;AACzD,mBAAa;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAASC,uBAAsB,KAAa,mBAAmC;AAC7E,QAAM,UAAUH,OAAK,KAAK,KAAK,cAAc;AAC7C,QAAM,MAAM,KAAK,MAAME,eAAa,SAAS,MAAM,CAAC;AAGpD,MAAI,aAAa;AAGjB,MAAI,iBAAiB,QAAQ,YAAY;AAGzC,QAAM,UAAU,4BAA4B,KAAK,cAAc;AAE/D,EAAAE,gBAAc,SAAS,KAAK,UAAU,SAAS,MAAM,CAAC,IAAI,MAAM,MAAM;AACtE,UAAQ,IAAIC,QAAM,MAAM,6BAA6B,CAAC;AACxD;AAEA,SAASC,iBAAgB,KAAmB;AAC1C,QAAM,gBAAgBN,OAAK,KAAK,KAAK,YAAY;AACjD,MAAI,UAAUC,aAAW,aAAa,IAAIC,eAAa,eAAe,MAAM,IAAI;AAGhF,MAAI,CAAC,QAAQ,SAAS,SAAS,GAAG;AAChC,cAAU,QAAQ,QAAQ,IAAI,OAAO;AAAA,EACvC;AAEA,EAAAE,gBAAc,eAAe,SAAS,MAAM;AAC5C,UAAQ,IAAIC,QAAM,MAAM,sBAAsB,CAAC;AACjD;AAEA,SAAS,oBAAoB,KAAmB;AAC9C,QAAM,WAAWL,OAAK,KAAK,KAAK,gBAAgB;AAChD,QAAM,gBAAgBA,OAAK,KAAK,KAAK,qBAAqB;AAC1D,QAAM,QAAQA,OAAK,KAAK,KAAK,QAAQ;AAErC,MAAIC,aAAW,QAAQ,GAAG;AACxB,IAAAM,QAAO,QAAQ;AACf,YAAQ,IAAIF,QAAM,KAAK,0BAA0B,CAAC;AAAA,EACpD;AACA,MAAIJ,aAAW,aAAa,GAAG;AAC7B,IAAAM,QAAO,aAAa;AACpB,YAAQ,IAAIF,QAAM,KAAK,+BAA+B,CAAC;AAAA,EACzD;AACA,MAAIJ,aAAW,KAAK,GAAG;AACrB,UAAM,UAAUC,eAAa,OAAO,MAAM;AAE1C,QAAI,QAAQ,KAAK,MAAM,MAAM,QAAQ,SAAS,kBAAkB,KAAK,QAAQ,SAAS,aAAa,GAAG;AACpG,MAAAK,QAAO,KAAK;AACZ,cAAQ,IAAIF,QAAM,KAAK,kBAAkB,CAAC;AAAA,IAC5C;AAAA,EACF;AACF;AAEA,SAAS,aAAa,KAAmB;AACvC,QAAM,aAAaL,OAAK,KAAK,KAAK,aAAa;AAC/C,MAAIC,aAAW,UAAU,EAAG;AAE5B,EAAAG,gBAAc,YAAY,iBAAiB,MAAM;AACjD,UAAQ,IAAIC,QAAM,MAAM,uBAAuB,CAAC;AAClD;AAEA,SAAS,qCAAqC,KAAuB;AACnE,QAAM,UAAUL,OAAK,KAAK,KAAK,cAAc;AAC7C,MAAI,CAACC,aAAW,OAAO,EAAG,QAAO,CAAC;AAClC,QAAM,MAAM,KAAK,MAAMC,eAAa,SAAS,MAAM,CAAC;AACpD,SAAQ,IAAI,cAAc,CAAC;AAC7B;AAEO,SAAS,cAAc,KAAa,2BAA6C;AACtF,UAAQ,IAAIG,QAAM,KAAK,2BAA2B,CAAC;AAGnD,QAAM,oBAAoBN,2BAA0B,GAAG;AACvD,MAAI,kBAAkB,WAAW,GAAG;AAClC,UAAM,UAAU,qCAAqC,GAAG;AACxD,QAAI,QAAQ,SAAS,GAAG;AACtB,wBAAkB,KAAK,GAAG,OAAO;AAAA,IACnC,OAAO;AACL,cAAQ,KAAKM,QAAM,OAAO,+BAA+B,CAAC;AAAA,IAC5D;AAAA,EACF;AAGA,EAAAF,uBAAsB,KAAK,iBAAiB;AAG5C,aAAW,WAAW,2BAA2B;AAC/C,UAAM,WAAWH,OAAK,QAAQ,KAAK,SAAS,cAAc;AAC1D,QAAI,CAACC,aAAW,QAAQ,EAAG;AAC3B,UAAM,MAAM,KAAK,MAAMC,eAAa,UAAU,MAAM,CAAC;AACrD,UAAM,UAAU,4BAA4B,KAAK,cAAc;AAC/D,QAAI,KAAK,UAAU,GAAG,MAAM,KAAK,UAAU,OAAO,GAAG;AACnD,MAAAE,gBAAc,UAAU,KAAK,UAAU,SAAS,MAAM,CAAC,IAAI,MAAM,MAAM;AAAA,IACzE;AAAA,EACF;AACA,UAAQ,IAAIC,QAAM,MAAM,wBAAwB,0BAA0B,MAAM,uBAAuB,CAAC;AAGxG,EAAAC,iBAAgB,GAAG;AAGnB,eAAa,GAAG;AAGhB,0BAAwB,KAAK,2BAA2B,cAAc;AAGtE,uBAAqB,KAAK,cAAc;AAGxC,sBAAoB,GAAG;AAGvB,UAAQ,IAAID,QAAM,KAAK,2BAA2B,CAAC;AACnD,QAAM,UAAUG,WAAU,QAAQ,CAAC,SAAS,GAAG;AAAA,IAC7C;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AACD,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,MAAMH,QAAM,IAAI,qBAAqB,CAAC;AAC9C,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,QAAM,KAAK,0BAA0B,CAAC;AAClD,SAAO;AACT;;;ALxKO,SAAS,gBAAgB,KAA0C;AACxE,MAAII,aAAWC,OAAK,KAAK,KAAK,gBAAgB,CAAC,KAAKD,aAAWC,OAAK,KAAK,KAAK,qBAAqB,CAAC,GAAG;AACrG,WAAO;AAAA,EACT;AACA,MAAID,aAAWC,OAAK,KAAK,KAAK,WAAW,CAAC,KAAKD,aAAWC,OAAK,KAAK,KAAK,aAAa,CAAC,GAAG;AACxF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,0BAA0B,KAAuB;AAE/D,QAAM,UAAUA,OAAK,KAAK,KAAK,cAAc;AAC7C,QAAM,MAAM,KAAK,MAAMC,eAAa,SAAS,MAAM,CAAC;AAEpD,QAAM,WAAsB,IAAI,cAAc,CAAC;AAG/C,MAAI,SAAS,WAAW,GAAG;AACzB,UAAM,SAASD,OAAK,KAAK,KAAK,qBAAqB;AACnD,QAAID,aAAW,MAAM,GAAG;AACtB,YAAM,UAAUE,eAAa,QAAQ,MAAM;AAC3C,YAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,UAAI,aAAa;AACjB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,KAAK,MAAM,aAAa;AAC/B,uBAAa;AACb;AAAA,QACF;AACA,YAAI,cAAc,WAAW,KAAK,IAAI,GAAG;AACvC,gBAAM,UAAU,KAAK,QAAQ,YAAY,EAAE,EAAE,WAAW,SAAS,EAAE,EAAE,KAAK;AAC1E,cAAI,QAAS,UAAS,KAAK,OAAO;AAAA,QACpC,WAAW,cAAc,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG;AACzD,uBAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,OAAiB,CAAC;AACxB,aAAW,WAAW,UAAU;AAC9B,UAAM,WAAW,qBAAqB,KAAK,OAAO;AAClD,SAAK,KAAK,GAAG,QAAQ;AAAA,EACvB;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,KAAa,SAA2B;AAEpE,QAAM,QAAQ,QAAQ,MAAM,GAAG;AAC/B,SAAO,SAAS,KAAK,OAAO,EAAE;AAChC;AAEA,SAAS,SAAS,UAAkB,OAAiB,aAA+B;AAClF,MAAI,MAAM,WAAW,GAAG;AAEtB,UAAM,WAAWD,OAAK,KAAK,UAAU,WAAW;AAChD,QAAID,aAAWC,OAAK,KAAK,UAAU,cAAc,CAAC,GAAG;AACnD,aAAO,CAAC,WAAW;AAAA,IACrB;AACA,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,CAAC,MAAM,GAAG,IAAI,IAAI;AACxB,QAAM,UAAUA,OAAK,KAAK,UAAU,WAAW;AAE/C,MAAI,CAACD,aAAW,OAAO,KAAK,CAACG,UAAS,OAAO,EAAE,YAAY,GAAG;AAC5D,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,SAAS,OAAO,SAAS,MAAM;AACjC,UAAM,UAAUC,aAAY,SAAS,EAAE,eAAe,KAAK,CAAC,EACzD,OAAO,OAAK,EAAE,YAAY,KAAK,CAAC,EAAE,KAAK,WAAW,GAAG,KAAK,EAAE,SAAS,kBAAkB,EAAE,SAAS,MAAM;AAC3G,UAAM,UAAoB,CAAC;AAE3B,QAAI,SAAS,MAAM;AAEjB,cAAQ,KAAK,GAAG,SAAS,UAAU,MAAM,WAAW,CAAC;AAAA,IACvD;AAEA,eAAW,SAAS,SAAS;AAC3B,YAAMC,WAAU,cAAc,GAAG,WAAW,IAAI,MAAM,IAAI,KAAK,MAAM;AACrE,UAAI,SAAS,MAAM;AAEjB,gBAAQ;AAAA,UACN,GAAG,SAAS,UAAU,MAAMA,QAAO;AAAA,UACnC,GAAG,SAAS,UAAU,OAAOA,QAAO;AAAA,QACtC;AAAA,MACF,OAAO;AACL,gBAAQ,KAAK,GAAG,SAAS,UAAU,MAAMA,QAAO,CAAC;AAAA,MACnD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,cAAc,GAAG,WAAW,IAAI,IAAI,KAAK;AACzD,SAAO,SAAS,UAAU,MAAM,OAAO;AACzC;AAEO,SAAS,QAAQ,EAAE,QAAQ,QAAQ,GAA0B;AAClE,QAAM,eAA2B,CAAC,QAAQ,MAAM;AAChD,MAAI,CAAC,aAAa,SAAS,MAAkB,GAAG;AAC9C,YAAQ,MAAMC,QAAM,IAAI,mBAAmB,MAAM,sBAAsB,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC;AACjG,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,YAAY,gBAAgB,GAAG;AAErC,MAAI,SAAS;AACX,YAAQ,IAAIA,QAAM,KAAK,4BAA4B,SAAS,EAAE,CAAC;AAC/D,YAAQ,IAAIA,QAAM,KAAK,2BAA2B,MAAM,EAAE,CAAC;AAAA,EAC7D;AAEA,MAAI,cAAc,QAAQ;AACxB,YAAQ,IAAIA,QAAM,OAAO,iBAAiB,MAAM,yDAAyD,CAAC;AAAA,EAC5G;AAEA,MAAI,cAAc,WAAW;AAC3B,YAAQ,MAAMA,QAAM,IAAI,iFAAiF,CAAC;AAC1G,WAAO;AAAA,EACT;AAGA,QAAM,iBAAiB,0BAA0B,GAAG;AACpD,MAAI,SAAS;AACX,YAAQ,IAAIA,QAAM,KAAK,SAAS,eAAe,MAAM,qBAAqB,CAAC;AAAA,EAC7E;AAEA,QAAM,SAAS,WAAW,SACtB,cAAc,KAAK,cAAc,IACjC,cAAc,KAAK,cAAc;AAErC,MAAI,WAAW,EAAG,QAAO;AAEzB,UAAQ,IAAIA,QAAM,MAAM,8BAA8B,CAAC;AACvD,sBAAoB,IAAI;AAExB,SAAO;AACT;;;ADjJA,SAAS,kBAAkB,KAAa,SAA4B;AAClE,QAAM,SAASC,OAAK,KAAK,KAAK,cAAc;AAC5C,MAAIC,aAAW,MAAM,GAAG;AACtB,QAAI,QAAS,SAAQ,IAAIC,QAAM,KAAK,YAAY,MAAM,EAAE,CAAC;AACzD,IAAAC,QAAO,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAC/C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,aAAa,EAAE,QAAQ,GAA+B;AACpE,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,KAAK,gBAAgB,GAAG;AAE9B,MAAI,OAAO,WAAW;AACpB,YAAQ,MAAMD,QAAM,IAAI,iFAAiF,CAAC;AAC1G,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,QAAM,KAAK,6BAA6B,EAAE,EAAE,CAAC;AAGzD,MAAI,eAAe;AAEnB,MAAI,kBAAkB,KAAK,OAAO,EAAG;AAErC,QAAM,iBAAiB,0BAA0B,GAAG;AACpD,aAAW,UAAU,gBAAgB;AACnC,UAAM,WAAWF,OAAK,KAAK,KAAK,MAAM;AACtC,QAAI,kBAAkB,UAAU,OAAO,EAAG;AAAA,EAC5C;AAEA,UAAQ,IAAIE,QAAM,MAAM,WAAW,YAAY,uBAAuB,iBAAiB,IAAI,KAAK,GAAG,EAAE,CAAC;AAGtG,MAAI,OAAO,QAAQ;AACjB,UAAM,WAAWF,OAAK,KAAK,KAAK,WAAW;AAC3C,QAAIC,aAAW,QAAQ,GAAG;AACxB,MAAAG,gBAAc,UAAU,EAAE;AAC1B,cAAQ,IAAIF,QAAM,MAAM,qBAAqB,CAAC;AAAA,IAChD;AAAA,EACF,WAAW,OAAO,QAAQ;AACxB,UAAM,WAAWF,OAAK,KAAK,KAAK,gBAAgB;AAChD,QAAIC,aAAW,QAAQ,GAAG;AACxB,MAAAE,QAAO,QAAQ;AACf,cAAQ,IAAID,QAAM,MAAM,wBAAwB,CAAC;AAAA,IACnD;AAAA,EACF;AAEA,UAAQ,IAAIA,QAAM,MAAM,2BAA2B,CAAC;AACpD,SAAO;AACT;;;AOhEA;AAAA,EACE,cAAAG;AAAA,EAAY,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OACrB;AACP,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAalB,SAAS,mBAAmB,KAAa,SAAmB,QAA2B;AACrF,QAAM,aAAaD,OAAK,KAAK,KAAK,aAAa;AAC/C,MAAI,CAACH,aAAW,UAAU,GAAG;AAC3B,QAAI,QAAS,SAAQ,IAAII,QAAM,KAAK,sDAAsD,CAAC;AAC3F,WAAO;AAAA,EACT;AAEA,QAAM,UAAUH,eAAa,YAAY,MAAM;AAC/C,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAEhC,aAAW,QAAQ,OAAO;AACxB,UAAM,UAAU,KAAK,KAAK;AAC1B,QAAI,qBAAqB,KAAK,OAAO,GAAG;AACtC,YAAM,QAAQ,QAAQ,QAAQ,yBAAyB,EAAE,EAAE,KAAK;AAChE,UAAI,UAAU,SAAS;AACrB,YAAI,QAAS,SAAQ,IAAIG,QAAM,MAAM,2CAA2C,CAAC;AACjF,eAAO;AAAA,MACT;AACA,UAAI,CAAC,OAAQ,SAAQ,IAAIA,QAAM,IAAI,6BAA6B,OAAO,kBAAkB,CAAC;AAC1F,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,CAAC,OAAQ,SAAQ,IAAIA,QAAM,IAAI,4DAA4D,CAAC;AAChG,SAAO;AACT;AAEA,SAAS,iBAAiB,KAAa,SAA4B;AACjE,QAAM,aAAaD,OAAK,KAAK,KAAK,aAAa;AAC/C,MAAI,CAACH,aAAW,UAAU,GAAG;AAC3B,QAAI,QAAS,SAAQ,IAAII,QAAM,KAAK,oDAAoD,CAAC;AACzF,WAAO;AAAA,EACT;AAEA,QAAM,UAAUH,eAAa,YAAY,MAAM;AAC/C,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAEhC,MAAI,QAAQ;AACZ,QAAM,WAAW,MAAM,IAAI,CAAC,SAAS;AACnC,QAAI,wBAAwB,KAAK,IAAI,GAAG;AACtC,cAAQ;AACR,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AAED,MAAI,CAAC,OAAO;AAEV,QAAI,WAAW;AACf,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAM,UAAU,SAAS,CAAC,EAAE,KAAK;AAEjC,UAAI,WAAW,CAAC,QAAQ,WAAW,GAAG,KAAK,UAAU,kBAAkB;AACrE,iBAAS,OAAO,GAAG,GAAG,wBAAwB,EAAE;AAChD,mBAAW;AACX;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,UAAU;AAEb,YAAM,WAAW,SAAS,GAAG,EAAE;AAC/B,UAAI,aAAa,IAAI;AACnB,iBAAS,OAAO,IAAI,GAAG,wBAAwB,EAAE;AAAA,MACnD,OAAO;AACL,iBAAS,KAAK,IAAI,sBAAsB;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,gBAAc,YAAY,SAAS,KAAK,IAAI,GAAG,MAAM;AACrD,UAAQ,IAAIE,QAAM,MAAM,qCAAqC,CAAC;AAC9D,SAAO;AACT;AAEA,IAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AACF;AAEO,SAAS,YAAY,EAAE,KAAK,QAAQ,IAAuB,CAAC,GAAW;AAC5E,QAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,WAAW;AAEf,aAAW,SAAS,QAAQ;AAC1B,QAAI,QAAS,SAAQ,IAAIA,QAAM,KAAK,aAAa,MAAM,IAAI,EAAE,CAAC;AAE9D,UAAM,SAAS,MAAM,MAAM,KAAK,SAAS,GAAG;AAC5C,QAAI,CAAC,QAAQ;AACX,UAAI,KAAK;AACP,cAAM,QAAQ,MAAM,IAAI,KAAK,OAAO;AACpC,YAAI,CAAC,OAAO;AACV;AAAA,QACF;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,GAAG;AAChB,YAAQ,IAAIA,QAAM,IAAI;AAAA,gBAAmB,QAAQ,kBAAkB,CAAC;AACpE,QAAI,CAAC,KAAK;AACR,cAAQ,IAAIA,QAAM,OAAO,mCAAmC,CAAC;AAAA,IAC/D;AAAA,EACF,OAAO;AACL,YAAQ,IAAIA,QAAM,MAAM,mCAAmC,CAAC;AAAA,EAC9D;AAEA,SAAO,WAAW,IAAI,IAAI;AAC5B;;;AClIA,OAAOC,aAAW;AAuClB,SAAS,eACP,eACA,YACA,YACmC;AACnC,QAAM,cAAc,cAAc,SAAS,UAAU,KAAK,MAAM,YAAY,UAAU,KAAK;AAC3F,QAAM,cAAc,cAAc,SAAS,UAAU,KAAK,MAAM,YAAY,UAAU,KAAK;AAE3F,MAAI,cAAc,YAAY;AAC5B,YAAQ,MAAMC,QAAM,IAAI,0DAA0D,CAAC;AACnF,WAAO;AAAA,EACT;AAEA,MAAI,YAAY;AACd,UAAM,UAAU,oBAAI,IAAsB;AAAA,MACxC,GAAK,cAAc,WAAW,CAAC;AAAA,MAC/B,GAAK,cAAc,CAAC;AAAA,IACtB,CAAC;AACD,WAAO,IAAI,IAAI,mBAAmB,OAAO,OAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AAAA,EAChE;AAEA,SAAO,oBAAI,IAAsB;AAAA,IAC/B,GAAI,cAAc,WAAW,CAAC;AAAA,IAC9B,GAAK,cAAc,CAAC;AAAA,EACtB,CAAC;AACH;AAEA,SAAS,uBAAuB,OAA2D;AACzF,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,CAAC;AACV;AAeO,IAAM,UAAU,OAAO;AAAA,EAC5B;AAAA,EAAY;AAAA,EAAY;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAS;AACpD,MAAqB;AACnB,SAAO,QAAQ,SACX,MAAM,WAAW;AAAA,IACf;AAAA,IAAY;AAAA,IAAY;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,EAC3C,CAAC,IACD,MAAM,cAAc;AAAA,IAClB;AAAA,IAAY;AAAA,IAAY;AAAA,IAAK;AAAA,IAAM;AAAA,IAAK;AAAA,EAC1C,CAAC;AACP;AAEA,SAAS,kBAAkB,UAAkB,QAAgB,IAAkB;AAC7E,QAAM,QAAQ,SAAS,IAAIC,QAAM,MAAMA,QAAM;AAC7C,UAAQ,IAAI,MAAM,WAAW,QAAQ,kBAAkB,GAAG,QAAQ,CAAC,CAAC,WAAW,MAAM,kBAAkB,CAAC;AAC1G;AAWO,IAAM,gBAAgB,OAAO;AAAA,EAClC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAK;AAAA,EAAM;AAAA,EAAK;AAC1C,MAA2B;AACzB,QAAM,QAAQ,YAAY,IAAI;AAC9B,QAAM,KAAK,kBAAkB;AAC7B,QAAM,YAAY,GAAG,cAAc,GAAG;AACtC,MAAI,CAAC,WAAW;AACd,YAAQ,MAAMA,QAAM,IAAI,uBAAuB,GAAG,aAAa,CAAC;AAChE,WAAO;AAAA,EACT;AACA,QAAM,kBAAkB;AAAA,IACtB,MAAM,2BAAoD,UAAU,UAAU,SAAS;AAAA,EACzF;AACA,QAAM,UAAU,eAAe,iBAAiB,YAAY,UAAU;AACtE,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,aAAa,QAAQ,gBAAgB,QAAQ;AAEnD,QAAM,SAAS,MAAM,eAAe;AAAA,IAClC;AAAA,IAAS;AAAA,IAAK,MAAM;AAAA,IAAY,QAAQ,UAAU;AAAA,IAAU;AAAA,EAC9D,CAAC;AACD,oBAAkB,GAAG,QAAQ,YAAY,IAAI,IAAI,KAAK;AACtD,SAAO;AACT;AAgBO,IAAM,aAAa,OAAO;AAAA,EAC/B;AAAA,EAAY;AAAA,EAAY;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAC3C,MAAwB;AACtB,QAAM,QAAQ,YAAY,IAAI;AAC9B,QAAM,KAAK,kBAAkB;AAC7B,QAAM,aAAa,GAAG,eAAe;AACrC,QAAM,cAAc;AAEpB,QAAM,UAA4B,MAAM,KAAK,EAAE,QAAQ,WAAW,OAAO,GAAG,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE;AAE7G,uBAAqB;AAErB,QAAM;AAAA,IACJ,WAAW,IAAI,CAAC,IAAI,OAAO,EAAE,GAAG,GAAG,EAAE;AAAA,IACrC;AAAA,IACA,OAAO,EAAE,GAAG,GAAG,MAAM;AACnB,YAAM,SAAmB,CAAC;AAC1B,YAAM,cAAc,IAAI,QAAQ,YAAY;AAC1C,YAAI;AACF,gBAAM,kBAAkB;AAAA,YACtB,MAAM,2BAAoD,GAAG,UAAU,SAAS;AAAA,UAClF;AACA,gBAAM,UAAU,eAAe,iBAAiB,YAAY,UAAU,KACjE,oBAAI,IAAsB;AAC/B,gBAAM,aAAa,QAAQ,gBAAgB,QAAQ;AAEnD,gBAAM,SAAS,MAAM,eAAe;AAAA,YAClC;AAAA,YAAS;AAAA,YAAK,MAAM;AAAA,YAAY,QAAQ,GAAG;AAAA,YAAU;AAAA,UACvD,CAAC;AACD,kBAAQ,CAAC,IAAI,EAAE,QAAQ,OAAO;AAAA,QAChC,SAAS,IAAI;AACX,iBAAO,KAAKA,QAAM,IAAI,sBAAsB,GAAG,IAAI,KAAM,GAAa,OAAO;AAAA,CAAI,CAAC;AAClF,kBAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,cAAc;AAClB,aAAW,EAAE,QAAQ,OAAO,KAAK,SAAS;AACxC,eAAW,QAAQ,QAAQ;AACzB,cAAQ,OAAO,MAAM,IAAI;AAAA,IAC3B;AACA,mBAAe;AAAA,EACjB;AAGA,QAAM,aAAa,eAAe,CAAC,GAAG,YAAY,UAAU,KAAK,oBAAI,IAAsB;AAC3F,MAAI,CAAC,WAAW,IAAI,UAAU,GAAG;AAC/B,UAAM,MAAM,SAAS;AACrB,UAAM,aAAa,0BAA0B,KAAK,UAAU;AAC5D,QAAI,WAAW,QAAQ,SAAS,GAAG;AACjC,UAAI,KAAK;AACP,gCAAwB,KAAK,UAAU;AACvC,mBAAW;AAAA,MACb,OAAO;AACL,mBAAW,OAAO,WAAW,SAAS;AACpC,kBAAQ,IAAIA,QAAM,IAAI,YAAO,GAAG,YAAY,CAAC;AAAA,QAC/C;AACA,uBAAe,WAAW,QAAQ;AAAA,MACpC;AAAA,IACF;AACA,mBAAe,WAAW,OAAO;AAAA,EACnC;AAEA,oBAAkB,WAAW,QAAQ,aAAa,YAAY,IAAI,IAAI,KAAK;AAC3E,SAAO;AACT;;;AC5MA,eAAsB,UAAU;AAAA,EAC9B;AAAA,EAAM;AAAA,EAAK;AAAA,EAAc;AAAA,EAAS;AACpC,GAAqC;AACnC,QAAMC,UAAS,MAAM,WAAqB;AAC1C,SAAO,MAAM,oBAAoB;AAAA,IAC/B;AAAA,IACA,aAAaA,QAAO,QAAQ;AAAA,IAC5B,SAASA,QAAO,QAAQ;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;;;ACdA,eAAsB,WAAW,EAAE,aAAa,GAAsC;AACpF,QAAMC,UAAS,MAAM,WAAqB;AAC1C,QAAM,WAAW,gBAAgB,yBAAyBA,QAAO,QAAQ,SAASA,QAAO,QAAQ,WAAW;AAC5G,QAAM,uBAAuB,oBAAoB,YAAY;AAC7D,QAAM,iBAAiB,sBAAsB,QAAQ;AACrD,SAAO;AACT;;;AChBA,SAAS,cAAAC,cAAY,gBAAAC,sBAAoB;AACzC,OAAOC,YAAU;AAEjB,OAAOC,aAAW;AAWlB,SAAS,aAAa,KAA+B;AACnD,QAAM,SAA2B,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE;AAC5D,QAAM,eAAe,oBAAoB;AAEzC,MAAI,CAACC,aAAW,YAAY,GAAG;AAC7B,WAAO,OAAO,KAAK,iEAAiE;AACpF,WAAO;AAAA,EACT;AAEA,QAAM,WAAWC,eAAa,cAAc,MAAM;AAElD,MAAI,CAAC,SAAS,SAAS,UAAU,GAAG;AAClC,WAAO,SAAS,KAAK,gEAAgE;AAAA,EACvF;AACA,MAAI,CAAC,SAAS,SAAS,iBAAiB,GAAG;AACzC,WAAO,SAAS,KAAK,uEAAuE;AAAA,EAC9F;AAEA,QAAM,WAAWC,OAAK,KAAK,KAAK,OAAO,gBAAgB;AACvD,MAAI,CAACF,aAAW,QAAQ,GAAG;AACzB,WAAO,OAAO,KAAK,6DAA6D;AAAA,EAClF;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,KAAaG,SAAoC;AACvE,QAAM,SAA2B,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE;AAC5D,QAAM,eAAe,oBAAoB;AAEzC,MAAIH,aAAW,YAAY,GAAG;AAC5B,UAAM,WAAWC,eAAa,cAAc,MAAM;AAClD,UAAM,UAAU,gBAAgB,KAAK,QAAQ;AAC7C,QAAI,UAAU,CAAC,EAAE,SAAS,aAAa,GAAG;AACxC,aAAO,SAAS,KAAK,0HAAqH;AAAA,IAC5I,WAAW,CAAC,WAAW,CAACE,QAAO,QAAQ,SAAS;AAC9C,aAAO,SAAS,KAAK,qEAAqE;AAAA,IAC5F;AAAA,EACF;AAEA,MAAI,CAACA,QAAO,QAAQ,WAAW,CAACA,QAAO,QAAQ,aAAa;AAC1D,WAAO,SAAS,KAAK,oEAAoE;AAAA,EAC3F;AAEA,SAAO;AACT;AAEA,SAAS,aAAa,KAA+B;AACnD,QAAM,SAA2B,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE;AAC5D,QAAM,KAAK,kBAAkB;AAC7B,QAAM,aAAa,GAAG,eAAe;AAErC,aAAW,EAAE,UAAU,KAAK,KAAK,YAAY;AAC3C,QAAI,aAAa,IAAK;AAEtB,UAAM,UAAUD,OAAK,KAAK,KAAK,UAAU,cAAc;AACvD,QAAI;AACF,YAAM,MAAM,KAAK,MAAMD,eAAa,SAAS,MAAM,CAAC;AAEpD,UAAI,IAAI,QAAS;AAEjB,UAAI,CAAC,IAAI,aAAa;AACpB,eAAO,SAAS,KAAK,GAAG,IAAI,6CAA6C;AAAA,MAC3E;AAEA,YAAM,aAAaC,OAAK,KAAK,KAAK,UAAU,WAAW;AACvD,UAAI,CAACF,aAAW,UAAU,GAAG;AAC3B,eAAO,OAAO,KAAK,GAAG,IAAI,uBAAuB;AAAA,MACnD;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAOO,SAAS,WAAW,EAAE,QAAAG,SAAQ,QAAQ,GAA6B;AACxE,QAAM,MAAM,SAAS;AACrB,UAAQ,IAAIC,QAAM,MAAM,aAAa,CAAC;AAEtC,QAAMC,UAAS;AAAA,IACb,aAAa,GAAG;AAAA,IAChB,eAAe,KAAKF,OAAM;AAAA,IAC1B,aAAa,GAAG;AAAA,EAClB;AAEA,MAAI,aAAa;AACjB,MAAI,eAAe;AAEnB,aAAW,EAAE,QAAQ,SAAS,KAAKE,SAAQ;AACzC,eAAW,SAAS,QAAQ;AAC1B,cAAQ,IAAID,QAAM,IAAI,YAAO,KAAK,EAAE,CAAC;AACrC;AAAA,IACF;AACA,eAAW,WAAW,UAAU;AAC9B,cAAQ,IAAIA,QAAM,OAAO,YAAO,OAAO,EAAE,CAAC;AAC1C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,eAAe,KAAK,iBAAiB,GAAG;AAC1C,YAAQ,IAAIA,QAAM,MAAM,qBAAqB,CAAC;AAAA,EAChD,OAAO;AACL,QAAI,SAAS;AACX,cAAQ,IAAIA,QAAM,KAAK,KAAK,UAAU,cAAc,YAAY,aAAa,CAAC;AAAA,IAChF;AAAA,EACF;AAEA,SAAO,aAAa,IAAI,IAAI;AAC9B;;;ACjIA,SAAS,aAAAE,kBAAiB;AAC1B;AAAA,EACE,cAAAC;AAAA,EAAY,aAAAC;AAAA,EAAW,eAAAC;AAAA,EAAa,gBAAAC;AAAA,EAAc,iBAAAC;AAAA,OAC7C;AACP,SAAS,iBAAAC,sBAAqB;AAC9B,OAAOC,YAAU;AACjB,SAAS,mBAAAC,wBAAuB;AAEhC,OAAOC,aAAW;AAiBlB,SAAS,YAAY,UAAmC;AACtD,QAAM,KAAKC,iBAAgB,EAAE,OAAO,QAAQ,OAAO,QAAQ,QAAQ,OAAO,CAAC;AAC3E,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,OAAG,SAAS,UAAU,CAAC,WAAW;AAChC,SAAG,MAAM;AACT,cAAQ,OAAO,KAAK,CAAC;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AACH;AAEA,SAAS,mBAA2B;AAClC,QAAMC,WAAUC,eAAc,YAAY,GAAG;AAC7C,QAAM,UAAUD,SAAQ,QAAQ,wCAAwC;AACxE,QAAM,MAAM,KAAK,MAAME,eAAa,SAAS,MAAM,CAAC;AACpD,SAAO,IAAI,QAAQ,QAAQ,UAAU,EAAE;AACzC;AAEA,SAAS,cAAc,cAAsB,WAAuD;AAClG,MAAI,SAAS;AAGb,MAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,aAAS,OAAO,MAAM,GAAG,EAAE;AAAA,EAC7B;AAGA,MAAI,WAAW,aAAa;AAC1B,aAAS;AAAA,EACX;AAGA,MAAI,OAAO,WAAW,SAAS,GAAG;AAChC,aAAS,IAAI,MAAM;AAAA,EACrB;AAGA,WAAS,OAAO,WAAW,mBAAmB,UAAU,WAAW;AAEnE,SAAO;AACT;AAEA,SAAS,iBAAiB,cAAsB,IAAqB;AAEnE,MAAI,iBAAiB,yBAAyB,OAAO,OAAQ,QAAO;AAGpE,MAAI,aAAa,SAAS,YAAY,KAAK,OAAO,OAAQ,QAAO;AACjE,MAAI,aAAa,SAAS,YAAY,KAAK,OAAO,OAAQ,QAAO;AAEjE,SAAO;AACT;AAEA,SAAS,qBAAqB,YAA4B;AAExD,SAAO,WAAW,QAAQ,0BAA0B,WAAW;AACjE;AAEA,SAAS,eAAe,QAOG;AACzB,QAAM;AAAA,IACJ;AAAA,IAAa;AAAA,IAAW,aAAAC;AAAA,IAAa;AAAA,IAAI;AAAA,IAAa;AAAA,EACxD,IAAI;AACJ,QAAM,iBAAiBA,aAAY,WAAW,aAAa,CAAC,GAAG,MAAc,EAAE,YAAY,CAAC;AAC5F,QAAM,YAAY,OAAO,SAAS,4BAA4B;AAC9D,SAAO;AAAA,IACL,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,aAAAA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,eAAe,YAAoB,MAAuB;AACjE,MAAIC,aAAW,UAAU,GAAG;AAC1B,UAAM,UAAUC,aAAY,UAAU;AACtC,QAAI,QAAQ,SAAS,GAAG;AACtB,cAAQ,MAAMC,QAAM,IAAI,cAAc,IAAI,mCAAmC,CAAC;AAC9E,aAAO;AAAA,IACT;AAAA,EACF;AACA,EAAAC,WAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AACzC,SAAO;AACT;AAEA,SAAS,cACP,cACA,OACA,WACA,IACA,WACA,SACQ;AACR,QAAM,QAAQ,sBAAsB,cAAc,KAAK;AACvD,MAAI,QAAQ;AACZ,aAAW,QAAQ,OAAO;AACxB,QAAI,iBAAiB,KAAK,cAAc,EAAE,EAAG;AAC7C,UAAM,UAAU,aAAa,KAAK,SAAS,SAAS;AACpD,QAAI,aAAa,cAAc,KAAK,cAAc,SAAS;AAC3D,QAAI,CAAC,WAAY;AACjB,QAAI,UAAU,OAAQ,cAAa,qBAAqB,UAAU;AAElE,UAAM,WAAWC,OAAK,QAAQ,WAAW,UAAU;AACnD,IAAAD,WAAUC,OAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACrD,IAAAC,gBAAc,UAAU,OAAO;AAC/B;AACA,QAAI,QAAS,SAAQ,IAAIH,QAAM,KAAK,KAAK,UAAU,SAAS,aAAa,YAAY,UAAU,WAAW,IAAI,UAAU,EAAE,EAAE,CAAC;AAAA,EAC/H;AACA,SAAO;AACT;AAEA,SAAS,YAAY,YAAoB,SAAyB;AAChE,MAAI,QAAS,SAAQ,IAAIA,QAAM,KAAK,gCAAgC,CAAC;AACrE,QAAM,SAASI,WAAU,OAAO,CAAC,QAAQ,MAAM,MAAM,GAAG;AAAA,IACtD,KAAK;AAAA,IACL,OAAO,UAAU,YAAY;AAAA,EAC/B,CAAC;AACD,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,IAAIJ,QAAM,MAAM,4BAA4B,CAAC;AAAA,EACvD,OAAO;AACL,YAAQ,KAAKA,QAAM,OAAO,2BAA2B,CAAC;AAAA,EACxD;AACF;AAEA,SAAS,oBAAoB,YAAoB,IAAqB;AACpE,UAAQ,IAAIA,QAAM,KAAK,WAAW,EAAE,aAAa,CAAC;AAClD,QAAM,SAASI,WAAU,IAAI,CAAC,SAAS,GAAG;AAAA,IACxC,KAAK;AAAA,IACL,OAAO;AAAA,EACT,CAAC;AACD,MAAI,OAAO,WAAW,GAAG;AACvB,YAAQ,KAAKJ,QAAM,OAAO,GAAG,EAAE,iBAAiB,CAAC;AACjD,WAAO;AAAA,EACT;AACA,UAAQ,IAAIA,QAAM,MAAM,wBAAwB,CAAC;AACjD,SAAO;AACT;AAEA,eAAsB,SAAS,QAAyC;AACtE,QAAM;AAAA,IACJ;AAAA,IAAa;AAAA,IAAI;AAAA,IAAO;AAAA,IAAS;AAAA,IAAa;AAAA,IAAU;AAAA,EAC1D,IAAI;AAEJ,MAAI,OAAO,OAAO;AAClB,MAAI,CAAC,MAAM;AACT,WAAO,MAAM,YAAYA,QAAM,KAAK,gBAAgB,CAAC;AACrD,QAAI,CAAC,MAAM;AACT,cAAQ,MAAMA,QAAM,IAAI,0BAA0B,CAAC;AACnD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,cAAcE,OAAK,SAAS,IAAI;AACtC,QAAML,eAAc,OAAO,eAAe;AAC1C,QAAM,YAAY,OAAO,aAAa,MAAM,QAAQ,MAAM,EAAE;AAE5D,QAAM,YAAY,eAAe;AAAA,IAC/B;AAAA,IAAa;AAAA,IAAW,aAAAA;AAAA,IAAa;AAAA,IAAI;AAAA,IAAa;AAAA,EACxD,CAAC;AAED,MAAI,SAAS;AACX,YAAQ,IAAIG,QAAM,KAAK,qBAAqB,CAAC;AAC7C,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AACpD,cAAQ,IAAIA,QAAM,KAAK,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;AAAA,IAC9C;AAAA,EACF;AAEA,QAAM,aAAaE,OAAK,QAAQ,QAAQ,IAAI,GAAG,IAAI;AACnD,MAAI,CAAC,eAAe,YAAY,IAAI,EAAG,QAAO;AAE9C,QAAM,YAAY,cAAc,UAAU,QAAQ,YAAY,IAAI,WAAW,OAAO;AACpF,QAAM,SAASA,OAAK,QAAQ,YAAY,YAAYL,YAAW;AAC/D,QAAM,WAAW,cAAc,UAAU,WAAW,QAAQ,IAAI,WAAW,OAAO;AAClF,UAAQ,IAAIG,QAAM,MAAM,cAAc,YAAY,QAAQ,eAAe,IAAI,GAAG,CAAC;AAEjF,MAAI,CAAC,QAAS,aAAY,YAAY,OAAO;AAC7C,MAAI,CAAC,eAAe,CAAC,oBAAoB,YAAY,EAAE,EAAG,QAAO;AAEjE,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAIA,QAAM,KAAK,WAAW,IAAI,wBAAwB,CAAC;AAC/D,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAIA,QAAM,KAAK,aAAa,CAAC;AACrC,UAAQ,IAAIA,QAAM,KAAK,QAAQ,IAAI,EAAE,CAAC;AACtC,MAAI,YAAa,SAAQ,IAAIA,QAAM,KAAK,KAAK,EAAE,UAAU,CAAC;AAC1D,UAAQ,IAAIA,QAAM,KAAK,KAAK,EAAE,WAAW,CAAC;AAE1C,SAAO;AACT;;;ACvNO,IAAM,SAAS,CAAC,EAAE,OAAO,IAAkB,CAAC,MAAM;AACvD,QAAM,KAAK,kBAAkB;AAC7B,MAAI,UAAU,GAAG,cAAc,MAAM,GAAG;AACtC,WAAO,SAAS,YAAY,MAAM,KAAK;AAAA,MACrC,GAAG,eAAe,QAAQ,UAAU,CAAC,cAAc,CAAC;AAAA,MACpD,GAAG,eAAe,QAAQ,UAAU,CAAC,GAAG,CAAC;AAAA,IAC3C,CAAC;AAAA,EACH;AACA,QAAMK,QAAO,UAAU;AACvB,SAAO,SAAS,WAAW;AAAA,IACzB,CAAC,UAAU,CAAC,cAAc,CAAC;AAAA,IAC3B,CAAC,UAAU,CAACA,KAAI,CAAC;AAAA,EACnB,CAAC;AACH;;;ACbO,IAAM,OAAO,CAAC,EAAE,OAAO,IAAgB,CAAC,MAAM;AACnD,QAAM,KAAK,kBAAkB;AAC7B,MAAI,UAAU,GAAG,cAAc,MAAM,GAAG;AACtC,WAAO,SAAS,SAAS,MAAM,KAAK,CAAC,GAAG,eAAe,QAAQ,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EAClF;AACA,QAAMC,QAAO,UAAU;AACvB,SAAO,SAAS,QAAQ,CAAC,CAAC,UAAU,CAACA,KAAI,CAAC,CAAC,CAAC;AAC9C;;;A9DLO,IAAM,eAA8B;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,OAAO,OAAO;AAAA,MACzB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS,OAAO,SAAS;AACvB,UAAM,UAAU,CAAC,CAAC,KAAK;AACvB,UAAM,MAAM,CAAC,CAAC,KAAK;AACnB,UAAM,OAAO,KAAK;AAClB,QAAI,SAAS;AAEb,QAAI,QAAS,SAAQ,IAAI,OAAO;AAEhC,YAAQ,IAAIC,QAAM,KAAK,yBAAe,CAAC;AACvC,cAAU,MAAM,WAAW,IAAI,QAAQ;AAEvC,YAAQ,IAAIA,QAAM,KAAK,yBAAe,CAAC;AACvC,cAAU,MAAM,QAAQ;AAAA,MACtB;AAAA,MAAK;AAAA,MAAM;AAAA,IACb,CAAC;AAED,YAAQ,IAAIA,QAAM,KAAK,2BAAiB,CAAC;AACzC,cAAU,oBAAoB,GAAG;AAEjC,YAAQ,IAAIA,QAAM,KAAK,0BAAgB,CAAC;AACxC,cAAU,MAAM,SAAS,EAAE,KAAK,QAAQ,CAAC;AAEzC,YAAQ,IAAIA,QAAM,KAAK,6BAAmB,CAAC;AAC3C,UAAMC,UAAS,MAAM,WAAqB;AAC1C,cAAU,WAAW,EAAE,QAAAA,SAAQ,QAAQ,CAAC;AAExC,QAAI,SAAS,GAAG;AACd,cAAQ,IAAID,QAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;AAAA,IACnD,OAAO;AACL,cAAQ,IAAIA,QAAM,MAAM,mBAAmB,CAAC;AAAA,IAC9C;AACA,YAAQ,WAAW,SAAS,IAAI,IAAI;AAAA,EACtC;AACF;;;A+DhDO,IAAME,gBAA8B;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,cAAc;AAC5C,YAAQ,WAAW,YAAY;AAAA,EACjC;AACF;;;ACPO,IAAM,eAA8B;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,cAAc;AAC5C,YAAQ,WAAW,YAAY;AAAA,EACjC;AACF;;;ACPO,IAAM,kBAAiC;AAAA,EAC5C,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,iBAAiB;AAC/C,YAAQ,WAAW,eAAe;AAAA,EACpC;AACF;;;ACJO,IAAM,cAA6B;AAAA,EACxC,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,OAAO,SAAS;AAAA,MACf,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC,EACA,OAAO,SAAS;AAAA,MACf,SAAS,CAAC,eAAe,YAAY;AAAA,MACrC,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,aAAa;AAC3C,UAAM,iBAAiB,eAAe;AACtC,UAAM,cAAc,YAAY,EAAE,OAAO,KAAK,MAA6B,CAAC;AAC5E,UAAM,eAAe,aAAa;AAClC,UAAM,iBAAiB,MAAM,eAAe,EAAE,OAAO,KAAK,MAAuB,CAAC;AAClF,YAAQ,WAAW,kBAAkB,eAAe,gBAAgB;AAAA,EACtE;AACF;;;AC7BO,IAAM,eAA8B;AAAA,EACzC,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,OAAO,SAAS;AAAA,MACf,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,cAAc;AAC5C,YAAQ,WAAW,YAAY,EAAE,OAAO,KAAK,MAA6B,CAAC;AAAA,EAC7E;AACF;;;ACfO,IAAM,kBAAiC;AAAA,EAC5C,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,OAAO,SAAS;AAAA,MACf,SAAS,CAAC,eAAe,YAAY;AAAA,MACrC,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,iBAAiB;AAC/C,YAAQ,WAAW,MAAM,eAAe,EAAE,OAAO,KAAK,MAAuB,CAAC;AAAA,EAChF;AACF;;;ACjBO,IAAM,gBAA+B;AAAA,EAC1C,SAAS,WAAS;AAAA,EAClB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,eAAe;AAC7C,YAAQ,WAAW,aAAa;AAAA,EAClC;AACF;;;ACFO,IAAM,gBAA+B;AAAA,EAC1C,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,QAAQC,aAAY,EACpB,QAAQ,YAAY,EACpB,QAAQ,eAAe,EACvB,QAAQ,WAAW,EACnB,QAAQ,YAAY,EACpB,QAAQ,eAAe,EACvB,QAAQ,aAAa,EACrB,cAAc,GAAG,oCAAoC,EACrD,eAAe;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EAA+B;AAChD;;;ACtBO,IAAM,mBAAkC;AAAA,EAC7C,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,wBAAwB;AACtD,YAAQ,WAAW,UAAU;AAAA,EAC/B;AACF;;;ACTO,IAAM,yBAAyB,CAAC,UAAyB;AAC9D,SAAO,MAAM,WAAW,WAAW,EAAE,UAAU,8BAA8B,MAAM,SAAS,CAAC;AAC/F;;;ACCO,IAAM,cAA6B;AAAA,EACxC,SAAS,CAAC,UAAU;AAClB,WAAO,uBAAuB,KAAK;AAAA,EACrC;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,MAAM;AACpC,YAAQ,WAAW,KAAK;AAAA,EAC1B;AACF;;;ACVO,IAAM,iBAAgC;AAAA,EAC3C,SAAS,CAAC,UAAU;AAClB,WAAO,uBAAuB,KAAK;AAAA,EACrC;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,wBAAyB,KAAK,WAAkC,KAAK,EAAE;AACrG,YAAQ,WAAW,QAAQ;AAAA,MACzB,aAAa,CAAC,CAAC,KAAK;AAAA,MAAa,MAAM,KAAK;AAAA,MAAgB,KAAK,KAAK;AAAA,IACxE,CAAC;AAAA,EACH;AACF;;;ACbO,IAAM,mBAAkC;AAAA,EAC7C,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,WAAW;AACzC,YAAQ,WAAW,UAAU;AAAA,EAC/B;AACF;;;ACPO,IAAM,iBAAgC;AAAA,EAC3C,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,OAAO,OAAO;AAAA,MACzB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,SAAS;AACvC,YAAQ,WAAW,KAAK,MAAM,WAAW,IAAI,QAAQ;AAAA,EACvD;AACF;;;ACbO,IAAM,iBAAgC;AAAA,EAC3C,SAAS,CAAC,UAAU;AAClB,WAAO,uBAAuB,KAAK;AAAA,EACrC;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,YAAa,KAAK,WAAkC,KAAK,EAAE;AACzF,YAAQ,WAAW,MAAM,QAAQ;AAAA,EACnC;AACF;;;ACXO,IAAM,sBAAqC;AAAA,EAChD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,eAAe;AAC7C,YAAQ,WAAW,aAAa;AAAA,EAClC;AACF;;;ACPO,IAAMC,gBAA8B;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,cAAc;AAC5C,YAAQ,WAAW,YAAY,EAAE,SAAS,KAAK,QAAmB,CAAC;AAAA,EACrE;AACF;;;ACPO,IAAM,cAA6B;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,aAAa;AAC3C,YAAQ,WAAW,WAAW,EAAE,SAAS,KAAK,QAAmB,CAAC;AAAA,EACpE;AACF;;;ACNO,IAAM,gBAA+B;AAAA,EAC1C,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,QAAQ,WAAW,EACnB,QAAQC,aAAY,EACpB,cAAc,GAAG,qCAAqC,EACtD,eAAe;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EAA+B;AAChD;;;ACVA,IAAM,iBAAgC;AAAA,EACpC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,WAAW,UAAU;AAAA,MAChC,SAAS,CAAC,QAAQ,MAAM;AAAA,MACxB,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS,CAAC,SAAS;AACjB,YAAQ,WAAW,QAAQ;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;AAEA,IAAMC,gBAA8B;AAAA,EAClC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,SAAS;AACjB,YAAQ,WAAW,aAAa,EAAE,SAAS,CAAC,CAAC,KAAK,QAAQ,CAAC;AAAA,EAC7D;AACF;AAEA,IAAM,cAA6B;AAAA,EACjC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,OAAO,OAAO;AAAA,MACzB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS,CAAC,SAAS;AACjB,YAAQ,WAAW,YAAY;AAAA,MAC7B,KAAK,CAAC,CAAC,KAAK;AAAA,MACZ,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,iBAAgC;AAAA,EAC3C,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,QAAQA,aAAY,EACpB,QAAQ,cAAc,EACtB,QAAQ,WAAW,EACnB,cAAc,GAAG,qCAAqC,EACtD,eAAe;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EAA+B;AAChD;;;AC1DO,IAAM,aAA4B;AAAA,EACvC,SAAS,CAAC,UAAU;AAClB,WAAO,uBAAuB,KAAK,EAChC,OAAO,YAAY;AAAA,MAClB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC,EACA,OAAO,aAAa;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS,CAAC,IAAI;AAAA,EACd,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,YAAY;AAC1C,YAAQ,WAAW,MAAM,UAAU;AAAA,MACjC,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,cAAc,KAAK;AAAA,MACnB,SAAS,CAAC,KAAK;AAAA,MACf,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;;;AC5BO,IAAMC,eAA6B;AAAA,EACxC,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,OAAO,YAAY;AAAA,MAClB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,aAAa;AAC3C,YAAQ,WAAW,MAAM,WAAW;AAAA,MAClC,cAAc,KAAK;AAAA,MACnB,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;;;AChBO,IAAMC,eAA6B;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,OAAO,SAAS;AACvB,UAAMC,UAAS,MAAM,WAAqB;AAC1C,YAAQ,WAAW,WAAW,EAAE,QAAAA,SAAQ,SAAS,CAAC,CAAC,KAAK,QAAQ,CAAC;AAAA,EACnE;AACF;;;ACPO,IAAM,gBAA+B;AAAA,EAC1C,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,QAAQ,UAAU,EAClB,QAAQC,YAAW,EACnB,QAAQC,YAAW,EACnB,cAAc,GAAG,oCAAoC,EACrD,eAAe;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EAA+B;AAChD;;;ACdO,IAAMC,eAA6B;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,WAAW,YAAY;AAAA,MACtB,SAAS,CAAC,KAAK;AAAA,MACf,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,WAAW,QAAQ;AAAA,MAClB,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,SAAS;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,WAAW;AAAA,MACjB,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,eAAe;AAAA,MACrB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,cAAc;AAAA,MACpB,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,MAAM;AAAA,MACZ,SAAS,CAAC,QAAQ,MAAM;AAAA,MACxB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,gBAAgB;AAAA,MACtB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC,EACA,OAAO,YAAY;AAAA,MAClB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EACA,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,QAAS,SAAQ,IAAI,WAAW;AACzC,YAAQ,WAAW,MAAM,SAAS;AAAA,MAChC,aAAa,KAAK;AAAA,MAClB,WAAW,KAAK,YAAY;AAAA,MAC5B,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,IAAI,KAAK;AAAA,MACT,OAAO,KAAK;AAAA,MACZ,SAAS,CAAC,CAAC,KAAK;AAAA,MAChB,aAAa,CAAC,CAAC,KAAK;AAAA,MACpB,UAAU,KAAK;AAAA,MACf,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;;;AChEO,IAAMC,eAA6B;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,OAAO,OAAO;AAAA,MACzB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,WAAW;AACzC,YAAQ,WAAW,oBAAoB,CAAC,CAAC,KAAK,GAAG;AAAA,EACnD;AACF;;;ACbO,IAAM,cAA6B;AAAA,EACxC,SAAS,CAAC,UAAU;AAClB,WAAO,MACJ,QAAQC,YAAW,EACnB,QAAQC,YAAW,EACnB,cAAc,GAAG,kCAAkC,EACnD,eAAe;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,MAAM;AAAA,EAA+B;AAChD;;;ACZO,IAAM,gBAA+B;AAAA,EAC1C,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,WAAW,UAAU,EAAE,UAAU,2CAA2C,CAAC;AAAA,EAC5F;AAAA,EACA,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,eAAgB,KAAK,UAAiC,KAAK,EAAE;AAC3F,YAAQ,WAAW,OAAO,EAAE,QAAQ,KAAK,OAAiB,CAAC;AAAA,EAC7D;AACF;;;ACVO,IAAM,cAA6B;AAAA,EACxC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,WAAW,UAAU,EAAE,UAAU,2CAA2C,CAAC;AAAA,EAC5F;AAAA,EACA,SAAS,CAAC,SAAS;AACjB,QAAI,KAAK,QAAS,SAAQ,IAAI,YAAa,KAAK,UAAiC,KAAK,EAAE;AACxF,YAAQ,WAAW,KAAK,EAAE,QAAQ,KAAK,OAAiB,CAAC;AAAA,EAC3D;AACF;;;ACIO,IAAM,mBAAmB,CAAC,SAAe;AAC9C,SAAO,KACJ,QAAQ,YAAY,EACpB,QAAQ,aAAa,EACrB,QAAQ,cAAc,EACtB,QAAQ,WAAW,EACnB,QAAQ,cAAc,EACtB,QAAQ,gBAAgB,EACxB,QAAQ,cAAc,EACtB,QAAQ,gBAAgB,EACxB,QAAQ,mBAAmB,EAC3B,QAAQ,aAAa,EACrB,QAAQ,cAAc,EACtB,QAAQ,aAAa,EACrB,QAAQ,WAAW,EACnB,QAAQ,aAAa,EACrB,QAAQ,WAAW;AACxB;","names":["chalk","require","chalk","ex","ex","error","chalk","existsSync","readFileSync","existsSync","readFileSync","chalk","filename","chalk","readFileSync","createRequire","PATH","chalk","require","createRequire","packageRoot","PATH","readFileSync","chalk","readFileSync","createRequire","PATH","require","packageRoot","templatesDir","chalk","readFileSync","readFileSync","readdirSync","readFileSync","createRequire","PATH","require","packageRoot","chalk","chalk","spawnSync","existsSync","chalk","chalk","config","existsSync","spawnSync","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","filename","PATH","existsSync","readFileSync","readdirSync","statSync","chalk","existsSync","readdirSync","PATH","chalk","existsSync","chalk","PATH","readdirSync","existsSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","mkdirSync","existsSync","mkdirSync","writeFileSync","PATH","createInterface","chalk","askConfirmation","createInterface","PATH","mkdirSync","existsSync","chalk","writeFileSync","existsSync","mkdirSync","readdirSync","readFileSync","rmSync","statSync","writeFileSync","PATH","chalk","PATH","mkdirSync","filename","existsSync","readFileSync","writeFileSync","readdirSync","statSync","rmSync","chalk","path","chalk","chalk","path","readFileSync","writeFileSync","PATH","chalk","PATH","readFileSync","writeFileSync","writeRootPackageJson","chalk","expected","unlinkSync","chalk","unlinkSync","chalk","chalk","chalk","chalk","ParseGitConfig","chalk","chalk","name","license","existsSync","readFileSync","unlinkSync","writeFileSync","PATH","createInterface","chalk","PATH","readFileSync","chalk","spawnSync","existsSync","readFileSync","writeFileSync","PATH","chalk","config","PATH","chalk","readFileSync","writeFileSync","spawnSync","existsSync","fs","path","chalk","glob","path","glob","fs","chalk","fs","path","chalk","glob","chalk","glob","path","fs","publint","existsSync","readFileSync","writeFileSync","PATH","chalk","semver","readFileSync","PATH","path","writeFileSync","existsSync","chalk","glob","semver","checks","existsSync","rmSync","writeFileSync","PATH","chalk","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","spawnSync","existsSync","mkdirSync","readFileSync","rmSync","writeFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","chalk","globSync","existsSync","readFileSync","writeFileSync","PATH","chalk","writeFileSync","PATH","chalk","existsSync","readFileSync","rmSync","mkdirSync","spawnSync","spawnSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","spawnSync","existsSync","PATH","readFileSync","statSync","readdirSync","subPath","chalk","PATH","existsSync","chalk","rmSync","writeFileSync","existsSync","readFileSync","writeFileSync","PATH","chalk","chalk","chalk","chalk","config","config","existsSync","readFileSync","PATH","chalk","existsSync","readFileSync","PATH","config","chalk","checks","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","writeFileSync","createRequire","PATH","createInterface","chalk","createInterface","require","createRequire","readFileSync","packageName","existsSync","readdirSync","chalk","mkdirSync","PATH","writeFileSync","spawnSync","path","path","chalk","config","checkCommand","checkCommand","cleanCommand","cleanCommand","cleanCommand","initCommand","lintCommand","config","initCommand","lintCommand","initCommand","lintCommand","initCommand","lintCommand"]}
|